diff --git a/Plugins/SenseGlove/.clang-format b/Plugins/SenseGlove/.clang-format new file mode 100644 index 0000000..071b93f --- /dev/null +++ b/Plugins/SenseGlove/.clang-format @@ -0,0 +1,64 @@ +--- +Language: Cpp +BasedOnStyle: LLVM +AccessModifierOffset: -4 +AlignOperands: false +AlignTrailingComments: false +AlwaysBreakTemplateDeclarations: Yes +BraceWrapping: + AfterCaseLabel: true + AfterClass: true + AfterControlStatement: true + AfterEnum: true + AfterFunction: true + AfterNamespace: true + AfterStruct: true + AfterUnion: true + AfterExternBlock: false + BeforeCatch: true + BeforeElse: true + BeforeLambdaBody: true + BeforeWhile: true + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakBeforeBraces: Custom +BreakConstructorInitializers: BeforeColon +ColumnLimit: 120 +IncludeCategories: + - Regex: '^<.*' + Priority: 1 + - Regex: '^".*' + Priority: 2 + - Regex: '.*' + Priority: 3 +IncludeIsMainRegex: '([-_](test|unittest))?$' +IndentCaseBlocks: true +IndentWidth: 4 +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 2 +NamespaceIndentation: All +ObjCSpaceAfterProperty: false +ObjCSpaceBeforeProtocolList: true +PointerAlignment: Left +ReflowComments: false +SpaceAfterCStyleCast: true +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: false +SpaceBeforeAssignmentOperators: true +SpaceBeforeCpp11BracedList: false +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeParens: ControlStatements +SpaceBeforeRangeBasedForLoopColon: false +SpaceInEmptyParentheses: false +SpacesBeforeTrailingComments: 0 +SpacesInAngles: false +SpacesInCStyleCastParentheses: false +SpacesInContainerLiterals: false +SpacesInParentheses: false +SpacesInSquareBrackets: false +TabWidth: 4 +UseTab: Never +... diff --git a/Plugins/SenseGlove/.editorconfig b/Plugins/SenseGlove/.editorconfig new file mode 100644 index 0000000..e18ea6e --- /dev/null +++ b/Plugins/SenseGlove/.editorconfig @@ -0,0 +1,59 @@ +################################################################################ +# Generic Settings +################################################################################ + +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_style = space +indent_size = 4 +insert_final_newline = false +max_line_length = 120 +tab_width = 4 +trim_trailing_whitespace = true +ij_continuation_indent_size = 8 +ij_formatter_off_tag = @formatter:off +ij_formatter_on_tag = @formatter:on +ij_formatter_tags_enabled = false +ij_smart_tabs = false +ij_visual_guides = none +ij_wrap_on_typing = false + +################################################################################ +# Markdown +################################################################################ + +[*.{.markdown,md,mdx}] +trim_trailing_whitespace = false +ij_markdown_force_one_space_after_blockquote_symbol = true +ij_markdown_force_one_space_after_header_symbol = true +ij_markdown_force_one_space_after_list_bullet = true +ij_markdown_force_one_space_between_words = true +ij_markdown_insert_quote_arrows_on_wrap = true +ij_markdown_keep_indents_on_empty_lines = false +ij_markdown_keep_line_breaks_inside_text_blocks = true +ij_markdown_max_lines_around_block_elements = 1 +ij_markdown_max_lines_around_header = 1 +ij_markdown_max_lines_between_paragraphs = 1 +ij_markdown_min_lines_around_block_elements = 1 +ij_markdown_min_lines_around_header = 1 +ij_markdown_min_lines_between_paragraphs = 1 +ij_markdown_wrap_text_if_long = true +ij_markdown_wrap_text_inside_blockquotes = true + +################################################################################ +# MSBuild +################################################################################ + +[*.{csproj,proj,projitems,shproj,fsproj,target,props}] +indent_style = space +indent_size = 2 + +################################################################################ +# Unreal Engine Project Files +################################################################################ + +[*.uproject] +indent_style = tab diff --git a/Plugins/SenseGlove/.gitattributes b/Plugins/SenseGlove/.gitattributes new file mode 100644 index 0000000..d2a0afb --- /dev/null +++ b/Plugins/SenseGlove/.gitattributes @@ -0,0 +1,50 @@ +# Keep CRLF out of the repository +* text=auto + +# In case the git binary/text auto-detection algorithm fails, in order to avoid +# line-ending normalization, treat these files as binary no matter what +*.{uasset,umap,3ds,fbx,flac,gif,jif,jiff,jpe,jpeg,jpg,m4a,mp3,mp4,ogg,png,psd,ttf,wav,webp,xcf} binary + +# LFS: UE4 file types +*.uasset filter=lfs diff=lfs merge=lfs -text +*.umap filter=lfs diff=lfs merge=lfs -text + +# LFS: raw content types +*.3ds filter=lfs diff=lfs merge=lfs -text +*.fbx filter=lfs diff=lfs merge=lfs -text +*.flac filter=lfs diff=lfs merge=lfs -text +*.gif filter=lfs diff=lfs merge=lfs -text +*.jif filter=lfs diff=lfs merge=lfs -text +*.jiff filter=lfs diff=lfs merge=lfs -text +*.jpe filter=lfs diff=lfs merge=lfs -text +*.jpeg filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.m4a filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.mp4 filter=lfs diff=lfs merge=lfs -text +*.ogg filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.webp filter=lfs diff=lfs merge=lfs -text +*.xcf filter=lfs diff=lfs merge=lfs -text + +# LFS: everything under Content/ +Content/**/* filter=lfs diff=lfs merge=lfs -text + +# LFS: everything under Resources/ +Resources/**/* filter=lfs diff=lfs merge=lfs -text + +# LFS: everything under Source/ThirdParty/ +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 \ No newline at end of file diff --git a/Plugins/SenseGlove/.gitignore b/Plugins/SenseGlove/.gitignore new file mode 100644 index 0000000..e7ba676 --- /dev/null +++ b/Plugins/SenseGlove/.gitignore @@ -0,0 +1,135 @@ +# Explcitly ignore annoying Windows files, regardless of where they are +[Dd]esktop.ini +Thumbs.db + +# Explcitly ignore annoying macOS files, regardless of where they are +.DS_Store + +# Makefile; only in the project root +/Makefile + +# CMake; only in the project root +/CMakeLists.txt + +# QMake / Qt Creator +*.pro +*Config.pri +*Defines.pri +*Header.pri +*Includes.pri +*Source.pri +.qmake.stash +*.autosave +*.pro.user +*.pro.user.* +CMakeLists.txt.user +CMakeLists.txt.user.* + +# Visual Studio +.vs/ +*.sln +*.suo +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Visual Studio Code +.vscode/ +*.code-workspace + +# Code::Blocks +*.workspace + +# CodeLite +*CodeLitePreProcessor.txt + +# KDevelop +.kdev4/ +*.kdev4 + +# CLion +*CodeCompletionFolders.txt + +# IntelliJ IDE +.idea/ + +# Xcode +*.xcodeproj +*.xcworkspace + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* + +# Misc +.ignore + +# Do not ignore anything inside the ThirdParty directory at all +!Source/ThirdParty/**/* + +# The Handbook +Documentation/ +Handbook/book/ + +# sgum-packager +# Do not ignore the sgum-packager Windows binary +!Packager/sgum-packager.exe \ No newline at end of file diff --git a/Plugins/SenseGlove/Config/FilterPlugin.ini b/Plugins/SenseGlove/Config/FilterPlugin.ini new file mode 100644 index 0000000..1384d4b --- /dev/null +++ b/Plugins/SenseGlove/Config/FilterPlugin.ini @@ -0,0 +1,4 @@ +[FilterPlugin] +/Config/FilterPlugin.ini +/Documentation/the-senseglove-unreal-engine-handbook.pdf +/Documentation/the-senseglove-unreal-engine-handbook.zip diff --git a/Plugins/SenseGlove/Content/Materials/M_SenseGlove_VirtualHand.uasset b/Plugins/SenseGlove/Content/Materials/M_SenseGlove_VirtualHand.uasset new file mode 100644 index 0000000..960a80c --- /dev/null +++ b/Plugins/SenseGlove/Content/Materials/M_SenseGlove_VirtualHand.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc5ec37eff81f3298922c7cc4807144181289129485e3e7bbd0cd10b1186c52 +size 9219 diff --git a/Plugins/SenseGlove/Handbook/BSDmakefile b/Plugins/SenseGlove/Handbook/BSDmakefile new file mode 100644 index 0000000..06f67bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/BSDmakefile @@ -0,0 +1,34 @@ +# +# author: Mamadou Babaei +# +# (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} \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/GNUmakefile b/Plugins/SenseGlove/Handbook/GNUmakefile new file mode 100644 index 0000000..c27cbdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/GNUmakefile @@ -0,0 +1,672 @@ +# +# author: Mamadou Babaei +# +# (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 := $(realpath $(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 := $(shell which brave-bin 2>/dev/null) +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_VERSION)),) +SG_HANDBOOK_REVISION := next +endif # ($(strip $(SG_GIT_VERSION)),) +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 "" > $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "Welcome to $(SG_PROJECT_NAME)" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "SenseGlove" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "

Welcome to the SenseGlove Unreal Engine Handbook

" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "

Please choose a revision to continue!

" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
* Please note that the next revision is the documentation for the unstable next release of the plugin and subject to change!
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @while read dir; \ + do \ + echo ""; \ + done < $(SG_HANDBOOK_DEPLOY_REVISION_LIST_FILE) >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "
" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(SG_HANDBOOK_DEPLOY_GENERATED_HOME_INDEX_FILE) + @echo "" >> $(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) diff --git a/Plugins/SenseGlove/Handbook/README.md b/Plugins/SenseGlove/Handbook/README.md new file mode 100644 index 0000000..ac2eb38 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/README.md @@ -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. make-4.4.1-without-guile-w32-bin.zip. +- make-\*-without-guile-w32-bin.zip/* contents should be extracted and copied to your Git\\mingw64\\, e.g. C:\\Program Files\\Git\\mingw64\\, 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 make command. Simply entering the make or make help 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 /Documentation 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 http://localhost:8000/. 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 /Documentation 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 clean target and then the build target; and only then attempts to upload the content. Thus, any rule that applies to the build 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 the Unreal Engine Marketplace. \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/bin/sg-preprocessor.sh b/Plugins/SenseGlove/Handbook/bin/sg-preprocessor.sh new file mode 100644 index 0000000..f9ccdb3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/bin/sg-preprocessor.sh @@ -0,0 +1,104 @@ +#!/usr/bin/env sh + +# +# author: Mamadou Babaei +# +# (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 '.' diff --git a/Plugins/SenseGlove/Handbook/book.toml b/Plugins/SenseGlove/Handbook/book.toml new file mode 100644 index 0000000..253c635 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/book.toml @@ -0,0 +1,109 @@ +# +# author: Mamadou Babaei +# +# (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 = "

" +footer-template = "

/

" +prefer-css-page-size = true + +[output.pdf-outline] +optional = true +like-wkhtmltopdf = true \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/dist/.gitignore b/Plugins/SenseGlove/Handbook/dist/.gitignore new file mode 100644 index 0000000..86c4551 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/.gitignore @@ -0,0 +1,6 @@ +# Reset all rules from parent .gitignore files! +!*/ +!**/* + +# Recursively ignore all __pycache__ folders! +__pycache__/ \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/IDLE (Python GUI).exe b/Plugins/SenseGlove/Handbook/dist/winpython/IDLE (Python GUI).exe new file mode 100644 index 0000000..e397f5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/IDLE (Python GUI).exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54bd3d9655be9bc95aad16a9212261ff65e2eb665e8e5f936438123fa65cc56e +size 60440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Lab.exe b/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Lab.exe new file mode 100644 index 0000000..2470240 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Lab.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a2c1d3b6360991d8109f5ccabc71e900172aa60415472aca24e4ac45cdf41a +size 75292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Notebook.exe b/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Notebook.exe new file mode 100644 index 0000000..cfb8f33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/Jupyter Notebook.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e91cf72669407c7ae8bdd1db78ffbe4c678f6bba34685336229e50275cd01e41 +size 75297 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/Spyder reset.exe b/Plugins/SenseGlove/Handbook/dist/winpython/Spyder reset.exe new file mode 100644 index 0000000..0202a73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/Spyder reset.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15657b08b0659c9949a53c127404ab880244555a93f7c627b338636d19b2af54 +size 342048 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/Spyder.exe b/Plugins/SenseGlove/Handbook/dist/winpython/Spyder.exe new file mode 100644 index 0000000..32d4a84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/Spyder.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6656b88fad441cb90fa898183c546223dc444826faf419b2b43bb56f4150edb +size 352281 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/VS Code.exe b/Plugins/SenseGlove/Handbook/dist/winpython/VS Code.exe new file mode 100644 index 0000000..f410e1e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/VS Code.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f2294d5e074c08aa83ada46828527d932af27531db9b24f57368bc6813faef +size 131607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Command Prompt.exe b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Command Prompt.exe new file mode 100644 index 0000000..87cba91 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Command Prompt.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3e9f5467cb69047aa1848b18c3819c31a7cd66d03bfc9d50027128d07b43348 +size 73241 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Control Panel.exe b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Control Panel.exe new file mode 100644 index 0000000..809fdee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Control Panel.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55e93e47f2192687ee1c714445e30ae0dfb928ae9c13ee0ff3aafb94435b730b +size 129050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Interpreter.exe b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Interpreter.exe new file mode 100644 index 0000000..108710b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Interpreter.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248d34739d4f135b1a2b42dab14eb357f43ffd1050c858adb916086c3ca6de65 +size 60443 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Powershell Prompt.exe b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Powershell Prompt.exe new file mode 100644 index 0000000..5e27e8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Powershell Prompt.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ee5532b7629e5e93fc797844d704e7c9fa5f2be242928528ccf745ec8393a18 +size 121883 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Terminal.exe b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Terminal.exe new file mode 100644 index 0000000..36723ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/WinPython Terminal.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6baf2aeea57d54b00def9e85ac363d6987e3dc41159a6c2f6c1941edff3a68ef +size 92711 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/license.txt b/Plugins/SenseGlove/Handbook/dist/winpython/license.txt new file mode 100644 index 0000000..2b265dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/license.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b88358ab18e3b058afbf9c940471143b9f76037781ee3101bc90c6d30b69ddb4 +size 1543 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Beginner's FAQ.ipynb b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Beginner's FAQ.ipynb new file mode 100644 index 0000000..93dc314 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Beginner's FAQ.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ebca3391225b5989b55240034eab1cd7a9e3387bc38127d49593fcc0e01df2d +size 6514 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/LICENSE new file mode 100644 index 0000000..07c14ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ac34711be8d50469cae57ddcf89b17f6f389a9f63893b557805867764c554b9 +size 1074 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/README.md b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/README.md new file mode 100644 index 0000000..a7738c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/README.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cb2d1ce9aeefb8254358e137fc6d8396b5d8477a019c9e710ee5afb201414fe +size 227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/einstein.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/einstein.py new file mode 100644 index 0000000..e363abf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/einstein.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e6124b74364ec91a1e135f3ed543f72134f0ec42069ae14fb853fc8b05833cb +size 2568 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/jug_fill.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/jug_fill.py new file mode 100644 index 0000000..7e2f505 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/jug_fill.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d602fb767ff1d069f303ca69f6b8ca3eb10971379e2b75a41e531a164f9e8c9 +size 878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/papuzzle.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/papuzzle.py new file mode 100644 index 0000000..a545217 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/papuzzle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc95648b389f5ae03c6a49760f1aa161f315d290ba055f4a072ce8c03b5d7c22 +size 1866 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/puzzle.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/puzzle.py new file mode 100644 index 0000000..7773023 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/puzzle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49cb9ced16d5beca073d1169885cd20380227395ae4e09110c0ac9f132323f8e +size 3457 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sat_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sat_utils.py new file mode 100644 index 0000000..c16ff5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sat_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e90ef5350dd089bda84257eb65279959593dbdb3565368ca7849987989d638d +size 4255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku.py new file mode 100644 index 0000000..d25dd98 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:490bf014f38aefc07dcde11a18126fa455e6464b33fce930532088c446e2f8ac +size 3659 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku_norvig_for_comparison_of_complexity.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku_norvig_for_comparison_of_complexity.py new file mode 100644 index 0000000..f11aff2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Solvers_Raymond_Hettinger/python/sudoku_norvig_for_comparison_of_complexity.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:425ec0785be65d6ceecca843a49245a65eb49bd83de1e90b4a19a2270dee07d1 +size 8558 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Winpython_checker.ipynb b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Winpython_checker.ipynb new file mode 100644 index 0000000..26c7eaa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/Winpython_checker.ipynb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37129dc82fe336c9907a9227c68934acd61a09dfaf724585c12f018042e558e7 +size 30901 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test.html b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test.html new file mode 100644 index 0000000..fccef89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70b4d9b77569ead42a961ce3ed63975602943245d968242f8d502c446251d3b7 +size 2408 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_baresql.html b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_baresql.html new file mode 100644 index 0000000..61ed642 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_baresql.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef0c494ff16b865d222447ecfd848a9d2aaaa765878df9af463a2445b1e3e3e +size 879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pygad.html b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pygad.html new file mode 100644 index 0000000..97fc6f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pygad.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a124fa36aacded0d8cb48460b27f18939350e897ed11e448caf85cd4bc6eb2e9 +size 4325 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pyscript_altair.html b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pyscript_altair.html new file mode 100644 index 0000000..3fc6130 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_pyscript_altair.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d02c0bfe96456857d74f5eeef7f2d012c5bd70ca3d8fd313f9319835696fc946 +size 1416 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_sqlite.html b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_sqlite.html new file mode 100644 index 0000000..41375d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/pyscript/test_sqlite.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d3f7e03e8a8fbcd436aafa9d840d2d075942017e19ea21513cafa0b7a6b8aa +size 525 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/README.txt b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/README.txt new file mode 100644 index 0000000..84d7d14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:102c7c84108b04e224fc6a1e506116fa5d729be54f2304c46537a586f9659f8d +size 145 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_communication.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_communication.py new file mode 100644 index 0000000..5c44e8b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_communication.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39c91be2998edbe439a9030e24f5bdbd9c7ead80e79a587c0e139ca965551ff9 +size 5145 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_executing.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_executing.py new file mode 100644 index 0000000..15c4a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_executing.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96aaba3130dc195a449e85c916fd24c2d4cfbccf8780f3e74a865cb829097748 +size 1184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_threading.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_threading.py new file mode 100644 index 0000000..1c7a649 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/basic_threading.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec59bd69c5069fee6800ea470effedd74f22532d32ce70560b58d6bec72acbe8 +size 1462 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/how-many-interpreters.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/how-many-interpreters.py new file mode 100644 index 0000000..d42386f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/how-many-interpreters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3facee5f3c2ce4180fed88f8986943cdf00448a48f309cc63e8d88e4c3c0c83 +size 4193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test.py new file mode 100644 index 0000000..5836d36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17df3e399d50bd8ca295e48973ef6ff5b310eb05839074536a8ed240af121685 +size 824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test1.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test1.py new file mode 100644 index 0000000..053d268 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test1.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9237ba77bdaac4765c9f56e93ab34665061b64f0b1f650f593916113369925e0 +size 4445 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym.py new file mode 100644 index 0000000..6e7b373 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c170edc747b2bae6966a23c7767674a7e05837ab860443e243da92a57c35bef +size 822 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym_bis.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym_bis.py new file mode 100644 index 0000000..589dcb9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/test_sym_bis.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a4ba78c97a5a545fb51d827db66f8db7de849ad08d955244c1fe585b0bcd3c2 +size 766 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/testb.py b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/testb.py new file mode 100644 index 0000000..77f8ca3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/notebooks/docs/subinterpreters/testb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd63745702558c430062d90a55a096b1a2b6bebb7880c197346f0e157d2b774e +size 1779 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_asyncio.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_asyncio.pyd new file mode 100644 index 0000000..86e3e57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_asyncio.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bebeb765ab9ef045bc5515166360d6f53890d3ad6fc360c20222d61841410b6 +size 71448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_bz2.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_bz2.pyd new file mode 100644 index 0000000..b619c93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_bz2.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ed0e5058d370fb14aa5469d81f96c5685559c054917c7280dd4125f21d25f62 +size 85272 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ctypes.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ctypes.pyd new file mode 100644 index 0000000..c2db8f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ctypes.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74e0e8384f6c2503215f4cf64c92efe7257f1aec44f72d67ad37dc8ba2530bc1 +size 125208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_decimal.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_decimal.pyd new file mode 100644 index 0000000..08a1993 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_decimal.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8221d1c9e2c892dd6227a6042d1e49200cd5cb82adbd998e4a77f4ee0e9abf1 +size 257304 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_elementtree.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_elementtree.pyd new file mode 100644 index 0000000..b316a87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_elementtree.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4869325e5cffbd13d3cc02dc78226478adfb51a802b52ff65b5adfacff3511f1 +size 133400 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_hashlib.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_hashlib.pyd new file mode 100644 index 0000000..63ad433 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_hashlib.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd77a5756a17ec0788989f73222b0e7334dd4494b8c8647b43fe554cf3cfb354 +size 66328 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_lzma.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_lzma.pyd new file mode 100644 index 0000000..c254da2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_lzma.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bf9ff61babebd90c499a8ed9b62141f947f90d87e0bbd41a12e99d20e06954a +size 160024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_msi.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_msi.pyd new file mode 100644 index 0000000..06b4641 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_msi.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54ab4e525854b0b802c3d303a0fed06e1d69e1139b62931278e2198133025f28 +size 45336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_multiprocessing.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_multiprocessing.pyd new file mode 100644 index 0000000..cbd86d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_multiprocessing.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c34031b464e7881d8f9d182f7387a86b883581fd020280ec56c1e3ec6f4cc2d +size 35608 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_overlapped.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_overlapped.pyd new file mode 100644 index 0000000..8552ec6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_overlapped.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5f89859609371393d379b5ffd98e5b552078050e8b02a8e2900fa9b4ee8ff91 +size 56088 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_queue.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_queue.pyd new file mode 100644 index 0000000..c4cff61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_queue.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbdabb5fe0ccbc8b951a2c6ec033551836b072cab756aaa56b6f22730080d173 +size 32536 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_socket.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_socket.pyd new file mode 100644 index 0000000..ace61a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_socket.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b102522c23dac2332511eb3502466caf842d6bcd092fbc276b7b55e9cc01b085 +size 83736 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_sqlite3.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_sqlite3.pyd new file mode 100644 index 0000000..3bf11b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_sqlite3.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee0e9b0a0af6a98d5e8ad5b9878688d2089f35978756196222b9d45f49168a9d +size 125208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ssl.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ssl.pyd new file mode 100644 index 0000000..6ef7bf6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_ssl.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d361707f7a2a2d726b20770e8a6fc25d753be30bcbcbbb683ffee7959557c2 +size 178968 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_tkinter.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_tkinter.pyd new file mode 100644 index 0000000..fcddcbc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_tkinter.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1c74836bad3d9b0aaec8dccd92e552b5ad583bfea7ef21cd40713a265d94f7e +size 66328 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_uuid.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_uuid.pyd new file mode 100644 index 0000000..ee66542 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_uuid.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acbf831004fb8b8d5340fe5debd9814c49bd282dd765c78faeb6bb5116288c78 +size 25880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_wmi.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_wmi.pyd new file mode 100644 index 0000000..4d61cb8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_wmi.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:752fb80edb51f45d3cc1c046f3b007802432b91aef400c985640d6b276a67c12 +size 37656 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_zoneinfo.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_zoneinfo.pyd new file mode 100644 index 0000000..d59422c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/_zoneinfo.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb9eb6fbb9d2f02ea2712986d4271b40f797fc47c00f47c61edbe0f08124f34 +size 48408 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libcrypto-3.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libcrypto-3.dll new file mode 100644 index 0000000..cb31b3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libcrypto-3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05fe080eab7fc535c51e10c1bd76a2f3e6217f9c91a25034774588881c3f99de +size 5191960 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libffi-8.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libffi-8.dll new file mode 100644 index 0000000..ff43379 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libffi-8.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff52743773eb550fcc6ce3efc37c85724502233b6b002a35496d828bd7b280a +size 39696 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libssl-3.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libssl-3.dll new file mode 100644 index 0000000..61a37bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/libssl-3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e9fbcd8f7fdc13a5179533239811456554f2b3aa2fb10e1b17be0df81c79006 +size 787224 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/py.ico b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/py.ico new file mode 100644 index 0000000..91687a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/py.ico @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:150c470f9943b806b44312efdec85755f22f8d7d52b31f93a9af3c43e8627381 +size 75809 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyc.ico b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyc.ico new file mode 100644 index 0000000..337cb93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyc.ico @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fda28a734788a3f175cb6aed4daeb5f05f0e49f6a272ccd2051ba337f7b3b42f +size 78396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyd.ico b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyd.ico new file mode 100644 index 0000000..ca6f496 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyd.ico @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ec1845a5724b2a83500f3bd940355e2fe26efc6b4fe6c208365359a6130da1 +size 83351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyexpat.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyexpat.pyd new file mode 100644 index 0000000..6d8df12 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/pyexpat.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd6099b1a6efdadd988d08dce0d8a34bd838106238250bccd201dc7dcd9387f +size 202008 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/python_lib.cat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/python_lib.cat new file mode 100644 index 0000000..262c2b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/python_lib.cat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efc08d1b489e60685c767a789cda3a324769c314ecd4eae9828ab23b60f21c07 +size 125221 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/select.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/select.pyd new file mode 100644 index 0000000..ef1b8ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/select.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:411d6f538bdbaf60f1a1798fa8aa7ed3a4e8fcc99c9f9f10d21270d2f3742019 +size 31000 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/sqlite3.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/sqlite3.dll new file mode 100644 index 0000000..d9df181 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/sqlite3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ef475d27f9634f6a75e88959e003318d7eb214333d25bdf9be1270fa0308c82 +size 1541912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tcl86t.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tcl86t.dll new file mode 100644 index 0000000..ee1a675 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tcl86t.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d2769e69d611314d517fc9aad688a529670af94a7589f728107180ae105218f +size 1816344 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tk86t.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tk86t.dll new file mode 100644 index 0000000..3f186eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/tk86t.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b30576b60aee548838243601952a05b70a9fc937f5a607f6b1413cd5ed04d900 +size 1555736 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/unicodedata.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/unicodedata.pyd new file mode 100644 index 0000000..8ab55ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/unicodedata.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2cf23b7b7491edcf03103b78dbaf42afd84a60ea71e764af9a1ddd0fe84268 +size 1138456 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/winsound.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/winsound.pyd new file mode 100644 index 0000000..eaa521d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/winsound.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c028e82f6a6477680639c2060973d250a7cb64655c48cbd9a03ab7b884fdca +size 30488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/zlib1.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/zlib1.dll new file mode 100644 index 0000000..bdf5c4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/DLLs/zlib1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21feea753a6f991f01bcf9d30afada06eca3a105e97d5d81998ef359c4fc86a3 +size 146712 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/.buildinfo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/.buildinfo new file mode 100644 index 0000000..0d61af4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/.buildinfo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44f3270da42c30570f330f24e664a57342ac26b6b24fa682cbf9d5d3cfc72a90 +size 234 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/NEWS b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/NEWS new file mode 100644 index 0000000..12c0732 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/NEWS @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b984b7e08be4176dc53663bc5508ff29ba49b9f94922c11d7ed259ba1fcbb0f1 +size 1742183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_downloads/6dc1f3f4f0e6ca13cb42ddf4d6cbc8af/tzinfo_examples.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_downloads/6dc1f3f4f0e6ca13cb42ddf4d6cbc8af/tzinfo_examples.py new file mode 100644 index 0000000..65c87e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_downloads/6dc1f3f4f0e6ca13cb42ddf4d6cbc8af/tzinfo_examples.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:defccc58d87dbd6207906f80deb9ad29ed15b0df588cbfcb180d6b9369e5f8b0 +size 6036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/hashlib-blake2-tree.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/hashlib-blake2-tree.png new file mode 100644 index 0000000..b675ec1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/hashlib-blake2-tree.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:382828d64e88644e47e695d717ea8432ec1ef79a17f2d209b11aef4fdbfa4bf5 +size 11070 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/kde_example.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/kde_example.png new file mode 100644 index 0000000..2b26e29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/kde_example.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b669bed8b4b1d4672f6772c0b63c2c70678dd330c4e7db576c55bcb319b8865b +size 315150 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/logging_flow.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/logging_flow.png new file mode 100644 index 0000000..c50357f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/logging_flow.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70d752f336a9ee7af4a56b8e5b3696b962b69793b274f76439165823c69cf5e0 +size 21907 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/pathlib-inheritance.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/pathlib-inheritance.png new file mode 100644 index 0000000..c8af33d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/pathlib-inheritance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bd5db0b21f178fd8b16f7d999d0da20a00ca8d271cd556cfb1d26dea91aac88 +size 6431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/tk_msg.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/tk_msg.png new file mode 100644 index 0000000..8f957d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/tk_msg.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b21a9ea9ad785299a282cccc4b9a93cf9b1f028f65b0e90c0c41deea019953be +size 14979 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/turtle-star.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/turtle-star.png new file mode 100644 index 0000000..f7d3271 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/turtle-star.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5528a56a8b0f2e5da3d6f20f47057cc0325273ff152816c202f8a114cd07138 +size 33808 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/win_installer.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/win_installer.png new file mode 100644 index 0000000..828ead4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_images/win_installer.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba9abf87cadffa7027ca298ba11ceb6418f3a9abb32ac988c8d342e7c2b3fb2e +size 84383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/basic.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/basic.css new file mode 100644 index 0000000..22e0226 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/basic.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a479574fb23014ad9a7663f628d75bdd6467477d1aefc80d4b56e345f2de9b12 +size 16018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/changelog_search.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/changelog_search.js new file mode 100644 index 0000000..e8d6154 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/changelog_search.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5caefaa11b03b3a7451fd521a841272b9c670ae333c53d265151e65cd647483c +size 1976 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/classic.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/classic.css new file mode 100644 index 0000000..09f93f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/classic.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a060f766ba8e23b94dd3f49e9f31a20d982a02fb8104ec9b1e5898d833f316a1 +size 5744 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/copybutton.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/copybutton.js new file mode 100644 index 0000000..f54be24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/copybutton.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d278d2f6f600cd2a0ddfbf8adf71bf2dfbcc641fa1e8ce909b25723d16e3ba5 +size 3508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/default.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/default.css new file mode 100644 index 0000000..f494882 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/default.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3d74d09f9a0d5c08e9ef211afed3397ace994a39748325ae53bea62124348b1 +size 28 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/doctools.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/doctools.js new file mode 100644 index 0000000..685161c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/doctools.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81cb2da3c284e429a1a63ab28a20b7e30bceb8eb1556a154c8cbac0b4ce7795b +size 4472 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/documentation_options.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/documentation_options.js new file mode 100644 index 0000000..e3bdaa0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/documentation_options.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cdce1247554b0e0e88e15c19098244df15ae6d4ea72a9896cbb57a0f4a4cb4f +size 341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/file.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/file.png new file mode 100644 index 0000000..3852249 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/file.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3e +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/glossary.json b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/glossary.json new file mode 100644 index 0000000..46f060c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/glossary.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a77100e9ca237d15ec83eea77987fb4a24d55a7f01c2cc77810bf7e7b5e3773 +size 146615 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/language_data.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/language_data.js new file mode 100644 index 0000000..35517b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/language_data.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b62208b95808374fd3ccbab505ab556ae8ee92768b86f6c82dccfbc1d5a08af +size 4957 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/menu.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/menu.js new file mode 100644 index 0000000..879fe2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/menu.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:266aca0f4f3fe828828101f7d80b3d020892895fad8757d922756b9930a28730 +size 2137 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/minus.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/minus.png new file mode 100644 index 0000000..b34a51a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/minus.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc008 +size 90 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/og-image.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/og-image.png new file mode 100644 index 0000000..2186b7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/og-image.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aacc80a7392c51d971a98ef3dae6c908d9a14229615c83a5db97521dc4102c1e +size 14572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/opensearch.xml b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/opensearch.xml new file mode 100644 index 0000000..63cfc6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/opensearch.xml @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6835b83e7b521f2bfcc886e1a5d96f414de3aa70ded787e2cc7f85edd2fd4fe0 +size 546 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/plus.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/plus.png new file mode 100644 index 0000000..ffaf9e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/plus.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63 +size 90 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.png new file mode 100644 index 0000000..75acfd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae173dc4842351fc1c8a551afbdb58cb2b295490782130daa4f359a6a80d7256 +size 695 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.svg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.svg new file mode 100644 index 0000000..1df5b75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/py.svg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5865be8bcc0af888594903ea0112f6c8d923c5726c4081e8c856110cc7339cef +size 2041 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme.css new file mode 100644 index 0000000..aeeb258 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3ab1cdbebd0ab51aa0caea1d09c6482ff6e58ed596b9e3baa0fe47b029feba6 +size 13101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme_dark.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme_dark.css new file mode 100644 index 0000000..b4d0948 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pydoctheme_dark.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b40ebb0cd283d71c30c96e60fac3dd9d8c738c813613e99146f4d9ae1874e0 +size 2371 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments.css new file mode 100644 index 0000000..31b9efb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88b3629fd3d7a222217c936818f992b0b6c40ddbb3266b2fa6d56e2a58849b11 +size 4976 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments_dark.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments_dark.css new file mode 100644 index 0000000..0e1ff1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/pygments_dark.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b228d5a2c3b6a621f4d8573f755b74c33345c33a009bdbe0c04b855d656ac7a0 +size 5139 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/search-focus.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/search-focus.js new file mode 100644 index 0000000..2b6a4e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/search-focus.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f0595ef5b2c2afaf36a03de9cfef22ef15009dcaa1498ab6c19353c546f5680 +size 559 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/searchtools.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/searchtools.js new file mode 100644 index 0000000..5f9e717 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/searchtools.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb2a2c36f3a5208bee2101db454f853a9c84b4ac31924193734f4e5172795291 +size 20731 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sidebar.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sidebar.js new file mode 100644 index 0000000..994751d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sidebar.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99e280c84c96c9b75a134bf0f6aa2978bf1f65b7c72a9360d1cbc74ba54fb20a +size 2697 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sphinx_highlight.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sphinx_highlight.js new file mode 100644 index 0000000..4ca94c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/sphinx_highlight.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:096231e9c87df80ec3273da9c5b71bc81503206726a07a4dd4de44c256ff859c +size 5123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/themetoggle.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/themetoggle.js new file mode 100644 index 0000000..705047f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/_static/themetoggle.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e83d4b134c20f038cf3fbefafcac4f0b15dd224fa0189257e436291c52c6d54c +size 779 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/about.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/about.html new file mode 100644 index 0000000..4eb6642 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/about.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ea28b467527cf505dcf16144a34bb25f1176b50cb21301b78735fc5b6db48b9 +size 17790 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/bugs.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/bugs.html new file mode 100644 index 0000000..2de11a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/bugs.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44687d06941dbb9cbd5674d2a717b61b75f9ba858446b88bc30f81586ecf5b0b +size 23017 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/abstract.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/abstract.html new file mode 100644 index 0000000..9ee3c75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/abstract.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a21fdc04328e6f14bddb5c3322340294db4179668aafc02446297400df21caa1 +size 19638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/allocation.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/allocation.html new file mode 100644 index 0000000..4e92a56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/allocation.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6218fc6f9823c97e4244dbf3ef4b9d95a38cb9e30eedcd26e0887f3d2ebc7b2b +size 26652 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/apiabiversion.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/apiabiversion.html new file mode 100644 index 0000000..dc67a26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/apiabiversion.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff9a43818ceb8a5f214e0269c9fc6896de291d38164443d69e78ba1d4ffc356b +size 23581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/arg.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/arg.html new file mode 100644 index 0000000..cee21a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/arg.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c31523e1ca6961e8b89d1add434cd55d007bd5e51ea4135fb4a562b49944c324 +size 108351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bool.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bool.html new file mode 100644 index 0000000..c5aa398 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bool.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8354838c3761664ee173e2c023c522cea87e109a13b7b6a5eeec3cfb8026306e +size 22866 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/buffer.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/buffer.html new file mode 100644 index 0000000..ddc6c73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/buffer.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58fb0a45f5c4b6cda7e656150312341ed00e94e986eb24fc0c9019d6a66c4d3b +size 95125 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytearray.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytearray.html new file mode 100644 index 0000000..ceb73b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytearray.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1dd33ba157e2999f46cfcb7670df23d3a75dc4b3a0dbc09be36e1536403fa0a +size 30437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytes.html new file mode 100644 index 0000000..2e9395d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/bytes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a6e1486bd87f54c69a2beaa65ac410ab3b48c535bb6f7200335c29b2f77fef0 +size 46507 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/call.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/call.html new file mode 100644 index 0000000..2110b76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/call.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fbe03dcea247ecd03c971a9c5012a747df1184e7cad294486d12d403734ed7f +size 74665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/capsule.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/capsule.html new file mode 100644 index 0000000..0dbd5cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/capsule.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:328fde8ed080e052cefa02eab4e535fd07d3868e99920e5c2516b4aa03656f52 +size 39516 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/cell.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/cell.html new file mode 100644 index 0000000..acb13e7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/cell.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c76dc2c5bbe6f33951637a3db7a9c271dae114584434d99e750200e5df77709 +size 24266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/code.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/code.html new file mode 100644 index 0000000..5dc6a53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/code.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:728e7359e3be8e5908a2594189d9c7590667f0188212484df3a14aa107b2b0c5 +size 58781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/codec.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/codec.html new file mode 100644 index 0000000..a788fbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/codec.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b0e0e9be79830bcc208ffdc2036d1e15bb1de663ca3ac4c389950c65f36de99 +size 46678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/complex.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/complex.html new file mode 100644 index 0000000..c50cbf4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/complex.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98ad7ef0fb51362aa82e6fd2f621efed14d9515d257c4f2ecf30854ab8cdb349 +size 37612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/concrete.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/concrete.html new file mode 100644 index 0000000..877663b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/concrete.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d226549a5a7fc458d44c96408cff6dc7e80728cf5a965234116348430d19354 +size 28560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/contextvars.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/contextvars.html new file mode 100644 index 0000000..7792abf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/contextvars.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:091ebea31adc83f86b3a133f21a2656eb8159827b8bbf3d3bcdfc025575c01df +size 36861 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/conversion.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/conversion.html new file mode 100644 index 0000000..0719c79 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/conversion.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6e013e6acc977362f82daae1e25c669fbb3375d5c249c3268b3ed431dcc6e66 +size 41283 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/coro.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/coro.html new file mode 100644 index 0000000..2c85c1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/coro.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b38d12fdeba262a9822c287036d125611cfbda4ceb105d03caee2d349720799c +size 19979 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/datetime.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/datetime.html new file mode 100644 index 0000000..e912288 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/datetime.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3269033fba76e218fea8c8fb828176dd56d4fc938248bb651bef87c2e0dbb112 +size 71187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/descriptor.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/descriptor.html new file mode 100644 index 0000000..36ea618 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/descriptor.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6306076e62d2f39dfbbd259536b1b98f091dfb18572bbd9c8b5fa20a65d8daf3 +size 25766 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/dict.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/dict.html new file mode 100644 index 0000000..2b66468 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/dict.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d3113faf4738113eb92fe4bd24e913a310d6acee1c4232bab80d7c0a43f4d22 +size 75540 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/exceptions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/exceptions.html new file mode 100644 index 0000000..85cf821 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/exceptions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beed3dbf8e0b7038e70c9fb3cc4095633a7c201a26ff1bc84e23880fad6c613e +size 217810 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/file.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/file.html new file mode 100644 index 0000000..356d1d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/file.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d66d94923d257324b0febb5fd249ad916ba73a3a9435f7197178f723b494764 +size 32171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/float.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/float.html new file mode 100644 index 0000000..753c166 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/float.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a883e3097a04b6dc081c2faa54fa0a7c3ce52cee85e7606ebdc6395901d93c0c +size 41075 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/frame.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/frame.html new file mode 100644 index 0000000..a4d31b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/frame.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de80cea9419c11e3990d5748b852c141e10439acfffc865fd78f1a5520549c23 +size 39894 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/function.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/function.html new file mode 100644 index 0000000..948cca3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/function.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7297ae9cebbb58e0cc2aee5f461b5b35dbf040d145c8ff6b86e1719adf3116f0 +size 44549 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gcsupport.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gcsupport.html new file mode 100644 index 0000000..2da063f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gcsupport.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed763b98dfa039482adff4431d83a1cf524937775674e5fe03414b3281e81a12 +size 57078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gen.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gen.html new file mode 100644 index 0000000..fb506f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/gen.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb19e0404b5154ba9571697af5a28cb8f70efdcf7127a9ef397da8a360890f03 +size 22508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/hash.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/hash.html new file mode 100644 index 0000000..2208feb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/hash.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00955778b0a54f9f7ee774a1c3e358cce1d95ea9857d35707a47e2fd10e2c7c0 +size 20233 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/import.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/import.html new file mode 100644 index 0000000..2469ada --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/import.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afd4892f221fd7a4674d0ccfbca705e9e90b1f4c7eb1645c5052c34476e880bc +size 70771 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/index.html new file mode 100644 index 0000000..f5ea923 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc4e81314dd94e7f6197928eb31afe9f3e2a669d359ef114d153aff158d8c52b +size 29077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init.html new file mode 100644 index 0000000..ea424c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efa2f8721dcac361ec2072bb2437216a514425e25238609b0c9cc5ad8776a902 +size 282380 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init_config.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init_config.html new file mode 100644 index 0000000..53d11b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/init_config.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891505831a7ae513cc5ff90355c33f3999a08222dbbd0b120d8c007444635bd4 +size 231091 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/intro.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/intro.html new file mode 100644 index 0000000..f9922d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/intro.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7755dcdb9c9235637de8567daf8715bd7947ab67fcd9a70e0de94d0f9741c621 +size 109824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iter.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iter.html new file mode 100644 index 0000000..2697bf4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iter.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:380f169e562be85ccdc63f468f0d0b770641be446a0e0bf6ad57b12c76c5cc97 +size 25518 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iterator.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iterator.html new file mode 100644 index 0000000..2e4e973 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/iterator.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b758f0fdd8f829f1173e751e27a76fe9ea342c2751a04fac4898e6c8d98628f1 +size 23730 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/list.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/list.html new file mode 100644 index 0000000..4dba154 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/list.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad600d8d88b02719b74df2664103d3f5dfac02e6a590eb088f15476c94cbc187 +size 41238 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/long.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/long.html new file mode 100644 index 0000000..21c74d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/long.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfb8e820f2ec6307b43deb2ea87ec97db7acc2eedef259528586aecfe01d6f96 +size 75753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/mapping.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/mapping.html new file mode 100644 index 0000000..5a0e52d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/mapping.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4524d6a708aac9f5e08738e387af99d49bd9f6e5c095fe7aed2aa7a1dc0f8705 +size 35784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/marshal.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/marshal.html new file mode 100644 index 0000000..c97b80e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/marshal.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:291ca862df466ded3c7fbfafd2869c3977291af88ef1ed7f6d74d1afab2817c7 +size 30443 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memory.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memory.html new file mode 100644 index 0000000..4ad1ca6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memory.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:873a6e1eea68537a9a16e1eec95728ff543167000a6fcfb7435835d91d640af3 +size 104640 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memoryview.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memoryview.html new file mode 100644 index 0000000..72aa1ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/memoryview.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2eebb0a074ec6b6618fb4f59c3f0e567677f2f12e060beed411e16a8fb531c4 +size 27723 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/method.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/method.html new file mode 100644 index 0000000..ace0b07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/method.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6845ce574cb60e97832d76d1ecfbb082843c688e999e484956d7c8969d8d6984 +size 30649 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/module.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/module.html new file mode 100644 index 0000000..81b2d60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/module.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa72b3f63c5babfab7de1989c72d934a3f90b0b6fa1858f2109a0bd3e8fe4f99 +size 108350 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/none.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/none.html new file mode 100644 index 0000000..bf4c438 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/none.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62d289fb6f83c70306dc946ad3c4f9ed22ec7df56cac25f1301dd3f9c76bc31b +size 18386 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/number.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/number.html new file mode 100644 index 0000000..4fa2a07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/number.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aa9e703ea3caf49851cc61d11f46c5459580a7abde6171b1f85285a4828b86b +size 82441 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objbuffer.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objbuffer.html new file mode 100644 index 0000000..667bf07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objbuffer.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:200633ab9631fa7032c3c77fc055f407c7aad3f9ea9812435192933562c359e4 +size 25483 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/object.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/object.html new file mode 100644 index 0000000..30e35d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/object.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e5c96297319548ca59b2ec6fa86f91cf122edd597565007cb1fced90e073021 +size 100524 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objimpl.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objimpl.html new file mode 100644 index 0000000..ba37e24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/objimpl.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c427dd364d268ed49eefdeedbed5e4c7b28d23a740a3ba3a4367847faba2c659 +size 19787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/perfmaps.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/perfmaps.html new file mode 100644 index 0000000..a61e917 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/perfmaps.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ffb57893e18d018be87b4b40fbe50931fc0f3329dd28cf5edfb70e736824ec8 +size 23227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/refcounting.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/refcounting.html new file mode 100644 index 0000000..7276ac7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/refcounting.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:875ffd7447dcfa354ae5f580bcb17c445e0c00544d7fb3482fa2ed2d81cdfb27 +size 40974 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/reflection.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/reflection.html new file mode 100644 index 0000000..7a4bb4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/reflection.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feacbe7512c44bc92695c0c7247887c9ecfb1a08bb5853148e329e3e6f65fabd +size 22461 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sequence.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sequence.html new file mode 100644 index 0000000..a3ca15c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sequence.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8df6ec03cdde6b0c77ccd41d007f60226eb0b8c0a9aa37ec332b8a70c449f8a +size 53792 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/set.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/set.html new file mode 100644 index 0000000..4b523df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/set.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57a1107274f5dec3d0299714bf587657d604fb9dc1ee075f61616064c338537e +size 49613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/slice.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/slice.html new file mode 100644 index 0000000..f720fe4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/slice.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6457d3189c2bcd3bb9d36bf0947a49420dbb6da33d5f04fce0022212b151cc +size 37101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/stable.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/stable.html new file mode 100644 index 0000000..a37d238 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/stable.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70863ffb963493fa4db31498b136b85a246de369e3effe7f72d0e68efe51497e +size 219686 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/structures.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/structures.html new file mode 100644 index 0000000..aa0fc5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/structures.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1196f2eefadfab443d6ca0fe1a986bc9578c2c4f8d44fc7af7cc5513847475f +size 116654 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sys.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sys.html new file mode 100644 index 0000000..0f9aebb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/sys.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d62945a155a06d6c9c123ae5852e27f372969dce8cb25e158c7ca8e4d625ff74 +size 82157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/tuple.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/tuple.html new file mode 100644 index 0000000..9a42dc7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/tuple.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecf2dc53f83f3ff597199a60a9a48c1d1187462907a6e34abbfbedb7bb53a7a9 +size 56548 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/type.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/type.html new file mode 100644 index 0000000..09f3ca1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/type.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1265569f66df5e562fcf2df8e43129538e1e15d74235f8faf5ffd9d2d19dfd +size 90781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typehints.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typehints.html new file mode 100644 index 0000000..11d54c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typehints.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ac4f3d811e7496d3bc481aec0ef27bc64660c62c5b39b43930026717f05291 +size 22720 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typeobj.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typeobj.html new file mode 100644 index 0000000..ca8b7bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/typeobj.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09a8d7623202c316954ea696da0222ec5e16c6cb60799bd8957fc5bb20f3492a +size 453567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/unicode.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/unicode.html new file mode 100644 index 0000000..76ed3f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/unicode.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8f2b14e6ea870cde8823188e6f86fa8a3e309bda809a445ef38e6beedb9ce84 +size 250056 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/utilities.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/utilities.html new file mode 100644 index 0000000..1911a62 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/utilities.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f57c8a869a9443ee9ed6263472ca8536df4c6faab6ea56c80a5bacf7197666ba +size 18245 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/veryhigh.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/veryhigh.html new file mode 100644 index 0000000..9a65f4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/veryhigh.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6101b5c91430856d06c104bd00a60a149cea215d6044a357667aa9da2a3e8504 +size 90853 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/weakref.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/weakref.html new file mode 100644 index 0000000..bd0aedd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/c-api/weakref.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0dfa9ac0df607629c94a31e001c6248243d564464c083c848b94f28b173c57d +size 28133 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/contents.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/contents.html new file mode 100644 index 0000000..f17b283 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/contents.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3accd161543663de203f452bee4f62bd44bf88e36c5e1dd2346cbee865184ce1 +size 679712 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/copyright.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/copyright.html new file mode 100644 index 0000000..19b6c0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/copyright.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:817c40cfda34d254bafe2d8a08a9e35e8eedc2e0d4eb6cbac392252f5ba3af96 +size 15899 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/distributing/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/distributing/index.html new file mode 100644 index 0000000..9f59e0a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/distributing/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f24349ef2d0c978052321b58b5e2347e4f45ab1c80522105456a3309f83069 +size 14260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/download.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/download.html new file mode 100644 index 0000000..ce8bfe6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/download.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a9f4406b63fa9b7addbe94e67e97f28b01b75f878e04e5e8d3873f6c46fe946 +size 14608 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/building.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/building.html new file mode 100644 index 0000000..b8e1875 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/building.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6711fedb9f8aa427291a0869319b42d51bbace89a9681039e19d00869b4e9fcd +size 22597 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/embedding.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/embedding.html new file mode 100644 index 0000000..a04ad1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/embedding.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59050601a860ff47d4e8a2840a11ce50527920a656357ff71dd2c96a5204ebcc +size 59722 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/extending.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/extending.html new file mode 100644 index 0000000..98d307c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/extending.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f95d9ce7f46f9c5618d9bbba057484cc3d21d2fabe580555fa3703f72cb376 +size 170693 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/index.html new file mode 100644 index 0000000..085f9fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9c402d90ced0bbfd28846147954649d245a0c2b26e405fcb51e140d5975678d +size 27119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes.html new file mode 100644 index 0000000..6909ab1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3f080ef1e57a6a84e7bc4782d26689febb4bd1acf9c3b7ad855cbed9e6682e4 +size 102472 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes_tutorial.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes_tutorial.html new file mode 100644 index 0000000..565e786 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/newtypes_tutorial.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2cdfab0c36f70e9d6f2f3bc8c5717037e52ea4035688393321d72b87504c677 +size 240761 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/windows.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/windows.html new file mode 100644 index 0000000..8922279 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/extending/windows.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e126474c28c7195e1c9e84a3f6c0e15edf9fd13ab51ec4b85619d80986c76f71 +size 28962 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/design.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/design.html new file mode 100644 index 0000000..c441ff0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/design.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0476be6a1c585146a37e3ef548d71ccb17dc8336e3d84acb9535e1f8dfb9d5fc +size 100352 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/extending.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/extending.html new file mode 100644 index 0000000..10d98e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/extending.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bcc274fe58e5cb340b665fa64f0543e57f3bd6dba66d343d2298ed659612b4e +size 54800 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/general.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/general.html new file mode 100644 index 0000000..03d63d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/general.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:887ff4ae7b84bc1dbacdf7045bf7d1af6c55acd3cc1f1f363060ac810ef16d5b +size 51890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/gui.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/gui.html new file mode 100644 index 0000000..030216f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/gui.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ada90429ba2b5fc61fa45bd647733b79edce732df90bfe16900ecf751f2e08ca +size 23299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/index.html new file mode 100644 index 0000000..ad60d55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8738ca86a7c1aca7528025e517aac7f96d2cb32cefca4a0f12a4a678c543108b +size 16715 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/installed.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/installed.html new file mode 100644 index 0000000..9df1c7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/installed.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5443cd1f55099208a736b45cd01d3f35d1719201a94a4151d37b34f82ceaefa2 +size 19786 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/library.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/library.html new file mode 100644 index 0000000..a722299 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/library.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5cae0a85ba2b5c01a53fa849e9a94326cfaaf28c44514398156babab3e53cfc +size 93723 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/programming.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/programming.html new file mode 100644 index 0000000..1fc509a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/programming.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14520f429f0535eff1ebf283fdfd756342669c1bdaacb5adf88990cb8f40eafb +size 257416 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/windows.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/windows.html new file mode 100644 index 0000000..3b235b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/faq/windows.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffdb912d071969e871a31d1cfda9b4635cac6cd54fed2b82d5734cfc4cb83af3 +size 42179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-A.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-A.html new file mode 100644 index 0000000..1efd1bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-A.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35ed69dc54f2e609d2e82068de6a6bd22b23671332307ae40eee7e31271c2c25 +size 89258 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-B.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-B.html new file mode 100644 index 0000000..84a79d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-B.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6eeeb35f200bcd2099ca441564fcd9a85683312b7092cd97e1aa8632929679c8 +size 57795 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-C.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-C.html new file mode 100644 index 0000000..4e526fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-C.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e0c8f7309ca0e9db8e8ca1669ff57b1c5d3afed8ea5d3289d8101360f0fb18 +size 140033 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-D.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-D.html new file mode 100644 index 0000000..0882396 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-D.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8e32bf5f66cde08f6213799c50b03f9d539093d39c4c99358c1b774cd50f211 +size 68353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-E.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-E.html new file mode 100644 index 0000000..fc380bb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-E.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f231fe3738e92ecefa5283f4bab8e66cd14f6b9dc7c67ff9becae0a684e8ab5d +size 109999 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-F.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-F.html new file mode 100644 index 0000000..837d6d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-F.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27a8e989eceed2c8d592f3940ed1122f42a0311a557e0fc387caba892a969be3 +size 76939 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-G.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-G.html new file mode 100644 index 0000000..95018f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-G.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1192578e53e1b4d1be2848ab0e27d1798a5c5d6a540ef6998d20bc345e4dc7e2 +size 95569 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-H.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-H.html new file mode 100644 index 0000000..4336c50 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-H.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb766f819677805a9e7da8851c179488d3b806334197637b84396a157ceb8282 +size 47443 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-I.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-I.html new file mode 100644 index 0000000..a5765fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-I.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d99d79b73f7e139ec81b5d57c399e72f8259a19930ab80e4809d907f813f2054 +size 95685 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-J.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-J.html new file mode 100644 index 0000000..5a0dbb7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-J.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d4d9776e94b142cb15bde71a476e3554510b92ba67f05a9bda1bb84a81d51e9 +size 17893 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-K.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-K.html new file mode 100644 index 0000000..d0438e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-K.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaf61816c3e3f0b96cf645116d42ff1e9082767b37159c651d7feb85fbf1bd70 +size 29911 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-L.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-L.html new file mode 100644 index 0000000..86d332e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-L.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3b45d8baefe2e06900f7debbd9ef0a2957ff84772433a049faf3112bef2a9e8 +size 54828 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-M.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-M.html new file mode 100644 index 0000000..6c17d3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-M.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:755b063b15336ed42f73a3774d1fe2d12c8f206c111ba6a2b14c6491099b06d9 +size 99585 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-N.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-N.html new file mode 100644 index 0000000..b77aaf4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-N.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0837f5f65e5524a0c2bcf4937966d90c1a1a25fce326b70699fb4256e0ba41d5 +size 46588 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-O.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-O.html new file mode 100644 index 0000000..2bb9b53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-O.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c601bedb83ad476b45ab5672be1927ed888334a71a6f3d304dc29f06a0b1af9 +size 53014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-P.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-P.html new file mode 100644 index 0000000..426f2dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-P.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8df82560784507d98247d21f4e2dfadc97d5c8bd9598cc2a7029fb04d1cec6de +size 328988 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Q.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Q.html new file mode 100644 index 0000000..aec5fe7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Q.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f277e8b332d87a58eb1e951174724705455a3915bab60ab6e9c13ce029a83472 +size 18221 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-R.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-R.html new file mode 100644 index 0000000..6c6445d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-R.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad2e30e44e161c31c8c6941a095c2ef7458336d26069c48995b413039423b1f5 +size 117707 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-S.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-S.html new file mode 100644 index 0000000..ff7646e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-S.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2f1340b6e7bf7fbe04e80e0bf477e059d5fc48d37b422f6d99b81d9d881a2ee +size 173044 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Symbols.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Symbols.html new file mode 100644 index 0000000..41a7b9c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Symbols.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf292ea1d3b1721e29f460739dc419fb8d44a99f75fdf45ca92585681911f612 +size 79891 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-T.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-T.html new file mode 100644 index 0000000..aa2c657 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-T.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17e5cfcf97616303903435ecdd04d03bdf39a5d629eca5ef365b4d1d44af2d27 +size 76452 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-U.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-U.html new file mode 100644 index 0000000..cffac19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-U.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:782acbd3dfcc605ee83f42c06914ab31a991da8e0b1a6c1282bc3f986a59c15a +size 47812 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-V.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-V.html new file mode 100644 index 0000000..e799e1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-V.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f564c5db55f88b9f3e27749dd83b08e136b39061c2a8166c417decb4180b2362 +size 23988 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-W.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-W.html new file mode 100644 index 0000000..110c08d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-W.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e390ea983ab16b25bd2b121744f07e86a1b18b7095a304256090d0f3cead98f6 +size 39483 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-X.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-X.html new file mode 100644 index 0000000..dbd1271 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-X.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6ac0704d6fdc9ffb68b58ccd4e27eefb8ccf52f6e43a68681a19b04fff59c4b +size 25448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Y.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Y.html new file mode 100644 index 0000000..11b9cd5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Y.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da949c82e6f9a8d4689efc0dd331ee2be1e97c44a7fad1dbc0e29d2e4a83c9eb +size 14742 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Z.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Z.html new file mode 100644 index 0000000..2a964d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-Z.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:defa37e61ba3ef02faeb05fdd68d25df4a745f0467c5f9cfb0d1d9847f95bbcd +size 17191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-_.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-_.html new file mode 100644 index 0000000..75c5427 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-_.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:217ac4974efe60a1d1b332fb3a103b265618e0cc5923314b3b2d406e9c386e48 +size 65984 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-all.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-all.html new file mode 100644 index 0000000..d6aec51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex-all.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2e02751ae7334021ace89aeccc8f9ac25704f80cd176c085145081f8eb73afa +size 1786315 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex.html new file mode 100644 index 0000000..b20438e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/genindex.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29b6453b19d753b7599ec7d2254db7589f9c1f712162dacb3890a1ccb5c0cb9c +size 13936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/glossary.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/glossary.html new file mode 100644 index 0000000..2a42d0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/glossary.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6905d1ae565644527e18821cc098946830131761940eb6fb3c220676bbadcf8 +size 164271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/annotations.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/annotations.html new file mode 100644 index 0000000..3b58ba2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/annotations.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41730ad70df2b004872e49d1fb05e54e59601c45ed279d9e01f40ce1ec3de926 +size 40159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/argparse.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/argparse.html new file mode 100644 index 0000000..14a3fbc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/argparse.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aec9d0229016e4f81d53a5482b5cdd0eaa8055f2f5b8512fadd57d80a2852f8 +size 105471 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/clinic.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/clinic.html new file mode 100644 index 0000000..fb8dc68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/clinic.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6af899a8c5ee4b12a824ae4fa1c4fe3a2c714e6dd4332d90248d1d056ca4493f +size 13986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/cporting.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/cporting.html new file mode 100644 index 0000000..9f3a2dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/cporting.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7cbf488a0e0ec3280dccbf864886cd667e62f99a8039d37bb3f86633219b6c +size 16949 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/curses.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/curses.html new file mode 100644 index 0000000..e392142 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/curses.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c55a87c51098c002c66cd2f4a5532568a5098a3effbbf0939e72c8115570136a +size 71104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/descriptor.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/descriptor.html new file mode 100644 index 0000000..0659faa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/descriptor.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22784eae0b1e17bbe042680829ce4f3817bc81b7a2c6e466458d7c422e6cc207 +size 174653 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/enum.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/enum.html new file mode 100644 index 0000000..ed49afd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/enum.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:177c03dcf65769376e4652f93946025bf7b95a30110423743bfa7e4a21bc8eee +size 191818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/functional.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/functional.html new file mode 100644 index 0000000..e9b7c0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/functional.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fd06deb9be843c8fce35195224499a68cfd0c3bcd950984e58c783eeeb48c9a +size 171356 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/gdb_helpers.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/gdb_helpers.html new file mode 100644 index 0000000..84b1212 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/gdb_helpers.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88e7527f833130e0e495f95e03494b6ea65522dcca0a9f3d2a8cd4993c6c60e7 +size 53224 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/index.html new file mode 100644 index 0000000..d32ef8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c246d07efd421ab2d53d8e247be789feba5b5851890411aa0bfd18259b4b610 +size 18460 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/instrumentation.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/instrumentation.html new file mode 100644 index 0000000..2aff34e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/instrumentation.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acadd373b307258bc774cbde6e6e9e61fe44a1e9046af3e5ded566f1b978e817 +size 44318 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/ipaddress.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/ipaddress.html new file mode 100644 index 0000000..aa1f411 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/ipaddress.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0023794aae841063d6a355fd4290b7e7ed8bedcef2faf97a4565171b13d068da +size 49728 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/isolating-extensions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/isolating-extensions.html new file mode 100644 index 0000000..70afd6b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/isolating-extensions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b027a513ba2ae135d760ac7a0de2579834ca0b023ad846369397ebdfb83b595c +size 80226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging-cookbook.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging-cookbook.html new file mode 100644 index 0000000..3296ea2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging-cookbook.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34a6c56026626e0abb8824b3c0dc63db3df1ab672a711cb1c3cba3edd5aaa402 +size 518740 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging.html new file mode 100644 index 0000000..7a8957d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/logging.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36f19dc4818af91c162fffd226b9bd18e753979a10cc02e7810bb063236d2d11 +size 129849 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/mro.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/mro.html new file mode 100644 index 0000000..89c3386 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/mro.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54e9868978e30d3a72ed40deff2d2400a5124e28ca2c0c1cc96029b384a7c95f +size 77219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/perf_profiling.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/perf_profiling.html new file mode 100644 index 0000000..2fb79d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/perf_profiling.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bec4a900b3f4ff5c1e91e61d81aaff2fcd956f46f2dd5345ae8a5f758aeafcb3 +size 36250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/pyporting.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/pyporting.html new file mode 100644 index 0000000..9fe089c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/pyporting.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41db92266cd52ff6c4ab4b1ae1cc56c569d8b4a663c6c4f06f3eaa89844ee8d3 +size 16995 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/regex.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/regex.html new file mode 100644 index 0000000..0078516 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/regex.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6764f6c39bf26c6f2976057f3eb937d3d3ec8bf44fed3594d9c51748b328ad +size 170135 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sockets.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sockets.html new file mode 100644 index 0000000..4574521 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sockets.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2813ff2d5e996dbef37654f9bcd2f12d9575f39b44bfe58456a3b59883398f43 +size 51494 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sorting.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sorting.html new file mode 100644 index 0000000..65018f2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/sorting.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3400f3192f86bf5101bf3efbf8cad7def9db7602533f9ed08b6807f0d1cf8fa +size 58373 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/unicode.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/unicode.html new file mode 100644 index 0000000..dbb7dfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/unicode.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9a84772855b575c2033e04345146b1524f1e5a9cfe3502037172f55c5de5a35 +size 88589 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/urllib2.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/urllib2.html new file mode 100644 index 0000000..ecb6a84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/howto/urllib2.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:943aedca607fcf76e70346febae87efc7993a48d818e99f957fdf51f274397a0 +size 84557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/index.html new file mode 100644 index 0000000..88388af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee8f429889a1dd560b546c42ddc599c7166f6f006ea19bfcefdfe0770d4430a0 +size 17637 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/installing/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/installing/index.html new file mode 100644 index 0000000..9551c18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/installing/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7deae4e347fd9ab48e9ef2cfe42d677aa0c9ee60d69b3c67eddadeffa4e5a7 +size 33955 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/2to3.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/2to3.html new file mode 100644 index 0000000..e9cd912 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/2to3.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d0cdb19bedb0295a1f851c7c9070e574489b2159d6a38ae61000b5f2687557b +size 78377 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__future__.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__future__.html new file mode 100644 index 0000000..82cefba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__future__.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d07c13ee25b3c902780521ee607a67d77466550f74d35fe678f103c040ba7c41 +size 30685 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__main__.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__main__.html new file mode 100644 index 0000000..e415299 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/__main__.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b65ec57b71dce458e6a5049684921b9c2d0fb598dfa6f05a50a6ea133dd0d89 +size 52163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/_thread.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/_thread.html new file mode 100644 index 0000000..b6d67e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/_thread.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85fb8c01c266854940d693cb376475275ddf1f67e20be02f35cc9e9a4e12252b +size 37333 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/abc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/abc.html new file mode 100644 index 0000000..14440f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/abc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87ebe20aed7dc47bd872a99a1372a54b09c503b560205b8fd98aa172ccc6905d +size 54188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/aifc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/aifc.html new file mode 100644 index 0000000..126a074 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/aifc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93721da03863c64ba676a191ebe6e61f7bb004ae29e72a564b8cc377c6bc9596 +size 42331 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/allos.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/allos.html new file mode 100644 index 0000000..1afff12 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/allos.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4377517323b65ad7557be8c97317ea2702a934764c59300d4c4d1efd84070259 +size 41823 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/archiving.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/archiving.html new file mode 100644 index 0000000..fb86e11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/archiving.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7866dc5491751e7320b4d6885a3c798ee483d376a2876bb2381a3111484e2ea1 +size 23354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/argparse.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/argparse.html new file mode 100644 index 0000000..1545a4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/argparse.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01d1b84efdebe6bd1851a68388f01e5f0fa3bdb9c144d74c337812d575d151f1 +size 334698 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/array.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/array.html new file mode 100644 index 0000000..dc0ec7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/array.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3360cb06e83b39d82b79854c7baf16ab4b77d8e7ff4a5d26857b07e07deae797 +size 45000 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ast.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ast.html new file mode 100644 index 0000000..376a831 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ast.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16d6bf10948640f5babc5a3f1bc1264d6e4de5b4e918a8e182bec47bd6191b0a +size 339797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-api-index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-api-index.html new file mode 100644 index 0000000..6f9ec3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-api-index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b186b1f06750c551c3b446121fdb2e46f12302e2201cdc7d2d6e8b9b9494af8 +size 35631 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-dev.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-dev.html new file mode 100644 index 0000000..966eb6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-dev.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ff9b864826bf01d7a9303f75418bdc763497b3b2865523d639a3393b9b8767b +size 43405 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-eventloop.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-eventloop.html new file mode 100644 index 0000000..c367a4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-eventloop.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c235264eba542d49f60c2cecb99903f7067154ff37cebd7d0ae141d39af17e9 +size 229950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-exceptions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-exceptions.html new file mode 100644 index 0000000..25d96a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-exceptions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0642318cc0cc61c88bafda249d3c9b9bf9c17ff6afafd8b49fc36b982f420a3b +size 23520 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-extending.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-extending.html new file mode 100644 index 0000000..0b3f384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-extending.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a5d50a95fcbe524ee1f925195b19892573aa6b3bfd1310c88999ddd7a46c6e0 +size 28077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-future.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-future.html new file mode 100644 index 0000000..2b34ca8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-future.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa2aad4d4dc0efec2735ae7b21e7078a19f6012adde2afaf146ce46146c2a707 +size 45401 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-llapi-index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-llapi-index.html new file mode 100644 index 0000000..48f2caa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-llapi-index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca6f55a4642ef872b37f44720d8720924940cb43ef274b7c707c099bde8a525 +size 72079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-platforms.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-platforms.html new file mode 100644 index 0000000..c5c0a36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-platforms.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af062ed4e9bf8fb6bcce33fe6bcbfc17fef70841d522fc4e569daa0d8ab48268 +size 28256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-policy.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-policy.html new file mode 100644 index 0000000..31d10fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-policy.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28183b813abb6987a026674412c43fa8de48ecbfecd2c82ff9434e13db36c1b6 +size 47682 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-protocol.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-protocol.html new file mode 100644 index 0000000..83aadcc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-protocol.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:425a01e1f17de80196530533886f661630803399787ea0540473af9c385a90c8 +size 130357 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-queue.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-queue.html new file mode 100644 index 0000000..7a3453c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-queue.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6dfcce1c13929a2e993bcfc475a2188a3ec4efd2d1f6b12cf465a4bfa228a48 +size 38656 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-runner.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-runner.html new file mode 100644 index 0000000..3f8af94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-runner.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3117399b249ec303bbe23c90f175b3ddf530f225f2ddb67d165d8069fd4c7069 +size 36146 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-stream.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-stream.html new file mode 100644 index 0000000..5670881 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-stream.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:471e1136a545044ad6065cda613744e597aa56898b06275b2e73a988cc0b7b90 +size 82864 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-subprocess.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-subprocess.html new file mode 100644 index 0000000..4544932 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-subprocess.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2888b2f860d7e11a3956f4d58bcd38a7de6f60f56bcfefd220728c1bbc7d075 +size 56913 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-sync.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-sync.html new file mode 100644 index 0000000..f7f986f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-sync.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb74035e8f19a1dcdadaa3af0dc2ee90d8240f6e98b0a56f8076d348572be95a +size 62528 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-task.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-task.html new file mode 100644 index 0000000..477d382 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio-task.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:635412f78c12e5bb86fd999fb012bff3d15acc54d7d80484fa6558d4358803d5 +size 154346 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio.html new file mode 100644 index 0000000..e0ca5bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/asyncio.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:217d61c0ae014d5534f49e19ed5d8093b3c0891d3b6ce25f5cf4bc3d4a332b8d +size 24043 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/atexit.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/atexit.html new file mode 100644 index 0000000..70acb1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/atexit.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e5793a49762af1a376b09eb9b5a7962d4a3da2ebad73f2cecbe3c7f40a252c2 +size 30781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audioop.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audioop.html new file mode 100644 index 0000000..c92efbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audioop.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969159d3bea99350809c32e9b4a1c99bcb00de3cb09c139d63b567b4c10983ac +size 53154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audit_events.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audit_events.html new file mode 100644 index 0000000..87181d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/audit_events.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a8ac394c155f5605de86b0f3f9ab9fb64c5d262692e842cf8cd208da23166d7 +size 82429 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/base64.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/base64.html new file mode 100644 index 0000000..553d321 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/base64.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0687368ce7e20d6174c321388659bba909a6e66a403045ff7aa2ddbf586bd7ab +size 55609 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bdb.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bdb.html new file mode 100644 index 0000000..e8ba915 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bdb.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac1317f3a4c880bc3c3ce16be41dd81f96edce8a8643dc21d1c8292e74b5bc77 +size 74990 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binary.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binary.html new file mode 100644 index 0000000..0c2b3ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binary.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b5c781cc577e6439f60a4de3e0c0a02410dedee214bf7c74742eb881272e111 +size 22273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binascii.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binascii.html new file mode 100644 index 0000000..8e71812 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/binascii.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c0fdcc3467da00acf49d635a54e99a035e6f911d2dbbd3c623b4bd91ae838c +size 39718 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bisect.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bisect.html new file mode 100644 index 0000000..3f4030a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bisect.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41f90e99b1562d3e6f9d1772582873cef9543796a1a8598ea33e8e65aa68c77e +size 50152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/builtins.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/builtins.html new file mode 100644 index 0000000..4451f4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/builtins.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:364593ee048feb9e46a8c64731ed30e038fe0108aa4ea4555e3f151f5643ff4c +size 21039 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bz2.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bz2.html new file mode 100644 index 0000000..1366356 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/bz2.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e2d0263da24dd0b4b7ad412befacd719c987426e9e6ead5f2b858150e6da0d0 +size 60863 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/calendar.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/calendar.html new file mode 100644 index 0000000..926aa76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/calendar.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b29ef95c0e03830bc4a5c0d39c6b5217ffbdefd7d416754e47b51c69efb3778f +size 101048 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgi.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgi.html new file mode 100644 index 0000000..cf4bd7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgi.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba875594dfdcece23c128bbc6674c53b29d4707315208b0bb38901a9a49cf68d +size 74915 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgitb.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgitb.html new file mode 100644 index 0000000..6bdf5ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cgitb.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7cdfb30850d63e0551bcb22cabdf3235c0c7591b1c5c0407f6871dea03b3c36 +size 26402 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/chunk.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/chunk.html new file mode 100644 index 0000000..f3b8a6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/chunk.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8bbbe255ab5dfb5b40e33c0f2948a1b846a1acec73559a7fe0bfddb86119424 +size 28800 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmath.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmath.html new file mode 100644 index 0000000..f461a5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmath.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85f162640d38beec02ff5ff980da11059b93c46a6e4c9735aa3cd65475642e68 +size 50796 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmd.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmd.html new file mode 100644 index 0000000..147fdd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmd.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efe7d6df918d12234e712f3406d1410135e66f6e615e0c91ddb97603bc1618a4 +size 59389 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmdline.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmdline.html new file mode 100644 index 0000000..0c69677 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/cmdline.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23a3291f33771154e71e01537db4d77adf4444cca60538135702a043d3a6908c +size 25469 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/code.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/code.html new file mode 100644 index 0000000..ac6df05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/code.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56aa83c3e755822a5859c6b413c43b583563379fd61a8811448a73e8884a7937 +size 42314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codecs.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codecs.html new file mode 100644 index 0000000..920294f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codecs.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cbbbe9f7a9a2e82d3e4f0ea34dd370b5530999b072d95d017c8baf278d9b622 +size 169987 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codeop.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codeop.html new file mode 100644 index 0000000..b91c40b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/codeop.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:256a80f641fefe4cd3e5bbe38b4c4c59d46cc6d71a370eb2c7d81f86c793a143 +size 24731 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.abc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.abc.html new file mode 100644 index 0000000..9d858b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.abc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c2ee8e6e1beee866c432ebae3e4679960fbb847ec2b28e8212a06214248f268 +size 95227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.html new file mode 100644 index 0000000..ea6bea7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/collections.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5ffa24a12a9b5a6fd5bffc6e8ae04a06f05d35cc2ce38403ab7331260c6ef1 +size 201530 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/colorsys.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/colorsys.html new file mode 100644 index 0000000..066d3d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/colorsys.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0479be3bb6cf862c994ab36c7f44e7591ece5866b9ed6f502c2629cb7006c7e0 +size 23510 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/compileall.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/compileall.html new file mode 100644 index 0000000..fb57376 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/compileall.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56328ae5c84d8faa68e455a8211da433b343fb2d3e93ef9b16bd0ceda7fbee61 +size 58679 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrency.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrency.html new file mode 100644 index 0000000..da4fbb4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrency.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:212fca3e2eda3b35ad1eee858a701099f82448cd4d700b9a322726a626a168a8 +size 31054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.futures.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.futures.html new file mode 100644 index 0000000..f7a6b47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.futures.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6c01d942e46c1774556eaaaca759e18cf499f71011dd69d2eddca84ff7a8c67 +size 93343 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.html new file mode 100644 index 0000000..36dc9e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/concurrent.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae59f4e97b8d6bd0440ed3b9eef5e1270799d529a3d9ec310f5782650c5845d7 +size 17516 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/configparser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/configparser.html new file mode 100644 index 0000000..24e4c9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/configparser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81e20d2d90b543bbee03162bd04c193a2adc30dc3cfa771c1ae20f4ae75b80a +size 169828 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/constants.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/constants.html new file mode 100644 index 0000000..6bcb144 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/constants.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bff2299a1e660f933e5cf7398ac12dd756bb44881b10ebead18068b8bb96c3e +size 29717 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextlib.html new file mode 100644 index 0000000..815a0ff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72d3d2c327b468bc136c1563f4c756286d3307636a2fccdedf9c035e0cb71a62 +size 134011 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextvars.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextvars.html new file mode 100644 index 0000000..f12e71a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/contextvars.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8912426d382af0e7eaa0724c131c4410e61d0237a996e27164b5eecd7e4ea886 +size 45360 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copy.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copy.html new file mode 100644 index 0000000..d2ffbcf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copy.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35fd41ce8df06ad8f9c932ca74626a096dfff0084da5f2293847a49f7cf88322 +size 24198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copyreg.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copyreg.html new file mode 100644 index 0000000..82bd49e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/copyreg.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b97dc05c4a4b2b82218723f1568aa4c7e04257a4cb65f1e5a8dc49cb7616c244 +size 24821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypt.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypt.html new file mode 100644 index 0000000..9858d61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypt.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77080895021a371d998d571e475e73db333ea29011dd9c96319b9caf6129ce48 +size 35834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypto.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypto.html new file mode 100644 index 0000000..88690f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/crypto.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:718cd54e334c966c2a67a83e0d9d8217e8164f1c42084436c969f40c71772f58 +size 20694 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/csv.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/csv.html new file mode 100644 index 0000000..ac7db2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/csv.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62c665a61882a0882c3875d6995d17f43d77459ac301996d6a0998a16a719f80 +size 95648 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ctypes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ctypes.html new file mode 100644 index 0000000..56e7c98 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ctypes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5c4842da8b2b0cf3e45491b0ebf93e07cd332f2c545f5e2eec55223edd9bb3 +size 320345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.ascii.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.ascii.html new file mode 100644 index 0000000..0fd8985 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.ascii.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ef185a958c9350600ffc2c1558afcc4d67acb3ade7181e664b632218758501e +size 47341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.html new file mode 100644 index 0000000..6e7c391 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb76bcd3db7447ff8411715876117bab342ce7ef43bf5bff0fad161379dc987d +size 283286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.panel.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.panel.html new file mode 100644 index 0000000..f2960cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/curses.panel.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00f571cfdcdceb9abb796f15a2ce25012c7675e99173d5b2985151d9ec8584a3 +size 28542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/custominterp.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/custominterp.html new file mode 100644 index 0000000..0def446 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/custominterp.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f9871f1714d844f79eca3b08690b03ed4421a853d862ea37759a1638ca9b94c +size 18028 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dataclasses.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dataclasses.html new file mode 100644 index 0000000..4fea62a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dataclasses.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81af30cbfbc66beca8a06856b76ebd606337cc48a8bcc24982d50f057516c498 +size 127435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datatypes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datatypes.html new file mode 100644 index 0000000..afb5705 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datatypes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edf5f2874edc3b7f1a74f835b1f1e26c84b832b1949c6d5ef9f6a5d24d4fe3b4 +size 34028 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datetime.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datetime.html new file mode 100644 index 0000000..30f79a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/datetime.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9559e85d794ce63612f72d2b95025018edd4ff996527ffd53a5f0ad4e6a2774 +size 402162 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dbm.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dbm.html new file mode 100644 index 0000000..98497ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dbm.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b29542e2acd994ddc7e7b7f5f92de757d8fb50295db5ddc6ea92fa1aa5e9708 +size 61789 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/debug.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/debug.html new file mode 100644 index 0000000..df5efd2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/debug.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cacacdd66828ecf364a20f53ac3d999f8964f599e159587e45a214dc7d74559 +size 23346 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/decimal.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/decimal.html new file mode 100644 index 0000000..80d1dd1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/decimal.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7e0a3e3af4e82e102d9db5f109faacd456eec4c7fb71f1f94fd702057afe6a0 +size 289290 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/development.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/development.html new file mode 100644 index 0000000..b743077 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/development.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8118c1f3b6f43d4af3f40b7094e3b3a9c04e11304fbc936868ab1b5646f15a63 +size 40358 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/devmode.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/devmode.html new file mode 100644 index 0000000..41058a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/devmode.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89984dc0bf4cf83929ad6e758a11fc8f7d984aaca6b4bcafab8e37e395b60b73 +size 39527 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dialog.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dialog.html new file mode 100644 index 0000000..1c2d69c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dialog.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:395d7aaff9a42c496da620ecf34b7d9c482a6dd6c80417c3cd82dba3aff33c3b +size 50038 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/difflib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/difflib.html new file mode 100644 index 0000000..da7ae1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/difflib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a0948b2d673ba8d8b60936b12558d3a20866300d5a607847d12524b321b2170 +size 134448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dis.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dis.html new file mode 100644 index 0000000..3c03b9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/dis.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecd8172c996b9a6892405c4b1893cc56b180bd22e4821e7cb0c4cbae4cd4b875 +size 198698 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/distribution.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/distribution.html new file mode 100644 index 0000000..062b80f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/distribution.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12e66a36d7ae3f2e364ee9a10a425200debd2d251eb0e752aee9735b971b483d +size 19668 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/doctest.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/doctest.html new file mode 100644 index 0000000..abde1cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/doctest.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b56e058a4f684601bbb838df0e839d23b0776b49778fb5e97b2c6e1269bf76d4 +size 213952 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.charset.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.charset.html new file mode 100644 index 0000000..44bded2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.charset.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a407724e9ad16623bd93d77dd32483059a3259241a676f9689f8accbbad19f3a +size 38484 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.compat32-message.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.compat32-message.html new file mode 100644 index 0000000..dc64787 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.compat32-message.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e40af1030395f45216571d159dd9662fbff3a9bd7defe9af6fae6580c0bf8592 +size 106533 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.contentmanager.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.contentmanager.html new file mode 100644 index 0000000..c9fb218 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.contentmanager.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de0bcee2944c35fb889cf1d5b88f85a55439ed7db34cedc4c5b2d5d7bcbf96d9 +size 43910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.encoders.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.encoders.html new file mode 100644 index 0000000..328f5e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.encoders.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05b2ad5f657c2e0d60515fd79d573dc2ce7f6159eb59633f2f77a28abad95a37 +size 25028 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.errors.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.errors.html new file mode 100644 index 0000000..8d8fcb1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.errors.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e35b42d0018037933365660504668b3b048fbf14a671c0c62c894261f99ff4a7 +size 31704 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.examples.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.examples.html new file mode 100644 index 0000000..5bfba12 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.examples.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54dc42b8afc7c31c1e726471645b94528bc4dc25a733ab4ca627c8d9be827356 +size 68137 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.generator.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.generator.html new file mode 100644 index 0000000..544fbc7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.generator.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76229ae96a88d3a2e5dee2b0f8d37c7800176bbbacd075c3e63ed2db56ae4155 +size 56412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.header.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.header.html new file mode 100644 index 0000000..da45eea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.header.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c6ba4e8d30fa2e1adbd4882778e69ed3c0d1f693c85d6fbe0392bdc07490f1b +size 44426 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.headerregistry.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.headerregistry.html new file mode 100644 index 0000000..bed35fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.headerregistry.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5488a19cd96124ad9cdc407d96a58819c577277028b0ff30c94070552128b69a +size 74732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.html new file mode 100644 index 0000000..b44ba0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b67358be01e1b48eba72d20c76bfb6a639bc775e1ad5959e9153563fff809803 +size 37046 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.iterators.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.iterators.html new file mode 100644 index 0000000..069a29c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.iterators.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b4a532f2e254eb4b4fbabaafb8e9163707679b1d48b1e277c78cbe3e4f2d27b +size 24470 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.message.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.message.html new file mode 100644 index 0000000..d941f8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.message.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f662c7d15499e5f433ef1057f17c7d588c7dec8aa566d2aebc02ced914e42ab6 +size 108976 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.mime.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.mime.html new file mode 100644 index 0000000..dac3cf3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.mime.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31435da9e19a0b928e682573f26c743ea7fee5544c97349746709ee1abf442f7 +size 52531 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.parser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.parser.html new file mode 100644 index 0000000..f4df8f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.parser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e0e904cc93bacc9c6f6dd5def13b0f686925a00a2e580c881f6ca2c6b8d509b +size 64905 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.policy.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.policy.html new file mode 100644 index 0000000..74e3f9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.policy.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f669eefcc10704930137dae677f5c6c6f5ef17926d7d0632d667c0fd3bbf8b2 +size 90813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.utils.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.utils.html new file mode 100644 index 0000000..6129d23 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/email.utils.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:293dd84bc2a4c573c75b6d3a73a3ddeb2960d9c858ed7e9ad816ded293b27c8c +size 48303 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ensurepip.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ensurepip.html new file mode 100644 index 0000000..30ca93e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ensurepip.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18e89a4ed327e276f48b0ad5336cdb76073ab131db9d437b6783b12ccc4bc6bc +size 30710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/enum.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/enum.html new file mode 100644 index 0000000..c687f37 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/enum.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6977df33294bdfb78b730aac326770c03a443b5126940e67c3f20d94e1d8c1ec +size 137185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/errno.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/errno.html new file mode 100644 index 0000000..1a24684 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/errno.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc97b5a40ed7df303e76f7ccd2ab0f303885fb697f5d662774173e03c231910b +size 70842 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/exceptions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/exceptions.html new file mode 100644 index 0000000..9d5458d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/exceptions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1073b829a6169416c8bae36ca92d45e38d6ff7cae0345fe18ccaceb3bddb25 +size 141701 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/faulthandler.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/faulthandler.html new file mode 100644 index 0000000..9afeeb3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/faulthandler.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ab8dc3f210bad300af0c5781a5ab1b4b7153eceb0abb1e3272247b9aebe8d17 +size 39226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fcntl.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fcntl.html new file mode 100644 index 0000000..06a1e55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fcntl.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d542d3a5ec7ab779308f688251532cb5f940fabf055c639a4c19fc38099876bd +size 45798 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filecmp.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filecmp.html new file mode 100644 index 0000000..d0179b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filecmp.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deaffe0e84945017f37a7bfab9120e6f11619ce12fb9a8d14e3b14513cec40ce +size 38916 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileformats.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileformats.html new file mode 100644 index 0000000..7c6f534 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileformats.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c10b0a4051bf1279478aaed946d994ba2e7409f32874dbfccb09388813a185b2 +size 20185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileinput.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileinput.html new file mode 100644 index 0000000..e4c5600 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fileinput.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:729dda95469d288ec651fbbbc139fe34641714a4030954f6bcf0c382fba49463 +size 46959 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filesys.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filesys.html new file mode 100644 index 0000000..29022a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/filesys.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3daf46c50181f0746f859951c8c07b42930498c75cec19d4f18252ff6a0675e5 +size 23413 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fnmatch.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fnmatch.html new file mode 100644 index 0000000..da2a91d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fnmatch.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6a40bc75c961dc1ec661ab9bc07fde70046e5a4387353efbdec7c824a7dc652 +size 27991 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fractions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fractions.html new file mode 100644 index 0000000..3aeb6b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/fractions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c15b44b73b11b151657455b6baa9adba29616cdb7bf7530fb88ee0cf246668fc +size 50070 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/frameworks.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/frameworks.html new file mode 100644 index 0000000..f422bde --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/frameworks.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bfbba2b4cd82b304c0831998603c214dbb26d06bdb51d68c9eee3d919d317fd +size 24056 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ftplib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ftplib.html new file mode 100644 index 0000000..8995a32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ftplib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:592fe27772fa6f0f24721e9e4a0176cb11a91652b0c43a45b257e0a487eda5c6 +size 86974 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functional.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functional.html new file mode 100644 index 0000000..389afb1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functional.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54495063be66bef356b6fa367afc34d54085280c6251aa3fa06b44ca4d27d9f4 +size 18382 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functions.html new file mode 100644 index 0000000..9497432 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8959982adf9c2e351ef1fdd68395b48f91e45210679a78cf483c5c441ad1837a +size 299211 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functools.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functools.html new file mode 100644 index 0000000..af08f56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/functools.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a3d1399ffc04cef468c24e41091fb6dc9f21ebe670f2e2e3c8660d2aee1c3cd +size 107324 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gc.html new file mode 100644 index 0000000..c0063c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e3bf4c5bdbe91876cfad0ad925fa9b85842768428525f2a7911108a6cb53131 +size 49081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getopt.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getopt.html new file mode 100644 index 0000000..6848335 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getopt.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de3f195ddeb94913141b18a4370ba5a433fbe40e0da5940285c16f676e231a13 +size 35980 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getpass.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getpass.html new file mode 100644 index 0000000..fbd96f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/getpass.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57fc24f1025b10496ec2eee0d84df26a584d9c8ec169ceffd44893ec32f40c5c +size 22742 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gettext.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gettext.html new file mode 100644 index 0000000..138e0ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gettext.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b306457a042b56c2bfede273d6144bf4f51af89e96dbd0581b5c7da4f1cc40 +size 93031 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/glob.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/glob.html new file mode 100644 index 0000000..04f282a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/glob.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58f9b97d7625b124bc4efc0ce7d55cba3e4ba72e1ec1537cc043d3348000c0c0 +size 35228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/graphlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/graphlib.html new file mode 100644 index 0000000..921d91a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/graphlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82d79d8c4024f95274d746f0c453cac04a368ceda2849193be20d5170b8326e5 +size 41631 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/grp.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/grp.html new file mode 100644 index 0000000..649ba9d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/grp.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35ec0e3ce5ffac9a8e2e853807f2e35a6fd8a92ad5eff48a7efba4cc31062f6 +size 22330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gzip.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gzip.html new file mode 100644 index 0000000..140dc7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/gzip.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97a3106bdaf798d65f09fe7d806371994f1d0eeab12b673486ad262d16d95c2 +size 55029 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hashlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hashlib.html new file mode 100644 index 0000000..fab3368 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hashlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ffa4c6163a158e520fdd9b91781212c9866e44cffb695475adcc322038a60aa +size 121826 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/heapq.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/heapq.html new file mode 100644 index 0000000..db69d00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/heapq.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6b85e2b0755b51116dbce9bde6ab6783c55b790cf034ec473db5748235c1fd1 +size 49772 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hmac.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hmac.html new file mode 100644 index 0000000..8b0ec34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/hmac.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3703e54536249c51595532ab58513b7aee9660da8015a4459b1e0f5f76796fc5 +size 30834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.entities.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.entities.html new file mode 100644 index 0000000..592dd73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.entities.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b606549af4b2ca337d5cc4d5cb12ed5156a1f88681237e7437f2c8e9d3edeed +size 21268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.html new file mode 100644 index 0000000..56b85fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea97c722559351f5271b6e3da5041fe7c4da11bdf5cc23956e24a4559dc8ccc1 +size 20989 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.parser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.parser.html new file mode 100644 index 0000000..c6c1cf8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/html.parser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48e632fe7ac9e8d724de771661930845e98b87788908704d2ce64d5e32e9c2d6 +size 55024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.client.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.client.html new file mode 100644 index 0000000..2608cb9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.client.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2238ef5f9bc5e1b279d290cb3f916b28786f4ebc736d55e7f3ebfcc54ca63361 +size 99626 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookiejar.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookiejar.html new file mode 100644 index 0000000..3eb0f7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookiejar.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:329bfc828f7a6e1ba9efe179b68ca6b70f86180ae36e02112f17f054ef6bb22b +size 123662 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookies.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookies.html new file mode 100644 index 0000000..d5c1b1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.cookies.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43a60e6abb9b8683c97b79d1870f439ef58f15021a06f4f40ac6309e9f08e973 +size 56796 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.html new file mode 100644 index 0000000..db32476 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10261f83888646d2e06bffe7f4857143d85332f966cad7c765bbba616841304d +size 64039 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.server.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.server.html new file mode 100644 index 0000000..92374ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/http.server.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d745f113414a5250d9d23197cb0eb8493d9b7d4f15fb71a49e4a3c3d2ca676 +size 83821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/i18n.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/i18n.html new file mode 100644 index 0000000..bd478ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/i18n.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a18c4afa9d934ab0d4bd72d67cbb3ccb291fcfdce2f52a9c883917b61b17ccab +size 19661 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/idle.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/idle.html new file mode 100644 index 0000000..e0fc36e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/idle.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:798b5e246fc17c0acb0d2e4893fa19dc97f8d37ff82cfdac495bc7642bfd87a7 +size 84022 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imaplib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imaplib.html new file mode 100644 index 0000000..ecd2606 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imaplib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88907e5d09dd661c65ee329d478b56ea5853582e2e3eb1af3c55fdd63b6f0ae9 +size 94835 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imghdr.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imghdr.html new file mode 100644 index 0000000..a5fcd4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/imghdr.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7c514d5761619903a5466aab3ce8a78bc4a44d9feda7f054c7804374cda85d7 +size 24208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.html new file mode 100644 index 0000000..1e472af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa872eeeb9e251e0c0c693fab0b0f22b6b6114161f6afcb584e9aac45d383715 +size 222355 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.metadata.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.metadata.html new file mode 100644 index 0000000..ba9d09d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.metadata.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c51cefa6fae2a343c54448919915e6011454146530b8d090ad854dbb0ba284 +size 56621 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.abc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.abc.html new file mode 100644 index 0000000..51b90fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.abc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:894ba350617ec5ff90e71d3d0ef7b1476ec1b6875b76a37210800d2e05c755f8 +size 36659 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.html new file mode 100644 index 0000000..b2785fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/importlib.resources.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc6dfc0ec814f2728a27589d88b26b9d1c5cd0e0a61ea9c11d9477fc5dc8cd2e +size 45972 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/index.html new file mode 100644 index 0000000..7306bca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49c72733d3608173c93e3e51df4b9f49669e8aef6aa3836800ef21134de8a3a6 +size 83032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/inspect.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/inspect.html new file mode 100644 index 0000000..27a10dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/inspect.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8a144b680da99b22d7a152a09e105392ee59c4ac044d2aac3d58e6fbcbbdc62 +size 202688 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/internet.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/internet.html new file mode 100644 index 0000000..768e04b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/internet.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3fef2b6c67b5ec00f0dbe7cb2a1d06f96aee4111ffdebf2ffd90e7fc82c2815 +size 37602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/intro.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/intro.html new file mode 100644 index 0000000..17c3b66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/intro.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f15f455ed4cff37c7c845637fbf83023d5887e25a6cde7957908970eb00ae167 +size 25311 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/io.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/io.html new file mode 100644 index 0000000..2b09f9d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/io.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a686dba79ddb88c6f8ba20289efdc6222710e765bfdf29aae1fc21ff749c454 +size 170119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipaddress.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipaddress.html new file mode 100644 index 0000000..ae52683 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipaddress.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0100a0251fa44af3b0c42299516a015044eb2dafe10639b11cc8a6d74e2aaa60 +size 147204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipc.html new file mode 100644 index 0000000..8cc0ead --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ipc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d2e1bc03aba7ad6eb1d3bd48a1e47f82af05af688cc31fb365d01e25bbd587 +size 18798 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/itertools.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/itertools.html new file mode 100644 index 0000000..a754925 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/itertools.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a025b75a4c8ec59ced2b2343b2ba085ea713d4ec93e7c1960f7a1bc046d17397 +size 160620 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/json.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/json.html new file mode 100644 index 0000000..8e59bee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/json.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df0f9c088846f3b849ba1c11c41c93d7fff65ad94415427c89b4d10e6dc8adbf +size 107659 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/keyword.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/keyword.html new file mode 100644 index 0000000..d02b36c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/keyword.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68c81dd97dbf4d5379af16a4c5c25f2a15441635e251bc9eff59baad91d0b409 +size 20859 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/language.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/language.html new file mode 100644 index 0000000..fdfd8c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/language.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6632261d8729b5d9fec3625921082e0bef249cbce5a6d21ed8ff29ef00ea2671 +size 23515 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/linecache.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/linecache.html new file mode 100644 index 0000000..6ec5366 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/linecache.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5bfd4c4b5fb887ed01132173f69a39c6d690c5c6ebcd1b0f6a1b63cc27ed513 +size 24313 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/locale.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/locale.html new file mode 100644 index 0000000..6352309 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/locale.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba218c8ea70d00c7d305b847643a034e8594195f62042dde88a64c548d2ad8c2 +size 98065 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.config.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.config.html new file mode 100644 index 0000000..b8ec999 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.config.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fb51c5695e86dee5662bfe5a422c04e35e329fb45543bdcac21d85eedd2a3fc +size 117117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.handlers.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.handlers.html new file mode 100644 index 0000000..bf26b51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.handlers.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:672b2c3f622b3880a209a9b751f1dbe2c4673d4b534f71e340da7aa306ace595 +size 157724 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.html new file mode 100644 index 0000000..e852f32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/logging.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22a1371655ff81e3a27ba31ee1b2a33b2990bf37a5c4353516c32879a020ee87 +size 194564 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/lzma.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/lzma.html new file mode 100644 index 0000000..dc42011 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/lzma.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5eb996e9fce7f6e7201601ece65cb30cffbc03716e13afb8e03922a73f8b60b +size 74547 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailbox.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailbox.html new file mode 100644 index 0000000..6eafd73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailbox.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1b41728b79762fb532bcb911aeb1c4551c6587da67e9bd7bd19d3af448fd8e8 +size 181582 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailcap.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailcap.html new file mode 100644 index 0000000..b6266d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mailcap.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80617491091838f90f22d2b9953bf65d542dc25efd6856bbf4d54df95b2b6798 +size 27308 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/markup.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/markup.html new file mode 100644 index 0000000..531e141 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/markup.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe61ceca4ecea004aa12730f23cbb6d4fbfdf702166668d6a84afb0afad4838d +size 28849 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/marshal.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/marshal.html new file mode 100644 index 0000000..10bdf52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/marshal.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca7943f5e8fe1642b372fe01ef578e591112b45f74d928f76deff3723adcfef7 +size 31033 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/math.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/math.html new file mode 100644 index 0000000..bfdadc5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/math.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa772ba5362af9eabc464747d373c4d627bc366cf7486d12422bcdf186e552f5 +size 97023 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mimetypes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mimetypes.html new file mode 100644 index 0000000..a160784 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mimetypes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59916b5fb4422703eeb6fc32e2449c59e742c5cff02f786afd930ad918bb8b3c +size 47239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mm.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mm.html new file mode 100644 index 0000000..b14b6c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mm.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0147d52bc13bf8af59689fdd8bba2f1d6740f0fc51578d839476e612d3859db8 +size 17307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mmap.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mmap.html new file mode 100644 index 0000000..b4c467f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/mmap.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72c02191e246010b04daa868e170bc3777d272f8ed41e71220d9e1c8723305a1 +size 66630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modulefinder.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modulefinder.html new file mode 100644 index 0000000..52833f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modulefinder.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30b9269e29ef3221daef67cde675c6a35050a8824ae7072b5f81d847ddd31ddd +size 30296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modules.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modules.html new file mode 100644 index 0000000..6ec1ada --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/modules.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee370d61aa5a13ca6916f2ba8277ec28047a3f5f5e11a4e2b13a2a6c3e789be3 +size 23399 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msilib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msilib.html new file mode 100644 index 0000000..5d2f6a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msilib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba0b291d01c230b62aa041b2163e360822503a9abd048e454ce712c49b4a87f2 +size 85735 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msvcrt.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msvcrt.html new file mode 100644 index 0000000..5dd6af0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/msvcrt.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1526b49db9501b96887b11e0cf08d01ae7a4c8688892d3b8ea81c4efa30ffa5a +size 37410 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.html new file mode 100644 index 0000000..222b6c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ccf5728262dc2056aa5be60c9ea64439533b532269dfcc99cec3b7d723309ac +size 434770 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.shared_memory.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.shared_memory.html new file mode 100644 index 0000000..269241f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/multiprocessing.shared_memory.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa951f8a36fe0493a32b18f7593dcd15cbaddc5b68dbe79108c022bce624de46 +size 73774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netdata.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netdata.html new file mode 100644 index 0000000..f891a54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netdata.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a87059c019494fece8be2ac1ce4ea068e737c5544012a583e93230510ce9eecc +size 26521 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netrc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netrc.html new file mode 100644 index 0000000..0eaf73a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/netrc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f78f6f1c64ae898c31d8b1480bf1187a7f3e8d0cca178a90b50ed8b90c1e521 +size 27173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nis.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nis.html new file mode 100644 index 0000000..0682ecb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nis.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:375fc57b776bbb95d39145c5fbb05b639edaa39261e12c2d2d6ad0ad58648e48 +size 23724 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nntplib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nntplib.html new file mode 100644 index 0000000..8eec32b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/nntplib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfd63d205d8c4cc65fe6005f79dd22a06967a985fc2ce2f489e5870019a6da6 +size 93916 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numbers.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numbers.html new file mode 100644 index 0000000..2d8f821 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numbers.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7594beee372077aba913c45c4d026f7de5489ef328bfe6a3c30dfbc47239ba1 +size 53156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numeric.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numeric.html new file mode 100644 index 0000000..d03a7a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/numeric.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de46a93791c4c28681180f94bcc1444c90399c7133c2079e776e5d20be8d57f +size 26459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/operator.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/operator.html new file mode 100644 index 0000000..96251e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/operator.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8cc193d73dff47ce36b12437531b29001f8c39b3b191542499a1eee1f0db50a +size 117914 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/optparse.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/optparse.html new file mode 100644 index 0000000..ddd4621 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/optparse.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35bfaebb1a4a94c03f68e7d283de65ea0d4257ed43a4643542aaedaaec2a9082 +size 279210 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.html new file mode 100644 index 0000000..6d7ac71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d373a73867236b47e11794ae4fc9a0f337ec930480a4931ac7db186a648f57 +size 682048 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.path.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.path.html new file mode 100644 index 0000000..8062ad6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/os.path.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8480215618a3360f050a65ea9d08fce0e3a730d0e5ef4e96c793011c53edbfac +size 78405 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ossaudiodev.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ossaudiodev.html new file mode 100644 index 0000000..8d60d91 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ossaudiodev.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1815c15af5411da4b0a6694607c5b470cdd5a012f3492908695ade067fd69cf6 +size 63814 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pathlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pathlib.html new file mode 100644 index 0000000..13ff8a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pathlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba0ba479b30468c05599023fd711ecde64daa17cffa43aa0353f5e1da767aead +size 210477 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pdb.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pdb.html new file mode 100644 index 0000000..2969606 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pdb.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e220adeb89235f65fe753e0d73f0514b3be373d367d84a303f50ad5c3c691b2d +size 86201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/persistence.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/persistence.html new file mode 100644 index 0000000..42cda71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/persistence.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a517de855831b5f0cea143828c9802cb82cf8d91b343d66bfb5be6424865d38 +size 26481 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickle.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickle.html new file mode 100644 index 0000000..81c5055 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickle.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb507fc0e4cfb837b42082822ae55be8f86b37863f16af16ce749010c60884d6 +size 171337 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickletools.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickletools.html new file mode 100644 index 0000000..fe822b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pickletools.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a66320a53033b95285b2919efdf85180259867f55c90655ce4bbf6a840003af4 +size 29455 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pipes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pipes.html new file mode 100644 index 0000000..d9e327a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pipes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fc9b36659c48bec6e1bc8504ec1bee43812a7e54d947197bee150fc34f87a41 +size 28355 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pkgutil.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pkgutil.html new file mode 100644 index 0000000..7502537 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pkgutil.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab367063322bd07538997ffaf926dcc6ddedd1bf8362850514966bde628ab775 +size 46219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/platform.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/platform.html new file mode 100644 index 0000000..b24d2da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/platform.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdee6abf1f23e2ff67441900a552d0a78e64247f28c3bae3869232dff564f55f +size 52284 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/plistlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/plistlib.html new file mode 100644 index 0000000..94d928c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/plistlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:365f8157d732ae660b2fecd26c6eae2231951166cef5826fafa8d99548de91c8 +size 36781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/poplib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/poplib.html new file mode 100644 index 0000000..fa1f40f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/poplib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1007268089d218c80deb052ae06dab7c352089bed2dd2e1af11725798defb024 +size 48005 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/posix.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/posix.html new file mode 100644 index 0000000..c9dc649 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/posix.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc2e6d830de8cb9dc6330e66673abef93bd17cbb53b98c1963a716596675e17 +size 27499 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pprint.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pprint.html new file mode 100644 index 0000000..db5bbde --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pprint.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e04fbc56ad687930091f1399d62ae9585b29a2a694186f34104371c320ab1b12 +size 64089 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/profile.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/profile.html new file mode 100644 index 0000000..198e0a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/profile.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ed0c588fa4db2cedfdbee096c19db6b67f789bf43cc348d3773a96e3e4af3a +size 93256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pty.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pty.html new file mode 100644 index 0000000..51f8cf9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pty.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f394cb734c54a2ffb63f0b323b5f92fd7e3ca511bb3446b9f330971cef92198e +size 30928 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pwd.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pwd.html new file mode 100644 index 0000000..30eb9cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pwd.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aba3db9b6364f84b6f306cb47736fb9c79642bda3b0da07ea951f0095a1a2a26 +size 23167 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/py_compile.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/py_compile.html new file mode 100644 index 0000000..fb905e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/py_compile.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad3b82d972445934bbaa53b3a5bf44c2b075d5122f0d9714170a29d9b8aa88d6 +size 35390 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyclbr.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyclbr.html new file mode 100644 index 0000000..3793da0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyclbr.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb6e51203eec22ed46d515c95b1a858e4945085aedb970dd6da8e2b49b59d20a +size 31110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pydoc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pydoc.html new file mode 100644 index 0000000..4aacdaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pydoc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f3d2ca8e9d4b9edc4440f25c10c3dc2cf8c9c561aacd5f58822a6749ab71011 +size 25298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyexpat.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyexpat.html new file mode 100644 index 0000000..9d12350 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/pyexpat.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb78c709308a59345c7145ff44c6f8389cc0b75a7286ced5691dfb06858525c8 +size 121622 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/python.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/python.html new file mode 100644 index 0000000..112dd20 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/python.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01dacbd9b3c96f07b162b9d24bd06be2e6f71ee25a71547a651c432b1d50280 +size 33279 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/queue.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/queue.html new file mode 100644 index 0000000..49a10a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/queue.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bf2b93deea3c924e242fdfd35b83df41fe180bdf87a67c67ecfde7fd39d5b93 +size 50446 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/quopri.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/quopri.html new file mode 100644 index 0000000..4b28dac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/quopri.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54cc8cd89c1afbd96d30c528019d1632dedcacc7ec929809e7da374a95fac2cd +size 24886 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/random.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/random.html new file mode 100644 index 0000000..7317b41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/random.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41a362500aab4a88bf249ca9d71a80387e9f92820125ef069636f6a5beb718df +size 105701 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/re.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/re.html new file mode 100644 index 0000000..cdd8064 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/re.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d987fda9579decc967a2dd9d4bc6964d8154a3782ab0799b8f8d777df14c993 +size 243279 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/readline.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/readline.html new file mode 100644 index 0000000..5d11a61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/readline.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7687ed94b1908c762d296856ff0beb36a5018926bd816b8368509ea71676e29 +size 57478 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/reprlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/reprlib.html new file mode 100644 index 0000000..a4d889b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/reprlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ea471e4e6db3024f42ee2f069c14336bb5e2fe105ec38524a0d14742aab0c77 +size 47807 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/resource.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/resource.html new file mode 100644 index 0000000..3632cc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/resource.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:789913e11e7f2a19f09c0c064b946bda84ea1c9b64f8c7c47657a58988d9f452 +size 56057 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/rlcompleter.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/rlcompleter.html new file mode 100644 index 0000000..0edcf9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/rlcompleter.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d3fa11cfca8f05f00dc597c43f7210948c7ada3c9e43ea1194dd8be39fc5f8c +size 24743 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/runpy.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/runpy.html new file mode 100644 index 0000000..47fad0b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/runpy.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c902dc8e5643bbce6c77d3d5a65ee0abc3058f234ce885d16a136c77d734a50 +size 40159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sched.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sched.html new file mode 100644 index 0000000..3f29a93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sched.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff36ed4006995d052fb9d1ff9ec9755ea1fce3aacbd0dab3dcc130074df267b +size 33526 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/secrets.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/secrets.html new file mode 100644 index 0000000..c4fda8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/secrets.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eedb85abc524346e8bce13bc676effd214d70e1db420e0614cf4cf641a5e7716 +size 36904 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/security_warnings.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/security_warnings.html new file mode 100644 index 0000000..ac16e14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/security_warnings.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9138b7b8bda36af35449866d4779295fc982b026ead68f8c35853006dd89bc0 +size 23522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/select.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/select.html new file mode 100644 index 0000000..30ff7af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/select.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8c0e88cd97bb2f89d2b16824e8b3220c16ecb2c77927fac27350fb0198b6ce6 +size 82697 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/selectors.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/selectors.html new file mode 100644 index 0000000..1181068 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/selectors.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98da484673eea8360feacb482ac9d487011aaddfbcc35cfc919223648ed43ef1 +size 50018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shelve.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shelve.html new file mode 100644 index 0000000..8380eea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shelve.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7c3e683c40b94f01126f84008b55d55bf237c03f9e9a4de07ea901630f020b4 +size 44046 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shlex.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shlex.html new file mode 100644 index 0000000..3977cc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shlex.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cec3288e210822a676d459e969653339c41174112796a3d90f3329cf68fef0be +size 69438 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shutil.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shutil.html new file mode 100644 index 0000000..ccda614 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/shutil.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9cb6c5f5e90a53d735f7e13b11bd123d455cb1e29e88b9cef74419c0ffe0a45 +size 115061 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/signal.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/signal.html new file mode 100644 index 0000000..e2d597b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/signal.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:affe81c977649b4357cc2e1de61509aefc373514d39a878251b8af9d0c4707f9 +size 112056 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/site.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/site.html new file mode 100644 index 0000000..4ecf5e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/site.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7dc89b36b1beec9bb82d0ffcb54fa1d2ed61f594431f76585b9afd137bb6495 +size 47917 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/smtplib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/smtplib.html new file mode 100644 index 0000000..5c21881 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/smtplib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55fa8c22cab58d32130036134cc3df9bd341dc145a4bfdcca51cce1ecca7d08e +size 89008 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sndhdr.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sndhdr.html new file mode 100644 index 0000000..b60f6b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sndhdr.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf5181e87af6e7c294f9a02fc6d188d819926bf27fada1a9f4e0065ac54a2b4a +size 26986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socket.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socket.html new file mode 100644 index 0000000..a4f9d78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socket.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c87e5ff66805b865a3babb1d75be475cb5bfb7512c4594fc76bc58199bb54742 +size 295375 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socketserver.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socketserver.html new file mode 100644 index 0000000..89e47da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/socketserver.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5da77ec0fa54d3927b794b1d560445a4643d340c46e0b058fda8a51301c7a37 +size 108312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/spwd.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/spwd.html new file mode 100644 index 0000000..2144574 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/spwd.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6e727095525bbf1deeec087570907ad3b456a266f4dbe2111930adaf7cae97e +size 23607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sqlite3.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sqlite3.html new file mode 100644 index 0000000..c13e98e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sqlite3.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b077aebf5f3c7490fe22dcdb59c45437d16b7698de7d2a3ce86379457cb0880 +size 313126 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ssl.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ssl.html new file mode 100644 index 0000000..61ab56d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/ssl.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68f66eb2d35483ad7cb9783c46ae73208169f113976eecbf78a8a9e634592a4c +size 329122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stat.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stat.html new file mode 100644 index 0000000..48ce78c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stat.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:278568a73e9966c6e00728f64eb78068ab05355be0e94becbd103ae632bcf1ec +size 65082 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/statistics.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/statistics.html new file mode 100644 index 0000000..e9a8593 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/statistics.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6778a29e33bb766c70dc199e6a89e62342e712e146b711735702d1dc1ddc2f93 +size 150217 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stdtypes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stdtypes.html new file mode 100644 index 0000000..61b6bf6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stdtypes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2e916cc1d9d406723159f62146db077d78a6d65bffc7b6bb9b2ba968d1fa1cb +size 658770 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/string.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/string.html new file mode 100644 index 0000000..6f59602 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/string.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1130971c71d1cfed46bef8dd02b605479ba4de671de687b3c4f626e5837e6dae +size 120174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stringprep.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stringprep.html new file mode 100644 index 0000000..5127483 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/stringprep.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fc622b4f9bb03854e8cd10ae76257421137c099ffd644bcc611cee4f90ad9cb +size 31365 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/struct.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/struct.html new file mode 100644 index 0000000..f9299e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/struct.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5cdc0df3d85817ca6017a2880447fb28ba095d6871ed88575181e44e96bec2e +size 80011 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/subprocess.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/subprocess.html new file mode 100644 index 0000000..a970762 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/subprocess.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55f2a66398efefca6c00dd96f90570f0802fb1416ebf66262c43c3cee31fb545 +size 220321 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sunau.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sunau.html new file mode 100644 index 0000000..e39f186 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sunau.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d255d3fe8fc8e98dc3994a93df0d0a5e1a49ab1815923fdfd9c9313fc308b78 +size 46774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/superseded.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/superseded.html new file mode 100644 index 0000000..1b1feb7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/superseded.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99a23ceafece3e05ad81fce8e8c326d1e93a4f07a8308d224f950afb8c01cc81 +size 20658 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/symtable.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/symtable.html new file mode 100644 index 0000000..4c79a1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/symtable.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87c5e78f40c84211fd12743ea885c7026fe2138e2b59da250bc5053920fb5dc0 +size 41743 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.html new file mode 100644 index 0000000..ab082d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89b1a7c9672d9424b3a109bfd059f934395ed7476884e36eeb63b3a3b5f8ec1a +size 242054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.monitoring.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.monitoring.html new file mode 100644 index 0000000..48d48a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys.monitoring.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03da9ff47b0b8855a66d6d5b9c64228afa43f886d9234d350068e8aed2f2055 +size 68268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys_path_init.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys_path_init.html new file mode 100644 index 0000000..4ad79b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sys_path_init.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:162cfdf9ffe07f0f1559f872b361fa9515a4e56d07d671cc0fa729778003674e +size 33165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sysconfig.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sysconfig.html new file mode 100644 index 0000000..119e971 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/sysconfig.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3d5f30ef8354f4114b0ffe9a322a94577c1f1291889ed9d67eaf9ea5e6fba8e +size 67483 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/syslog.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/syslog.html new file mode 100644 index 0000000..a515d67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/syslog.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98ae40523b1f23fc6b685f5adecd01f2694244e2d46575fca930d5f9595a4e86 +size 36319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tabnanny.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tabnanny.html new file mode 100644 index 0000000..683c39b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tabnanny.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af104145909215e9ba021bbacf15b7c80bf253297346ced8fef99c60f4a5dae3 +size 22303 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tarfile.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tarfile.html new file mode 100644 index 0000000..2a63ae4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tarfile.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991672a7bbfb97f5b06dd302950e4f53531c60d305220d1ea8f19650dede62db +size 187299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/telnetlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/telnetlib.html new file mode 100644 index 0000000..85ff1d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/telnetlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44bfa5c06c4e51acd2e294916846f4b22e18b541fa6dd8719af434d3efa5a16b +size 45844 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tempfile.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tempfile.html new file mode 100644 index 0000000..3f36cdf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tempfile.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec166706bc37581e8bd87e171cdb6a67833e0cf19b5a0b8469e0e25ac8c5737 +size 75875 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/termios.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/termios.html new file mode 100644 index 0000000..839f832 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/termios.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fa446345f9508bb2c24eb384010baaf18e9924d73830451d2c1252609af6f1b +size 32935 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/test.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/test.html new file mode 100644 index 0000000..a109b73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/test.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a025e467d9008a928b9fe8aecd2f8d987eabfd5617e8af8a29fd190e063fb2c6 +size 238955 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/text.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/text.html new file mode 100644 index 0000000..505fd33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/text.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3da96b36a091f096bb420632a83c6f17caba9debf876ea04e0b49e1eb9784d34 +size 23118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/textwrap.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/textwrap.html new file mode 100644 index 0000000..cc23dd8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/textwrap.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4ca10f7caf624033de5eeafb8923f64d571b3d43412fb04d057f8eeeffbd350 +size 55892 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/threading.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/threading.html new file mode 100644 index 0000000..c8baa64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/threading.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e25e1cede100aa646c21986bb9baf816717aec09df5052c9866fb54a9fccfa2 +size 145780 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/time.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/time.html new file mode 100644 index 0000000..34a0e24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/time.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e15e420e41e5ebe11f67ee41bcf288b03374bc4e973a77e60d638043af7e71ad +size 122773 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/timeit.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/timeit.html new file mode 100644 index 0000000..a3fd347 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/timeit.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c25d4c690f981373c2d2f45e2784f01b056f5720aacfeb3506e4308ac78720 +size 61282 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tk.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tk.html new file mode 100644 index 0000000..433f40e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tk.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffc4867555bcdd7c72eff82871d740fef607ffe0c4c766fc6eb366d893cbb29b +size 34813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.colorchooser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.colorchooser.html new file mode 100644 index 0000000..54f818a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.colorchooser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c5bd93686c68b6f68f1ad3326562c2d3e3b3a13eb0555d40fbb8e6ac698b243 +size 20635 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.dnd.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.dnd.html new file mode 100644 index 0000000..c05a20c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.dnd.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:280d20fec60de08c2a431be57331e82149ccae6317f31a055261cebdfb5e18c1 +size 23465 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.font.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.font.html new file mode 100644 index 0000000..42e5bb0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.font.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afbf281f2e73b0c4dbacec02b35532b7788dd4a966d13dae4451353d5b8ccd18 +size 28488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.html new file mode 100644 index 0000000..77142a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78d67a6af67a55040291a6d67e3a45886369af2ae23f2d736f3282c22719557d +size 115836 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.messagebox.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.messagebox.html new file mode 100644 index 0000000..2ce7d44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.messagebox.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b53d39d376841cd7aaadea6e4f3166a308f39542d70d9e53f3047b8e24952f67 +size 46573 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.scrolledtext.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.scrolledtext.html new file mode 100644 index 0000000..32f91ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.scrolledtext.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9af6a97d6e8f89685c57811f4845d09c1dfdc0e36b550b78babca286aa46860 +size 20646 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.tix.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.tix.html new file mode 100644 index 0000000..74d57a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.tix.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:095695bbce9c137866d48bb59c7e6295acc9843ff2c108b1215c47371c601665 +size 67295 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.ttk.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.ttk.html new file mode 100644 index 0000000..2efa133 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tkinter.ttk.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cac4fc3d2a997c86ae06e08c11463c9b41c4111519e49aff105a5ae91f715a85 +size 149081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/token.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/token.html new file mode 100644 index 0000000..bbd8fc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/token.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ece1df20b9c9c593ed92abf15eeede70da62d9c597df328a7d1b67547068c343 +size 54630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tokenize.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tokenize.html new file mode 100644 index 0000000..f6176f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tokenize.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d4083296a32c7c5d89b0834cf3b006ca2934e8714ea4688bed3bca1620d1138 +size 47338 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tomllib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tomllib.html new file mode 100644 index 0000000..8bd6bc7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tomllib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b19c32cbc34b727980b77406fd29b408422eed08f4b3978c42560a0e892fe95 +size 28053 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/trace.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/trace.html new file mode 100644 index 0000000..359661e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/trace.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc2fe636be8074a2627ea459fa515e3732acc885def34d85c16285ed5bcdf807 +size 45686 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/traceback.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/traceback.html new file mode 100644 index 0000000..02f7fbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/traceback.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e33920252112bba9059915442429b57732241eb17d493e36aacc4cff02ecca48 +size 96832 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tracemalloc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tracemalloc.html new file mode 100644 index 0000000..a17548b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tracemalloc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:627a7453f2bb75a82d6701bf8618cdaf645c8573e68c3dec73c227d34845f8d3 +size 131533 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tty.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tty.html new file mode 100644 index 0000000..bd6f669 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/tty.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d789a12523ba72b871632b732851198b9db281f0c9a1a998c58550bfec212556 +size 25538 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/turtle.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/turtle.html new file mode 100644 index 0000000..61f438b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/turtle.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:692ed130801f7b1334e99090f1ad7c56588170f454c77fafcf0cd7cf1ee9926a +size 312446 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/types.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/types.html new file mode 100644 index 0000000..6de0ea9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/types.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dd9324e05410cf205a5ca71230aac1bfbcc29d77bf02710ab23496681a638a1 +size 80838 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/typing.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/typing.html new file mode 100644 index 0000000..31056e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/typing.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:318ec58ef80c81b24cbdc8dc5c38c476bad9ad8e903579b24da62507e49f38a0 +size 464489 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unicodedata.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unicodedata.html new file mode 100644 index 0000000..a712ad8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unicodedata.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26f7ef2695ab06e7fb6a89100421d806416a6723f78645b9c4065505e5dfa346 +size 34201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.html new file mode 100644 index 0000000..0f3825c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75762ff1f0d1ff6f14199b381a31a45969d3bea7741efd71e5265a8729c9d98b +size 331193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock-examples.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock-examples.html new file mode 100644 index 0000000..33980e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock-examples.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42e65e237b12dc0dd3aed7ab829977adb834f26f01ae53eb2d0e698e639cdab9 +size 194404 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock.html new file mode 100644 index 0000000..1d634f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unittest.mock.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:342485cb09684443ce0f0fb26f7feae90c61cb21c7c6bf25370c4e51582e0f97 +size 397437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unix.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unix.html new file mode 100644 index 0000000..94e4dda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/unix.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b85fb93dd16f2db8bf547f0ad40845b32e90b76c4cfd84b4f7f50d012ba72295 +size 19692 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.error.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.error.html new file mode 100644 index 0000000..925b76c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.error.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a09f113e81b6c94ab2976e93332e497d14300b08a2615562d48147d4a2927a27 +size 26276 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.html new file mode 100644 index 0000000..2121435 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78925ef312fa9e38003bd92f091a618527ee1e0febadba896d0f82576c1a7e6f +size 19046 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.parse.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.parse.html new file mode 100644 index 0000000..937aa46 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.parse.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ce13deffaf48f58f3b13fdc4fa1db47e0b9950ca589d2c66e5e5d0e6f5998b8 +size 115125 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.request.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.request.html new file mode 100644 index 0000000..14021a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.request.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22595da0c8ef10402d8239c096916c1fc35c82b4d8701029a67a1b7593660a24 +size 224887 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.robotparser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.robotparser.html new file mode 100644 index 0000000..7c1687f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/urllib.robotparser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20a84f283f079b231bac45b804118b856a2d018223d787fca351993759ccb334 +size 28971 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uu.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uu.html new file mode 100644 index 0000000..b6c7113 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uu.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97d01d4724acbd722a41f90b16427f84abf1116554f3e9493f17cc138745e3af +size 24587 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uuid.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uuid.html new file mode 100644 index 0000000..de842d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/uuid.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a67b622da4da12c7088c60430e8cf7f58a2bf1131ee3fc3294fb27ec3bb06f9e +size 59312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/venv.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/venv.html new file mode 100644 index 0000000..6be083c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/venv.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:615b5f96a4f258f6f9c432140257766a9d76bd2747c1ddd58b3e7479bedb6178 +size 99904 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/warnings.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/warnings.html new file mode 100644 index 0000000..121371a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/warnings.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dd0a383dacd56b7e7772b7c813bbd6e9e832e89efd481ad85a8bdd0dd3baeb9 +size 81502 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wave.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wave.html new file mode 100644 index 0000000..8d20cdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wave.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c95fc935ea129ea3a3e3642231396db1a33d5bf79dd64fba3a94cbcee614eac +size 42372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/weakref.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/weakref.html new file mode 100644 index 0000000..0c6d3a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/weakref.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ed3ca660a7e07d351a01c036973a141c1db18f9911de07ff561fc9754756c02 +size 82510 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/webbrowser.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/webbrowser.html new file mode 100644 index 0000000..8e78bfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/webbrowser.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba8bc1ea62d00831eaecae6cc7f887ac40608a119dddf8f479a14fc03bdcee28 +size 41252 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/windows.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/windows.html new file mode 100644 index 0000000..107ea12 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/windows.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd6d9b7f1746b4073feec2fb014f72c8e6df1ab5a88178841560e7bc74bd7f7 +size 18522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winreg.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winreg.html new file mode 100644 index 0000000..369b7d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winreg.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d6ab1b2d497df58621df7d27b6ba0285eed1ca5279d6fdf74e5f738fdde5c3 +size 97775 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winsound.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winsound.html new file mode 100644 index 0000000..47bc14e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/winsound.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f292ae076734b844ee3eecb2d7c03ef4f213f898ac97f3ffc5838f65e74cb8a3 +size 32600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wsgiref.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wsgiref.html new file mode 100644 index 0000000..a0b2481 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/wsgiref.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9d937a97d5f4edf52dc7ffcdbf21258e0c8a4c6a29cf1778f163f7688a1c65a +size 129103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xdrlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xdrlib.html new file mode 100644 index 0000000..d38c68c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xdrlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7dfa104563fdc08ec8a276d1889d1231bb648341e55e0c273938dd7b19275df +size 49154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.html new file mode 100644 index 0000000..32cb4ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc3883aecd8704deb768b125bc33a3bc7862f0c7a89321b2a0825ef68a112b0c +size 123548 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.minidom.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.minidom.html new file mode 100644 index 0000000..728c1ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.minidom.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01574043b9988708379d88fb13d4414442c2547e3d8a5508155aae12590c4f6 +size 57246 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.pulldom.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.pulldom.html new file mode 100644 index 0000000..dd1fc29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.dom.pulldom.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb5eb37910039e0f68f9024dbedfb9e29c6331af28ff7ce0c8d5598e6240c00 +size 36807 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.etree.elementtree.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.etree.elementtree.html new file mode 100644 index 0000000..790080e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.etree.elementtree.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2b22e01c70c66c071d9c434b711ad83e4e09aa508d4b9bf1c65aacdf26651ce +size 207836 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.html new file mode 100644 index 0000000..be58bd2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:635ce15654e5642d0916bbeb20cb85d6ab4ec9ad78bdc0c9ed5ab20550296c1b +size 30067 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.handler.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.handler.html new file mode 100644 index 0000000..cc6c6bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.handler.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:382c74b1a66b8b23364a7d2e58054b1d3dc697dd72935c22648d787ce6eb3f2e +size 63317 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.html new file mode 100644 index 0000000..698718e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e45fe03e9d54d9e69e2137fb2ddb68c6e3327eb77aece2d268d242c01d952a +size 38415 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.reader.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.reader.html new file mode 100644 index 0000000..3fb7797 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.reader.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0029c96af974036b463645a1efaeadef364306af1c4b7d7e11350dbcb1386a5e +size 63523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.utils.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.utils.html new file mode 100644 index 0000000..770aa80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xml.sax.utils.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e542dfd650007e99ca7910e660d966a5f595a2800a92c7cbf87006f9ee3768d5 +size 29007 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.client.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.client.html new file mode 100644 index 0000000..3fc14e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.client.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:219d812fc88ab606c200dd2e97a06fe31c60c4e8e89bbc3a1d113d77000d8459 +size 89191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.html new file mode 100644 index 0000000..e388c43 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f004ddbd4355af92bbb6ad8f7200d6787c895ca00bd03bf079a9e885441a56f +size 18084 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.server.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.server.html new file mode 100644 index 0000000..8e7d558 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/xmlrpc.server.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:169dff14179540448ee820ee3809f9e7ab24b8ad7ffce56e850292afef059dc2 +size 72348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipapp.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipapp.html new file mode 100644 index 0000000..df1e0aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipapp.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a017ae5776ca0b25601e3e170cda23f29a090af7cc946afa96a2ea0dcae5071 +size 48831 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipfile.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipfile.html new file mode 100644 index 0000000..2f16816 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipfile.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a8b2170701a589d8252b20eb606dd9a192872751db64cf84b7f7fc81724151d +size 133346 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipimport.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipimport.html new file mode 100644 index 0000000..3859977 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zipimport.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7816422b3041bd2867e6c717b8f490481e6f54daad752ad0ff891e54da0f9927 +size 38345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zlib.html new file mode 100644 index 0000000..fb2a2cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1dd8d61da92c46947a0155cadd7a78652baec459b351fe542a93caef8f96481 +size 49476 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zoneinfo.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zoneinfo.html new file mode 100644 index 0000000..3d14025 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/library/zoneinfo.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ba7d3d47832509c1b9cf71bcb5fe3abdc76d8dcbfa5616e98c24b0ca9d8720 +size 65349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/license.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/license.html new file mode 100644 index 0000000..77a5d61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/license.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a89206ee5c7de26ffb1859ee2cd16e4a1ed9d26fd3c3f2b95f680376bbf9224 +size 86237 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/objects.inv b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/objects.inv new file mode 100644 index 0000000..3e7d125 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/objects.inv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e9aafd0b66478585becf38fa207b488fa0fd54a9b5baaedc65bffda2d22f101 +size 136378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/py-modindex.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/py-modindex.html new file mode 100644 index 0000000..901b004 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/py-modindex.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a6815710ae3c8c36c006dd68bf70223aa20ab508742275acb99c14de1d8839a +size 90578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/compound_stmts.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/compound_stmts.html new file mode 100644 index 0000000..360fc5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/compound_stmts.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f40beedfa9ad2ba43cf13e8caf3e4ab76a9b157b60e0f5f591a872cea2cf99c +size 213857 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/datamodel.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/datamodel.html new file mode 100644 index 0000000..c83fb71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/datamodel.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1360f917c07484a18d01f5b640980e8a8ade36ee8bd483a1b0f4e4d1b83c8025 +size 411123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/executionmodel.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/executionmodel.html new file mode 100644 index 0000000..f7d75ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/executionmodel.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f9e5f3d417ae9053f6fecb5010bd4297a7e592db8c724bae5dd9ffec5913d99 +size 51395 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/expressions.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/expressions.html new file mode 100644 index 0000000..08ab2b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/expressions.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c8d75c3427a885ef64c4e4dd8411b98625f4879d1fcdae1dfa44a4cdd373c04 +size 217651 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/grammar.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/grammar.html new file mode 100644 index 0000000..50be90b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/grammar.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f50eaddd6eb6955757a6cbe5ac48b0a5e4af6f764c2be24f194054db47d79d8 +size 89769 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/import.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/import.html new file mode 100644 index 0000000..75c194a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/import.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c2b6044e5b4673eba4314d64b5cd0185307f94ea189b23f9568a3a104609848 +size 135502 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/index.html new file mode 100644 index 0000000..c2d7f29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:973c0627c9f28026ccb96c53e7e320ce4d534d4601b41fca6f3ab76d3bbb3d2b +size 29040 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/introduction.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/introduction.html new file mode 100644 index 0000000..2775378 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/introduction.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4ec9cdd77f1c03bff89dc116d55e5e31643b5d180efcef461ed10f02cd78319 +size 25384 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/lexical_analysis.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/lexical_analysis.html new file mode 100644 index 0000000..b569494 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/lexical_analysis.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff3dc000993606850123ff10ac83970da3bdac6976dd2a3028998bda0024baca +size 109839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/simple_stmts.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/simple_stmts.html new file mode 100644 index 0000000..3bb433c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/simple_stmts.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:223c3161b1a3530d8aa26db1cb6917d6e6f27765fb6932de8322c303e1a52ca0 +size 116164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/toplevel_components.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/toplevel_components.html new file mode 100644 index 0000000..e6de588 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/reference/toplevel_components.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fce569af1d88deac19c9a2a0b266e1bb59141ecfecfba4b880706b1fced1a26 +size 23677 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/search.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/search.html new file mode 100644 index 0000000..8d9a4dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/search.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:106f8969321f5d9eb660b61e8e1d89f877274f879e075ebcfe8e6fe051574bfa +size 14229 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/searchindex.js b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/searchindex.js new file mode 100644 index 0000000..61ba093 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/searchindex.js @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21df1e854bb9fadab8344a9b8fa567ac2e0d3d4d4c4883cd8fcf1f7ae0ecdae5 +size 3585335 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appendix.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appendix.html new file mode 100644 index 0000000..f6111c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appendix.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f618379ba91a58ed4ee6c7785d8753a8bcae08ec61d28d72618cd79b87eebf75 +size 28045 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appetite.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appetite.html new file mode 100644 index 0000000..574f2cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/appetite.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ae916a444f696bb300421a2be1b06a0b3bfffe1c7587b46e80f0e65bc022e0e +size 20765 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/classes.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/classes.html new file mode 100644 index 0000000..defc082 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/classes.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a20bde46b63760a6f49e6b362a22334d83ef02c0c31bc330e61843425e4abb4 +size 106988 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/controlflow.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/controlflow.html new file mode 100644 index 0000000..3e1ea01 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/controlflow.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62d53192ac0325aeeb9a1c01b0ca3b1eceda89a5bc17a3d585ee2dbf8df3eda8 +size 138990 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/datastructures.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/datastructures.html new file mode 100644 index 0000000..103d030 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/datastructures.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dcb69c7549d36d32b53c75e25fad1fae75dc6a7564585b9c1ab03b6240daee7 +size 101073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/errors.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/errors.html new file mode 100644 index 0000000..c9202e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/errors.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:207bd97b62a8c870787d1cbd660c096bb50f856418d9ab2b7925471b1a0ac017 +size 83353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/floatingpoint.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/floatingpoint.html new file mode 100644 index 0000000..a6874af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/floatingpoint.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00c0e4e6ce940ee591fc5c200ca9cadee62cf7f6262a1300a7ac51bc75829747 +size 46880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/index.html new file mode 100644 index 0000000..2b34116 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6413b209268d16808b25352fe979b6ca10875051397fc7904f0e12405752f1a5 +size 38077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/inputoutput.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/inputoutput.html new file mode 100644 index 0000000..db23dd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/inputoutput.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50110931bb75ee0dbd6d5a464f54c1a6d1712312ee18ed208fc7f0763c65770b +size 80039 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interactive.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interactive.html new file mode 100644 index 0000000..9bdeb94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interactive.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bece0007ef2f52e735bfd90faef458e43ebfc849d142f59cf93fce91e8078014 +size 20777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interpreter.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interpreter.html new file mode 100644 index 0000000..ccec1a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/interpreter.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ddb431bdf68da13ca675d868b6f78ebe16588dda2bfb66a766d4dc5bc4028b1 +size 31417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/introduction.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/introduction.html new file mode 100644 index 0000000..cfd30c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/introduction.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bdae31e6e6b2ff8eedf4a03f0f195d53b273480279ef6202752baef8a350b71 +size 74671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/modules.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/modules.html new file mode 100644 index 0000000..68c6c57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/modules.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bb913daf69ca9ac28e5e5ff784d30ed28a9a816503d6445bc78c0ebdedd51b4 +size 75413 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib.html new file mode 100644 index 0000000..b2db13b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc4f244d7c6935ae7fee240e4de4379fbac8fad8c540e9c9e8b791882a51aac +size 61234 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib2.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib2.html new file mode 100644 index 0000000..14d6cee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/stdlib2.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:753ff5c07b63bd312cd057a0d8772be7048ac1b860457d431172745f9ddfd589 +size 69625 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/venv.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/venv.html new file mode 100644 index 0000000..25e332a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/venv.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbd0cbddfde05bc6739cbfebccee9bbc619bfb50503f95cce183e37678ca8c34 +size 35958 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/whatnow.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/whatnow.html new file mode 100644 index 0000000..bffb978 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/tutorial/whatnow.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0447ac3a2492e0257e1aaea25541a51eb14162998c7647ebb1fd6186aebec9c +size 21126 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/cmdline.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/cmdline.html new file mode 100644 index 0000000..69bb64c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/cmdline.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fda9b1cce9594d143af88dde30924c825b434295b0ad76013b471f4466bf5aad +size 129182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/configure.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/configure.html new file mode 100644 index 0000000..c5e5e4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/configure.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:260916bafd074f0a1646e0c1c9f9a3f5dc13671ae79a4d9a208a50bcb1df91d7 +size 125287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/editors.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/editors.html new file mode 100644 index 0000000..f39ba14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/editors.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e108b5cad09eb3dda0e688242676e6337fc3219a0253c8f4968a066f7dd52130 +size 16675 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/index.html new file mode 100644 index 0000000..760f790 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75ae5b5d702c38b9252581f818b09286466d8628d4687ffea53852a24ed7ca4e +size 28302 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/mac.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/mac.html new file mode 100644 index 0000000..4c97053 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/mac.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f17d1ee6c2b11a002bf947878200895addd784cbbb78559d64b24c0fb65aa5a9 +size 31449 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/unix.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/unix.html new file mode 100644 index 0000000..604a5c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/unix.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e7a7700c5aa876992194f7bf87c6fd3fec6d66752a5c58d43868041d93ff6b6 +size 31393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/windows.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/windows.html new file mode 100644 index 0000000..21724a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/using/windows.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:166f3e8a6843034938e4ea9f245ef3b1975caa19a496ac1407d8a5906f045bf0 +size 120996 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.0.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.0.html new file mode 100644 index 0000000..3f1e353 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.0.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd4afe9f602537597fa8e74d25c93117e0281d4c334e12202c6553f565866b47 +size 145064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.1.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.1.html new file mode 100644 index 0000000..e1e1db7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.1.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09f1e6ffe43794c3c43ffbc81bed37482041920f14a63a23e792f31974bc5785 +size 93894 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.2.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.2.html new file mode 100644 index 0000000..93c244b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.2.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b42cbdcff0b1c3ae4c73c7bc9487b82b4fe3213ea3c66a6faccbba8d00f03a9 +size 150346 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.3.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.3.html new file mode 100644 index 0000000..5af72c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.3.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53e77eda6dffce9f60d191bdfcc875ac3e24ce7fe8b26a295d37ce1c62e19d71 +size 252015 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.4.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.4.html new file mode 100644 index 0000000..0c815a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.4.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b779196c1e4f821cc08864ec009cb5c376cf04c11108c3ff50b03dd809db0f34 +size 178867 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.5.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.5.html new file mode 100644 index 0000000..06b2cae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.5.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59469bae3cf6c4d7994b59cae99f6629dafceceb0e44c6a0a71a7872ffa64bb3 +size 267775 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.6.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.6.html new file mode 100644 index 0000000..51f4a5c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.6.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1791c9a1996a52270ae0e7c83afd42c5ee056bc111b7831ccd6431b051003a9f +size 374727 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.7.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.7.html new file mode 100644 index 0000000..01380d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/2.7.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b52d98a61066c6d28951cfb36832988bc8aff5c642c88545f69f7780f69dbba8 +size 354660 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.0.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.0.html new file mode 100644 index 0000000..251593c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.0.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:694746256fcd8fa54f7c4a92b199e3782ac879a8bab36bdc079c3ed0204f50cc +size 131519 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.1.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.1.html new file mode 100644 index 0000000..e58b806 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.1.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed0fe78f7ffa980fbfb74cf50fd528121e6740259920c5cce57a6c7d35128580 +size 78981 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.10.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.10.html new file mode 100644 index 0000000..0d2ee9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.10.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66360acdd1923f80e3a0150f1783b4e226ea55ba55cbf8fcb81f4fad36517de2 +size 317982 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.11.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.11.html new file mode 100644 index 0000000..dd930d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.11.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1be890ed0e7b5b3959bf8bd1b762cb2542aa674e2db842c79fcd00f245b4b576 +size 355168 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.12.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.12.html new file mode 100644 index 0000000..12c7eb5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.12.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcd12d20cf2afecca8e7237187e078f07a7b9ba59607dfe9e8fcb691c8b71f42 +size 381438 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.2.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.2.html new file mode 100644 index 0000000..93d1b3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.2.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ad7a33e6f0c087c01b005476a2bf9738d011142d3a36aef7dd8678c8835fce5 +size 342863 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.3.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.3.html new file mode 100644 index 0000000..6af32fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.3.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25a3be25d032e9f6f66181f1d388adbd8a343a693088dc95412f2691b800238e +size 333144 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.4.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.4.html new file mode 100644 index 0000000..b0fb37e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.4.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae649ca95c755ac891bc51f0239a257c7fbeef3d4ccc32a1eed04ad071dae36b +size 349153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.5.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.5.html new file mode 100644 index 0000000..ee5c98a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.5.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb39ca530198f3e9870b07032aa4c4f1dda98fe6abf722e418f484bbf24bb06c +size 335055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.6.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.6.html new file mode 100644 index 0000000..7f85cf4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.6.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ae272150861f8e422dca86c86d1adb7248f5265e4e86ab6565439b0712fadae +size 311299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.7.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.7.html new file mode 100644 index 0000000..7259ca7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.7.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6178c5da041216d575689fe04c80e781742ee3e3821931e6d670e78693e5aae6 +size 325336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.8.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.8.html new file mode 100644 index 0000000..fb76360 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.8.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d7f63a9e1d22063257bc73a8bfc495e64c539b57bdbc118cf110c1e113a5c21 +size 317958 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.9.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.9.html new file mode 100644 index 0000000..dd7601f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/3.9.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9320ca377ab3412a28f2617805f7f54aa8667cdb73fe007fcaadf53ae663bc +size 226322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/changelog.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/changelog.html new file mode 100644 index 0000000..dd45fb8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/changelog.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82304df777d7484d84894c054bdf1c42bb26a261c4caa8e316cf9e7351246a32 +size 15604 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/index.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/index.html new file mode 100644 index 0000000..c90d2ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Doc/html/whatsnew/index.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11aef96f97b652d50b3062301af6960a9c05d8b9b5bcaa50dcded1627c045f6d +size 64729 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/LICENSE.txt new file mode 100644 index 0000000..a587fa9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e502c6b880ff58d614901495a9009c136539cd0b1e2a2abb8fc00b934c203419 +size 36874 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__future__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__future__.py new file mode 100644 index 0000000..603751b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__future__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf11d13b6c9b2b8706be425addf399965738622bb4cc553217be16399c51d51a +size 5365 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__hello__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__hello__.py new file mode 100644 index 0000000..109b589 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__hello__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:427508a24710b22154d6e772d50e6720da2e8b2dcf15f70593f3bc80eed1c87d +size 243 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/__init__.py new file mode 100644 index 0000000..3ed9515 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9ba5f17a049779747dbc8b17fa318fab67875be829994ed437c81d0666a88dc +size 104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/ham/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/ham/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/ham/eggs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/ham/eggs.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/spam.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/spam.py new file mode 100644 index 0000000..3ed9515 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/__phello__/spam.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9ba5f17a049779747dbc8b17fa318fab67875be829994ed437c81d0666a88dc +size 104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_aix_support.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_aix_support.py new file mode 100644 index 0000000..c614486 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_aix_support.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbede7fc7b15c30dd3cdd54f40347dd21f9b6e65d1ca38bf831a7b50d456583 +size 4129 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_collections_abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_collections_abc.py new file mode 100644 index 0000000..333beb0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_collections_abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3454744bf6b649f19e91ca1411e88ffd608e86f58375f3f8cee5ca53473e331 +size 33255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compat_pickle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compat_pickle.py new file mode 100644 index 0000000..92cda90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compat_pickle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c81e8803cffaac8bdf085cd01ea948c3adfa32263b2d452bafd5b5519410f6 +size 9013 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compression.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compression.py new file mode 100644 index 0000000..1ab327a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_compression.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a10cf1a317374641bcdb8252499e9cb9d4d6e774ac724edfdddd0433ead771d9 +size 5843 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_markupbase.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_markupbase.py new file mode 100644 index 0000000..5c9d7a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_markupbase.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:914361cf055d5d2e1b69a2603a5c94b22dedb987d72ce9f791afec0524718f28 +size 15049 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_osx_support.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_osx_support.py new file mode 100644 index 0000000..00d3d75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_osx_support.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72a3c3ec5aef4c8b67a27482dc5730f6ca0a1f763c73d7f5edd37b7a180aabb +size 22602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_py_abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_py_abc.py new file mode 100644 index 0000000..0eec073 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_py_abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f790c97331a66ea442964314843f7cc8863fb3d9b899183f6d02598d4361a5c +size 6336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydatetime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydatetime.py new file mode 100644 index 0000000..f9e70d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydatetime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d59a58b96462239916d5e3f24a161bec46a70d7cb12c21c7bd14b39b46aead1 +size 94740 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydecimal.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydecimal.py new file mode 100644 index 0000000..67077ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pydecimal.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:302c4c9584e4c8b9018007315eaac5982af0f07e257e88090358469b888d05d2 +size 233622 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pyio.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pyio.py new file mode 100644 index 0000000..9282923 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pyio.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a2aaf9cffb2fd7cf4f27db0b8c16160c08fba69d55c7237865c9c9d7bb92444 +size 96291 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pylong.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pylong.py new file mode 100644 index 0000000..cef25c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_pylong.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcae0d4cc2d4d3fd9b40bb06b512eb8dd785f755edd1f9038613d4460ca4c6c1 +size 11119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_sitebuiltins.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_sitebuiltins.py new file mode 100644 index 0000000..ec196f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_sitebuiltins.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:924f95fd516ecaea9c9af540dc0796fb15ec17d8c42b59b90cf57cfe15962e2e +size 3231 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_strptime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_strptime.py new file mode 100644 index 0000000..f7f8911 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_strptime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8961aa3bf0fe6d677d26f83ea25c72685a6c7dde51d3bbd2ec4a2a405676a320 +size 25180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_threading_local.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_threading_local.py new file mode 100644 index 0000000..8204595 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_threading_local.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27bb2bd201e6157efdd807ec5e3f3c5a8e0ea2ea2e86ed475a59de8c6442a0eb +size 7462 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_weakrefset.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_weakrefset.py new file mode 100644 index 0000000..82dcafc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/_weakrefset.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf8031a6e21150438f3d2964c4152615b91a03894616d5b6930e0f14f44dabda +size 6098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/abc.py new file mode 100644 index 0000000..8b69421 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d51c54428495cd62a5da4360315fa84f692b5aa9db21be986b3e14a83f7cf288 +size 6726 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/aifc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/aifc.py new file mode 100644 index 0000000..8c75c8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/aifc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36a33cb62bce2eefc61ad2c7c7555407404481a9543f1c366c32cde3513d8a14 +size 35195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/antigravity.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/antigravity.py new file mode 100644 index 0000000..4ff0100 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/antigravity.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c4879a527d2f5d0e0f0d81837eeb8510e2f77fdf2bbb2688835732e699ccd6a +size 517 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/argparse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/argparse.py new file mode 100644 index 0000000..a04941d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/argparse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7778cd670473220869fbf4e58022eaced79b6e10f0f19a5a9c75e48144a47ced +size 104119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ast.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ast.py new file mode 100644 index 0000000..fb0edf8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ast.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3cc2501761596db13cdc84f085dd2736e5c352b51f39f26bdd2407d99dfbb72 +size 66095 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__init__.py new file mode 100644 index 0000000..05d536a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e7fbe996045d0cfbc0f2c76a8291ee59a595645cd823fe72bbf211dba762b86 +size 1267 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__main__.py new file mode 100644 index 0000000..d81945e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b50e1aa769de15e30bb3b81b98f85232f4fdf6193e950b47d19af48937dee835 +size 3466 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_events.py new file mode 100644 index 0000000..675a727 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0fc43fec379c16c699ff752d796f320db23db4fede62ddaa425621f8d40e091 +size 79983 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_futures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_futures.py new file mode 100644 index 0000000..47d76f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_futures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0810f0d05a8bb85dfd42fe17a93949b7c425d1e6e2bc21d35eb56a1895923591 +size 2041 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_subprocess.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_subprocess.py new file mode 100644 index 0000000..3dd87a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_subprocess.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e07c6d91c88e3f2e587e5edceb9f14d6c9afdf9f55bcdbc6610ad1bcde93df7 +size 9154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_tasks.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_tasks.py new file mode 100644 index 0000000..c4ddf67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/base_tasks.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:109de315ed020e85261b741987719cfd3888f14bc9dda9c846bda3ecb6b24b4a +size 2766 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/constants.py new file mode 100644 index 0000000..3cec6f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a577b5c92227f378a26048e1985821e973125b42c385a5aa4a44bb92b2c6f26e +size 1454 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/coroutines.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/coroutines.py new file mode 100644 index 0000000..05c68bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/coroutines.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc38e59c555c22ca601aed90a4065e2b7c56efe8b8ef6a693f4d0426e45d76a +size 3451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/events.py new file mode 100644 index 0000000..b449ed3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9a88de38355ad2f6b5f0de70dbd4694da0d9f92831734868c026daa4caf8f54 +size 30207 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/exceptions.py new file mode 100644 index 0000000..3056b0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a49aa2489262c47ee91528550ef464f1139e873dd5f1a3f18c3c099a0145e195 +size 1814 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/format_helpers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/format_helpers.py new file mode 100644 index 0000000..4d73d77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/format_helpers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:657449627e8706cdc28a575df9e975058e787fa2cc6a70b5da7f9eb39d371dcb +size 2480 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/futures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/futures.py new file mode 100644 index 0000000..d3807fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/futures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:793329a7a9bf2520f980c064f4e19e27928d112a8534b8094c5c4bf7ddec97e7 +size 14638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/locks.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/locks.py new file mode 100644 index 0000000..131d2e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/locks.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8676f43dc76b49d66dc63b907dd2367e7b35fe5e7ce775f816ee306b70521812 +size 19580 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/log.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/log.py new file mode 100644 index 0000000..75495d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/log.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72433d0d5a4205b74ef4ff95cd3e1c8d98960a58371e5546698a3a38f231058c +size 131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/mixins.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/mixins.py new file mode 100644 index 0000000..b57ec94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/mixins.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5055bbc8622c99f91ef58024d4655209c904ab43f11498adfb6218c127f9946 +size 502 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/proactor_events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/proactor_events.py new file mode 100644 index 0000000..4a44605 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/proactor_events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00ece2377455b6dd2069e8e7d1efd6f79b635b37feb4fc5b47471477e2d3f86 +size 34397 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/protocols.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/protocols.py new file mode 100644 index 0000000..510e695 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/protocols.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66038b46a3d99b358166a061b9d5e9486cddb9626d84c34f343640bb0d0eec0a +size 7173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/queues.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/queues.py new file mode 100644 index 0000000..4184ee4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/queues.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77ea57d6c140f46ff1740fe0948894e43a77d6cfd3f03720dbdc7f5b72f03127 +size 8218 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/runners.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/runners.py new file mode 100644 index 0000000..79ac6d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/runners.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed1a56f37a46004f6bbb4fe597eea239ea33911ef0c1505903a65f0f30ade110 +size 7374 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/selector_events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/selector_events.py new file mode 100644 index 0000000..52d8759 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/selector_events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65aa8ee7e00c9af60158a1059c01f36b028d133bf8ddc5e2e55cdccb76a9ed86 +size 49562 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/sslproto.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/sslproto.py new file mode 100644 index 0000000..5d529a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/sslproto.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5c2475b3cf78ec6cc7538c7125b6704ae17ead509e368cb500e4ba80ea5a6af +size 32665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/staggered.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/staggered.py new file mode 100644 index 0000000..eabb3e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/staggered.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18785bf43a6b21a235da704a60caf28232f6e57c56e3eb81d01bb50c5b9d4858 +size 6141 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/streams.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/streams.py new file mode 100644 index 0000000..bda082b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/streams.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bc43cffad3dc2422811017788bcf394ae4269d4c6eb66295fdbca580015c482 +size 28389 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/subprocess.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/subprocess.py new file mode 100644 index 0000000..17954a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/subprocess.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c7a0e549992a9731efcf3f1a06fbf734db90b54d9734d2708953b722bbd533c +size 7966 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/taskgroups.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/taskgroups.py new file mode 100644 index 0000000..96a706a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/taskgroups.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ebd3a292448ab0058fd7558a63d578b3156cc53dddfb8755a700eee9eaae354 +size 8987 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/tasks.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/tasks.py new file mode 100644 index 0000000..ffa916d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/tasks.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9501733827182d5eab6638ef7117367c5fe5db0191e45bf96f9faa463127e83 +size 38427 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/threads.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/threads.py new file mode 100644 index 0000000..f02fc8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/threads.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60310c6e008f10c117388ba34811250134dc6fe4577031cda37e8f9adea40920 +size 815 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/timeouts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/timeouts.py new file mode 100644 index 0000000..efd7a6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/timeouts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0beb692f463bb3c55382b32b4174e31c546b33257c14172c34db1ad1dd269ff8 +size 5489 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/transports.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/transports.py new file mode 100644 index 0000000..c8c0acd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/transports.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c1daefb52b4edd948acb7f6b202eb3e7d72dcb0706cc035076c9f6a13ac529b +size 11057 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/trsock.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/trsock.py new file mode 100644 index 0000000..8da6c84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/trsock.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce72de2afc811493e169b486e60e510fdb99f9170e01f06a9a8ec720d7e75038 +size 2573 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/unix_events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/unix_events.py new file mode 100644 index 0000000..373dba5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/unix_events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7df3b5336c8df24963eaaee142f0e5ca25adc3f7173ca3b4dc91bd2c5817d8ad +size 54624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_events.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_events.py new file mode 100644 index 0000000..d9f0acb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_events.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f94acdfd79706099961bb265a0e6431e744234cac3f572209a1653a5321fda7 +size 33488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_utils.py new file mode 100644 index 0000000..897ba53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/asyncio/windows_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23ff6c7fececfe35a06eaf7615c1e1e67c0740b78ca75a04c548b184be87b958 +size 5233 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/base64.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/base64.py new file mode 100644 index 0000000..c8557e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/base64.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:366e287224862a59d1416aa17b2259827d46a55c8406ae3f178f9ee7dc3c6f5a +size 21221 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bdb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bdb.py new file mode 100644 index 0000000..23e8eaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bdb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ce8d24c5a85cfc33582ae92ba6e52163ba628966fd0a2c41cd2eb127e2f5f49 +size 33624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bisect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bisect.py new file mode 100644 index 0000000..c857cad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bisect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:085dad54dd1a00d68aaa5361031c0c4bff5efbd281d1a02ddc8f317c519e540b +size 3541 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bz2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bz2.py new file mode 100644 index 0000000..2f0e7aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/bz2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a539fc503737c53d5a45272e33a435b8a6b7a8559ba6a425002978038096bd66 +size 12191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cProfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cProfile.py new file mode 100644 index 0000000..a7f9c7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cProfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cd9bc9e6ed6cf5b24ec0259b242ce0f3b90dbbf707ad775e146347e5308a3ac +size 6751 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/calendar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/calendar.py new file mode 100644 index 0000000..6683f68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/calendar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1488547b4a1783e310461c21552e6b75d0d55c89d46be6aef23f82008474d60 +size 26216 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgi.py new file mode 100644 index 0000000..5b3bb5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc73fbc2865d5e88f1e04d23f5e0b0a4ad46ea7410c86b39a43b8eaa0384daca +size 35432 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgitb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgitb.py new file mode 100644 index 0000000..8ebf39a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cgitb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a61b06e42d738fca9fc1839441b54b21bb5c39c315a7fad67e0c44d74154ecfe +size 12753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/chunk.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/chunk.py new file mode 100644 index 0000000..ebd7d54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/chunk.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78554d5fd093a64d0f63c4930e206203412b17318282e3d0c1a10badb7c28cbd +size 5673 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cmd.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cmd.py new file mode 100644 index 0000000..0e81953 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/cmd.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:165b7f2ed818afc700ddaaf8d8fb2918e4a1e585a5965f0172d96df6f1fd9962 +size 15274 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/code.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/code.py new file mode 100644 index 0000000..607dd69 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/code.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:044f67d22db4dc4a3b5f4353fe6fa83dd3b02a2288ec672411dcd9676713748d +size 11012 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codecs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codecs.py new file mode 100644 index 0000000..596d80e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codecs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:000cf1d683c677ed3de6d8e284376f81def4b91f93d68ee41bdf07c4e04cea77 +size 37999 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codeop.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codeop.py new file mode 100644 index 0000000..d9fa0cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/codeop.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62f6d6d926c2dc4f3b7aa7abd2aeb025b5de716a53f590b641ef82b00a810b50 +size 6069 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/__init__.py new file mode 100644 index 0000000..cecf84f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eb4c4445883fd706016aca377d9e5c378bac0412d7c9b20f71cae695d6bb656 +size 53970 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/abc.py new file mode 100644 index 0000000..5c8f999 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/collections/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad86878712fc6682863f12208f4ced5daf2dd82b6ff5ed58207de29d0efa410 +size 122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/colorsys.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/colorsys.py new file mode 100644 index 0000000..247785c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/colorsys.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5f4ca4dc00978554e19e0e577b4c6cf8d2bbcb3d475258c8796bf8cc37cb8d2 +size 4228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/compileall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/compileall.py new file mode 100644 index 0000000..a931af1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/compileall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d52c02c00a7b58e5875f1eaddded627919ae134f3927688167d634fade5fe2e +size 20976 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/__init__.py new file mode 100644 index 0000000..70ddc65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52069aeefb58dad898781d8bde183ffda18faae11f17ace8ce83368cab863fb1 +size 39 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/__init__.py new file mode 100644 index 0000000..08a9934 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28c2bde9ff483ce03263b3874ee04ba1c80b18ba5f05871b4ad0bf7aec1a322f +size 1611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/_base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/_base.py new file mode 100644 index 0000000..34af391 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/_base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5a450b5ccf2bc5abf458be32c7b2eb4e26c02c3d504eef0e0682b5cfcfc6f52 +size 23487 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/process.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/process.py new file mode 100644 index 0000000..da78270 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/process.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4689ed6903089f2637c60bd50fe48d1f40f54a831df8376c9eb7fedeab1361f2 +size 37235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/thread.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/thread.py new file mode 100644 index 0000000..94c315f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/concurrent/futures/thread.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc15adbe6b366e0142ca395f4ce16d241fef2786516a9b3ad60e5a1b72555540 +size 9123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/configparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/configparser.py new file mode 100644 index 0000000..f7e26cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/configparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:899cf66ad2e7f035f0752dad3d42e1b186a5f2b8b819ac3f625fc894937ff58b +size 55122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextlib.py new file mode 100644 index 0000000..13ab714 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a53b1db774f19c6b1e4320c2bc64058c49e3fba58b20b9c1158e5a8d02069890 +size 28437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextvars.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextvars.py new file mode 100644 index 0000000..a96c3ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/contextvars.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:758a96e17249e1e97c5ca5d1ee39aa31e5d439d0922ae7af0064318e70b59fc8 +size 133 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copy.py new file mode 100644 index 0000000..7d1d55d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a28a8fae74106d128ddeed0b59ef38deab2f7b8b9d3bd006130c3cf75b42d34 +size 8704 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copyreg.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copyreg.py new file mode 100644 index 0000000..d71b887 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/copyreg.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea2363638fe83e8e5b007013a821841371a615d99414b3c2f8f19152ca109a07 +size 7831 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/crypt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/crypt.py new file mode 100644 index 0000000..8e52914 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/crypt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fe812bd7dd51d8424590f08f0f74d36ea8c35d26110f5ba6172ec67dff6e9e0 +size 4037 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/csv.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/csv.py new file mode 100644 index 0000000..f9ffb09 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/csv.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8486cb388fe0db87ec3f3330117ee3a9d70fc98baa82b24a1d369e71e571f018 +size 16837 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/__init__.py new file mode 100644 index 0000000..5da30ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fc533f8ae18a7ca06dce88fc8dca5eae61f2a4198ceb9d4b4b5a69862aa42ee +size 18789 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_aix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_aix.py new file mode 100644 index 0000000..fc15018 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_aix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bce659c2bf31d4b54c69d2e238dd097392f4108e7970c5e741e415a44d281740 +size 12832 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_endian.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_endian.py new file mode 100644 index 0000000..8ffb044 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/_endian.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c5b9ac7306dcf98856c9b815a5fc604ba0f47acab15ac47ad858499c6981579 +size 2613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/README.ctypes b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/README.ctypes new file mode 100644 index 0000000..9c29da1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/README.ctypes @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99f3754dec345ed71e2bcb337e3cdc58b1a4c02d290d870dc20ccdd1ff543ae1 +size 302 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/__init__.py new file mode 100644 index 0000000..48c2162 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad449177f69d3150373892859aff90a1882982e9aba313b919711b7f38370def +size 163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dyld.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dyld.py new file mode 100644 index 0000000..e3d10a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dyld.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed0f3454b06e302ef7393001d638883ce05d471e70550b2ae811d4b169bfeaa1 +size 5189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dylib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dylib.py new file mode 100644 index 0000000..5948272 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/dylib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f3158fea8fadbb07b597e05df93221150cc6efe21ec1376379ef9ef82ddcd01 +size 1002 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib new file mode 100644 index 0000000..7c33278 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b9eb3a8af1d12da22604845995982ca99992876a825f3765e053ddb592620ab +size 86 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib.bat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib.bat new file mode 100644 index 0000000..f48fa48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/fetch_macholib.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7497fbdbb98afca4ac455e3a057c59bcdebaf1280e25c94741dc301f05cb53e5 +size 75 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/framework.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/framework.py new file mode 100644 index 0000000..c1a69fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/macholib/framework.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc5499b69551299eb4ccbd9c5c99260f9d39eb3fd0794bfaf9f727d26d013bd1 +size 1147 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/util.py new file mode 100644 index 0000000..75c3ee9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1425da6f4324e7ecfc08e6efd11792621ba7af5e075ad3ac056048146ec950a +size 14338 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/wintypes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/wintypes.py new file mode 100644 index 0000000..1123e51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ctypes/wintypes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d9150e8603bd922e9dbee8a5e9cf1379cf599a382b09a5cbf09bed520f6c459 +size 5831 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/__init__.py new file mode 100644 index 0000000..5afe3a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef71d789e173399f3f33f1ef5f5284456c9f3690779d1e597f3a92bd67c64e9c +size 3470 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/ascii.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/ascii.py new file mode 100644 index 0000000..88611ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/ascii.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd74f344619190c939daaf216df8790c41c5cc859b5d35e806ba602519233180 +size 2642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/has_key.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/has_key.py new file mode 100644 index 0000000..ab3144c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/has_key.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4838a7369459a90c58cfa5804c824f486bfac1b7a8ae751c7dab5443b500695e +size 5826 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/panel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/panel.py new file mode 100644 index 0000000..28cd4b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/panel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b10a03c3224939d9be2a078fe896da5cfeaa9740d265f8052b5403bc5e15bbf +size 93 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/textpad.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/textpad.py new file mode 100644 index 0000000..090b953 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/curses/textpad.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcdfa4f07204b101f3da7a0fe6bb5ff7b5ba8c4aa6dbc84ec57e8e3cfa3bc814 +size 7958 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dataclasses.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dataclasses.py new file mode 100644 index 0000000..1fcfaa1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dataclasses.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14ef09195d260861ddf61e5f06c4e304d8ed473afef19b09e7e4ec1e4fadae7b +size 63676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/datetime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/datetime.py new file mode 100644 index 0000000..6df3cc0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/datetime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5068c4ed2c79bfb4b9ae426675112ca8c89ca27aa40b33dabe6cd313ab22dd73 +size 277 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/__init__.py new file mode 100644 index 0000000..08ff438 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:166b25f6a81a2d970d057bad1ea64baf9b83b65028c3a6d09f0f184c754bde48 +size 6072 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/dumb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/dumb.py new file mode 100644 index 0000000..935410d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/dumb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e624be74a2fb347c2b1ffe877ccc77182618e0bdf94c4cb7a343ed8ccd7584b +size 11911 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/gnu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/gnu.py new file mode 100644 index 0000000..3e59fdc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/gnu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98dcf3e73dc56c7dbf013852f685eac1fe3a911785e682ab69836eba5656c142 +size 75 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/ndbm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/ndbm.py new file mode 100644 index 0000000..b18c400 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dbm/ndbm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d747238751aa697d7040ee1479e0c3eff0172e1195825061cf517cf9bef30050 +size 73 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/decimal.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/decimal.py new file mode 100644 index 0000000..77e3ac7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/decimal.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63e792dff9d546e9ecde5079dd9fc32bba481e8e330781c541c3acf749d12a2a +size 2913 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/difflib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/difflib.py new file mode 100644 index 0000000..9f251f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/difflib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f517ae2f8750bd8a1c7a2f5bb14310ca2d961b7402af7a8ab256ef75c91769b6 +size 85364 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dis.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dis.py new file mode 100644 index 0000000..ba5fa80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/dis.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f36465f7043cc1a03cc9400d7aa9cbc20fbfd352b67f797722234afafb78fc +size 31014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/doctest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/doctest.py new file mode 100644 index 0000000..2d8b193 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/doctest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f0bede1c42dfbd213bd1f8ff33832dd42f81b6325cf404fc898e3947acc297f +size 109594 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/__init__.py new file mode 100644 index 0000000..c75c1fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4b71b7b51a7eebc46bbb6470cf6da746cbb5e9548a6bc2a57b84f451efd9769 +size 1825 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_encoded_words.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_encoded_words.py new file mode 100644 index 0000000..1c51ce5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_encoded_words.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:154f585498454ca829dcd44bb89355ff8c7965b1b6692d1ac0293e7553dbbabd +size 8774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_header_value_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_header_value_parser.py new file mode 100644 index 0000000..5997d73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_header_value_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc67b232b568ab35d7fc6ee18a13d7a60281fc82b4fad64daca74244cb907463 +size 113208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_parseaddr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_parseaddr.py new file mode 100644 index 0000000..2a1d015 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_parseaddr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4960c31f0039780f316149a3773367a3aeec3bb17d360776334d9b9e688da908 +size 18378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_policybase.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_policybase.py new file mode 100644 index 0000000..3d8e4df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/_policybase.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8a53d7d8538a9791ae5fbb47b814ed3516ae2cb09072e49ae98a912f4e8db9d +size 15448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/architecture.rst b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/architecture.rst new file mode 100644 index 0000000..f4531f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/architecture.rst @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d1a1f7c18240df34e51c32450449c5cd767c3571b553d2052a3fd6bfb77c07a +size 9777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/base64mime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/base64mime.py new file mode 100644 index 0000000..52fd78a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/base64mime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:043629c09e865afef486ed9a922e954dd8266d6e3b4757c10a1cfd63f8415806 +size 3666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/charset.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/charset.py new file mode 100644 index 0000000..772c5a3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/charset.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca7ca0a12b96d6fa8a4a5f687cd70a58ecfd93df13374c414927d4939ad50be6 +size 17461 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/contentmanager.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/contentmanager.py new file mode 100644 index 0000000..0ff843a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/contentmanager.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddfcd78530be46273d924d9f4e36b545788b8a9558a40d51119103f86c919fc4 +size 10839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/encoders.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/encoders.py new file mode 100644 index 0000000..ef04968 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/encoders.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd657fcb0df3e102145d620648baa274e7e53681370568c31ea37a97090710a9 +size 1843 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/errors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/errors.py new file mode 100644 index 0000000..758a3f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/errors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac186c29f471f55de3099f82b67b8b0b9edb16e4568cb094f852373a0485d07a +size 3848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/feedparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/feedparser.py new file mode 100644 index 0000000..525695e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/feedparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:507df585ff50ac6ad26721ce27398b26bb8ffb516b2f7fbd77d41939067966b3 +size 23330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/generator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/generator.py new file mode 100644 index 0000000..0dc8f1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/generator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45f6c23ada9e2f8e2ad73aafb3179b41953ac8e828abb1afb793959632bd93dd +size 20704 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/header.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/header.py new file mode 100644 index 0000000..edbfb40 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/header.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dde02246b4ac6eb9af2b8487de8207aa221d42026559c31f732ec4c9f78118cc +size 24665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/headerregistry.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/headerregistry.py new file mode 100644 index 0000000..56b50aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/headerregistry.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05dad578daf8c21d6569b7561c5281f3bc6a03600b004a0e4f7a8cc0e75be3c0 +size 21423 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/iterators.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/iterators.py new file mode 100644 index 0000000..5a77ded --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/iterators.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60f5e1c2f9503e1bd052a6cc46a086d5e31657c7d83a12ebadb734ff8240f46c +size 2197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/message.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/message.py new file mode 100644 index 0000000..0c4bd2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/message.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2863d23f37c8c80506507635a4a52a668ef423b5971ac66e368b8c6ebcf9dd1b +size 49314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/application.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/application.py new file mode 100644 index 0000000..df71551 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/application.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8911432a19145a0f8d3a869bf9d37bd5b1325c148bcc2196859543714f30162a +size 1358 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/audio.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/audio.py new file mode 100644 index 0000000..e9a31ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/audio.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:349943d3f87c448526b032776e42503fe551c4f1e5e48c09cc38bfba5aca75dd +size 3194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/base.py new file mode 100644 index 0000000..4e7d85b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a3c0012455d5cf3574257c313d41057e5548f00bd13994a6ed78e70234cd74 +size 943 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/image.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/image.py new file mode 100644 index 0000000..e90875e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/image.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6f500d4e27183274a7ff8836ae7227b8e6630aa640e6153cf3de5b716a020f0 +size 3878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/message.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/message.py new file mode 100644 index 0000000..2646b60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/message.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af7c256705d9adeb48be2a4a60bc738e3675f45a97c8f954b328b0fa095b6d1f +size 1348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/multipart.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/multipart.py new file mode 100644 index 0000000..f0efccb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/multipart.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec0747ed9ab2a8a6fbf678562374702811bb19cb0933d475f0b00c523fa46eca +size 1666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/nonmultipart.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/nonmultipart.py new file mode 100644 index 0000000..26160d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/nonmultipart.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca05bad94eb97ad1ae8ee5b61c13d24988d7e8545f276279fac43a17b9910503 +size 710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/text.py new file mode 100644 index 0000000..b4d88a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/mime/text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b26287ec2834c6ef83da1b27515e07844a8e7dbe95909f87c1c5659b13bd681 +size 1434 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/parser.py new file mode 100644 index 0000000..c8663fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afba51fc27b46872a69836b24f803089153ec68632dffa0c9f8146999e44222d +size 5102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/policy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/policy.py new file mode 100644 index 0000000..aeab691 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/policy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a1b9ec977e2d5c9a4db487fc41f681c2142f09477d90b1f7918af5ffbe8a31 +size 10846 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/quoprimime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/quoprimime.py new file mode 100644 index 0000000..0dc9784 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/quoprimime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c5c673d41d65e1b39779c9de4907c8b1ed04216b4472593def0eab904e8d237 +size 10164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/utils.py new file mode 100644 index 0000000..849f374 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/email/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a53c5fc6a34ea37b733ff105599e6d9a8b58efc7c10c3180e1f1fd26f288e47d +size 12645 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/__init__.py new file mode 100644 index 0000000..2a4b2ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b997e9f7beef09de01c34ac34191866d3ab25e17164e08f411940b070bc3e74 +size 6058 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/aliases.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/aliases.py new file mode 100644 index 0000000..f43aae5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/aliases.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1893cfb597bc5eafd38ef03ac85d8874620112514eb42660408811929cc0d6f8 +size 16228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ascii.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ascii.py new file mode 100644 index 0000000..325e856 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ascii.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:698c578b9b5df7bd6f8b2761d114f74cff854c1396083c8ab912b11fcae83b86 +size 1298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/base64_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/base64_codec.py new file mode 100644 index 0000000..e2947fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/base64_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac4443ceb3e045f064335aed4c9c2143f1c256ddd25aaa5a9db4b5ee1bccf694 +size 1588 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5.py new file mode 100644 index 0000000..a265fd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cadb1c66d355f551e4d99a895725b62211cc5cbde1f037c61fd4463932ff70cb +size 1058 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5hkscs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5hkscs.py new file mode 100644 index 0000000..0dfa1ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/big5hkscs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fcf88553a656abe5e4dc1a8e89d1e279ddec83de79e22f971ac04e7632708e9 +size 1078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/bz2_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/bz2_codec.py new file mode 100644 index 0000000..5c26946 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/bz2_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a34436976bb5137403c148cb8b332653f14caa6cdf102150e82646d5249a5e +size 2327 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/charmap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/charmap.py new file mode 100644 index 0000000..aa85a5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/charmap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ea641e7c63c0a022a663f5d2024a71124272e088c246583d2d44cdddf548a32 +size 2153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp037.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp037.py new file mode 100644 index 0000000..d569798 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp037.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa3ff4b328c72315ec622cd62feac21189a3c85bcc675552d0ec46677f16a42c +size 13428 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1006.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1006.py new file mode 100644 index 0000000..dc5601f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1006.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fdcd59d3277c3768de74dd8ce4f5f8beea569c00cbaa3a20714500f3508b8cb +size 13875 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1026.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1026.py new file mode 100644 index 0000000..078716d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1026.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c1d85be11a3a0a5e6a40101c68548480d0378df0414e3c16d9cbe9f923c028e +size 13420 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1125.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1125.py new file mode 100644 index 0000000..14eb83f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1125.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5286e2162d53a6b189d83b242bc04ab59a48bbbc4ecf094c11bc1542c0604279 +size 35295 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1140.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1140.py new file mode 100644 index 0000000..6924fa8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1140.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0451016f6a4b7013dea1ba35925412fbad743ddf46e857be2c272f2a2cb8d403 +size 13412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1250.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1250.py new file mode 100644 index 0000000..8a150dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1250.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ffea0100abef80f916bc2920b296b2eddd6ecb06fb3ca07549f95fc92ca1f11 +size 13993 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1251.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1251.py new file mode 100644 index 0000000..36eabd7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1251.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46fa091d1822434e8d0af7a92439607018872598fcde44026f413dd973f14c98 +size 13668 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1252.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1252.py new file mode 100644 index 0000000..573f634 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1252.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7acb7b80c29d9ffda0fe79540509439537216df3a259973d54e1fb23c34e7519 +size 13818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1253.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1253.py new file mode 100644 index 0000000..1244405 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1253.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0b0afbd19db367c34c505f99a2fccafc6bae3dfd4e316f86375179dcfc60a28 +size 13401 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1254.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1254.py new file mode 100644 index 0000000..a080d3a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1254.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0986acd9a25fe91c4720c912322253ad105ab951a2d0d364cf0e522e6e52c174 +size 13809 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1255.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1255.py new file mode 100644 index 0000000..f8b9d7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1255.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c039ad62ee73102915d989cf390f76896c335ca8dbcdd4ca27d5441f76e081be +size 12773 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1256.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1256.py new file mode 100644 index 0000000..416254a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1256.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24a69e11902cc4054280ec2de38ee836d0be22eabdb9cdc56d9a7b63c8cddb06 +size 13121 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1257.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1257.py new file mode 100644 index 0000000..53b32e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1257.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:902262c0640fc0f21cf85a86456dc33d43e51b07e6c961526bf7f7ed4ce2ab8d +size 13681 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1258.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1258.py new file mode 100644 index 0000000..0b288d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp1258.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9e1e891dd1f28dea5abb5819aee1477156d288733eb2342f0696f1e5dd0a11d +size 13671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp273.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp273.py new file mode 100644 index 0000000..cb62dc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp273.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:016c8da778e50cbcf76815bbd8f6d0d33dbf1faf852726d85a5a47651c371033 +size 14439 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp424.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp424.py new file mode 100644 index 0000000..d100c40 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp424.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae6e956b42cf3ae32e988833772fc040f8393da007048ad2b4e1d621fe6523e7 +size 12362 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp437.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp437.py new file mode 100644 index 0000000..ceacf13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp437.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b0a9ae2e74d370354cc60cbcfb77af970364818be2e2a446187dcccf9e28acc +size 35262 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp500.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp500.py new file mode 100644 index 0000000..303f44f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp500.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5cac573ed357cb6c2a672d01696212c25e306936586d94be0d0130354a4db6f +size 13428 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp720.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp720.py new file mode 100644 index 0000000..956c292 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp720.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:016bdb7208a0d6bfaf8972c1f6bb4b3de39c77e026b49ed106866d592be4810b +size 13995 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp737.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp737.py new file mode 100644 index 0000000..36a8fe4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp737.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2da9d418b2364c2e1a587b7a6e26ff5601c16aa7993070f2c955ddf2a1f860d +size 35379 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp775.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp775.py new file mode 100644 index 0000000..c753a28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp775.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00f2a5e71ca98ed656ec430a80fc2e971988a0a33ebdea77661bdbe24fe2fbff +size 35173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp850.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp850.py new file mode 100644 index 0000000..d3c4252 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp850.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcbe5938d7fe65072d4a286a184046db211544c30f0c3c370b9cd594cf3b36bd +size 34803 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp852.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp852.py new file mode 100644 index 0000000..144a86a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp852.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b6ad769607b3db0d60e4ba1a6321a3823ad8460890d48c816220dcdf8cbea98 +size 35700 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp855.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp855.py new file mode 100644 index 0000000..e6378a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp855.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4f47a5cf3fe5a8cd269b68a73c1dc293a75cd3b9c0489cfa600919b47b35a4c +size 34548 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp856.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp856.py new file mode 100644 index 0000000..99ddecf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp856.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c9dac1b08d688b81b4f11ca603336fbd5c7fc4c1a30e8b7836283c2ad9a8e7 +size 12730 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp857.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp857.py new file mode 100644 index 0000000..b06304f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp857.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ae4cb6989342105c513678480ecbdf2d5d8e534e69704964d0fb4d2a960039b +size 34602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp858.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp858.py new file mode 100644 index 0000000..7f65ea0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp858.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04a67b43efa1e0ce2d80791c290bc2c8ea01c3991eb3df37528b1dd575b12330 +size 34713 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp860.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp860.py new file mode 100644 index 0000000..99540b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp860.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b8b4b2658ecc3dc53d4b0760aea95517be298fafbfa69574b08933747922be +size 35379 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp861.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp861.py new file mode 100644 index 0000000..cfef8ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp861.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7fe52a55fdcac4e6e9ecdc4884c793d1feb345d0276b074214db1bf4bcf3033 +size 35331 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp862.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp862.py new file mode 100644 index 0000000..c0a37f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp862.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d99c0415136ce45ab438c8238772a1a132e7b38212c623467c2170f1a8aae75 +size 34068 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp863.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp863.py new file mode 100644 index 0000000..51d948b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp863.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32fc23645a773ebb3247b3692d0525ea43513b358dd0350ef3a171864e326335 +size 34950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp864.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp864.py new file mode 100644 index 0000000..4763e83 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp864.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8879db3682b0f234bfcf97fe74a3a7db63cfd5f40281f580e911932dec4a4d3 +size 34353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp865.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp865.py new file mode 100644 index 0000000..06fea7f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp865.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0722bbf3a0f93700e99b3816e9e52c75674e14319146f9ac3fd1e17f87e66cb0 +size 35316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp866.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp866.py new file mode 100644 index 0000000..61e7ce4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp866.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3a033b3b790018a0a02e9f67a03530753c7fb5f94b6aba84f5173d29fb389ae +size 35094 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp869.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp869.py new file mode 100644 index 0000000..467e736 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp869.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4322e184d3c1dfa56edb013e895cbfb71130e7846f8f56bcafc4c0082373cb6a +size 33654 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp874.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp874.py new file mode 100644 index 0000000..d65c435 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp874.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94179e22722674527bd56386b5e9dac5427b0f55248d1aa63e204c105da18d8b +size 12902 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp875.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp875.py new file mode 100644 index 0000000..4d376a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp875.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c42adfec39cf9d891fbb2ed19d882c6160a00b8487b7867f9e2296b9e2f491b +size 13161 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp932.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp932.py new file mode 100644 index 0000000..6d6fcf0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp932.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f917db40f96f9f676e45fd9f1a7fa5d9bbb67a703bdf88b546ca4da84c4905f5 +size 1062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp949.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp949.py new file mode 100644 index 0000000..5d10c16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp949.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da13fd6f1bd7a1d3b48aed1fc75f7516d6a33814086cf971e030625590e9dda0 +size 1062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp950.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp950.py new file mode 100644 index 0000000..b749d5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/cp950.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fd6e86dfb38006e753b3b0301aa4b377c64c25f4ec9e6333fc99c3f06e90917 +size 1062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jis_2004.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jis_2004.py new file mode 100644 index 0000000..815547d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jis_2004.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78265ba431395662e7252a9b79bc2a75ffe438db872b2cf1cbcfb243d83f0c87 +size 1090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jisx0213.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jisx0213.py new file mode 100644 index 0000000..c598de7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jisx0213.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ca22a7db25d9eeef9bf5facdc5594e3165ccf451528d36e3b68a03989521ac +size 1090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jp.py new file mode 100644 index 0000000..c538eaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_jp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8927683a4234b936be1935b8a799be78520438bb5ea072499d51e7fe3d182987 +size 1066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_kr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_kr.py new file mode 100644 index 0000000..48fb100 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/euc_kr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03afe0cf8020529ead00a0ea26a7131d354994cd2352d42f9032216b3748ea91 +size 1066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb18030.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb18030.py new file mode 100644 index 0000000..9280414 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb18030.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d9c1db7e2959e60e4f6cb4b97c884585668c55b48f2d9d715b2bdaf5e78c671 +size 1070 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb2312.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb2312.py new file mode 100644 index 0000000..60ca344 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gb2312.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b5573ebf7fdc20dcf126633adf0b7283c08629d36dbefa669c985c9ddb98ea7 +size 1066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gbk.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gbk.py new file mode 100644 index 0000000..64aa361 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/gbk.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c7828e3b9661e39d4d75419a12b9d132fa9d0b4daec36f3df51ad1c3a638de3 +size 1054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hex_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hex_codec.py new file mode 100644 index 0000000..4f9d001 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hex_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5881c1aeeeb5f9cd27ce0e0e62ab9d6551f094955dbd52dc8184165daf78aeba +size 1563 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hp_roman8.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hp_roman8.py new file mode 100644 index 0000000..25d3f43 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hp_roman8.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:681ff6a2273bd64450e04fc6f04b2ec63015a91490e30a31e25ed193708c99d4 +size 13789 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hz.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hz.py new file mode 100644 index 0000000..5e36d41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/hz.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2601dc6ef938ff87bd2024b3c4785254f2b3dd4d8d34d8f63e254d7b8545b077 +size 1050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/idna.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/idna.py new file mode 100644 index 0000000..a656ae3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/idna.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c2181970f9ed35031700453022ee123069dc207200bb2f74c340cc1b71ba0de +size 10027 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp.py new file mode 100644 index 0000000..ba80680 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7169767dd6732a80a0b665315588ef9cff2df4d495a86bc0bdd22b5c9f0644b9 +size 1092 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_1.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_1.py new file mode 100644 index 0000000..2f50700 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_1.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:627d3bdb5d3bc70dd00e51199b689d1c225efe747a2db8d5938e6af78263f572 +size 1100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2.py new file mode 100644 index 0000000..0fa2cdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc680a0e34dce73756f0e3b5cbb23dd819022be7e10f80e55289a5eab9ed7c2e +size 1100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2004.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2004.py new file mode 100644 index 0000000..26b5293 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_2004.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8cb592df0cf38a6b7e8265c02d7784fb32052ef9ad94d0ff369889eda540273 +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_3.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_3.py new file mode 100644 index 0000000..5f4a5cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_3.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a2ae4368d962c2e7b5db2f29ee89efd5a7fdb881def523c21670e0d1a1c50ce +size 1100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_ext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_ext.py new file mode 100644 index 0000000..05801a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_jp_ext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b4439c7dbe65638166a70c5404cabb72552019d1f497193c6689b86bd3c4c94 +size 1108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_kr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_kr.py new file mode 100644 index 0000000..37f886f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso2022_kr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd9efd7094361f6557d00857e332d7229e922597336a0714fb0fa2402c954029 +size 1092 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_1.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_1.py new file mode 100644 index 0000000..d563f8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_1.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccfdba207b483dcd38673d85b6e2a773a5bf64e8ae9db7e90a01f8014e62b24a +size 13483 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_10.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_10.py new file mode 100644 index 0000000..5d6b991 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_10.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76216c65399de88b6d40e0be3209ed7b14d6dd87afb9c0a984adddd0cf6b559f +size 13896 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_11.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_11.py new file mode 100644 index 0000000..d80aa60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_11.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e346f5769e0c3eeb6b5547b954481a821481a970aa8fec33bffbf07b880689a +size 12642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_13.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_13.py new file mode 100644 index 0000000..f78d9f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_13.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bee45734b991c04e76c2aba2ba8c7208f6ba743324d815de95965945643d8084 +size 13578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_14.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_14.py new file mode 100644 index 0000000..db2a5fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_14.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c498772fadf244077b650e468e7922ae1c0db74ed6984a2a81bc0e088631f0f9 +size 13959 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_15.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_15.py new file mode 100644 index 0000000..956f046 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_15.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d703d64ae2d23602e38c2f387eeffd5d4e5792209bc3ce64928fee2f99dcd906 +size 13519 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_16.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_16.py new file mode 100644 index 0000000..8be980e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_16.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f49fff248546d510f7ecb5fc2c25c9b68925a2f483b938035cd7a54957a560a2 +size 13864 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_2.py new file mode 100644 index 0000000..5f89f05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9102ae464030e5a0f4d1712435ac3bdb2fa98ecaa689b5965442ef92b13dfec +size 13711 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_3.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_3.py new file mode 100644 index 0000000..a725621 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_3.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e372e25b32e8657db9b57b3c9b53d68b67f3fc6651c53b071dcac6cab6662fca +size 13396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_4.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_4.py new file mode 100644 index 0000000..57f6873 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_4.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:164c26a1a13dc22a21a7f80e5c0176ea9223111b759d2ed1cd8b3c55aab63bbd +size 13683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_5.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_5.py new file mode 100644 index 0000000..65267da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_5.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4622bb45469e23c852698a6b784b5e28afd8072fddb8e319c02d39b138cb9dbe +size 13322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_6.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_6.py new file mode 100644 index 0000000..05b53bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_6.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1543f9ad8dcc4aa912c5c901a5a216a4ea3db62fb19197a0d90ccc0ee69b4538 +size 11140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_7.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_7.py new file mode 100644 index 0000000..f521a7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_7.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41feb2bec72e3f07c0d67f0e421ff8e51a8e1688aa20af7c8a12ce0ddf464104 +size 13151 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_8.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_8.py new file mode 100644 index 0000000..1a25cf2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_8.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63d11b2592bdb036c8f4150ec1f968d1a6e01d22af8d7daf94f6c72e0a8fd752 +size 11343 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_9.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_9.py new file mode 100644 index 0000000..1d8def0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/iso8859_9.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd0ccfde95fcfebf48ba5ed5f697c4799c3303b853077f48ffef2fd9ef1e30c8 +size 13463 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/johab.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/johab.py new file mode 100644 index 0000000..c417a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/johab.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c83aa2098ab15fbad7eb999c303b27350b0459ee9f6fc2b2bf4004d4285f9e8d +size 1062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_r.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_r.py new file mode 100644 index 0000000..95d1e8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_r.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90a883b291d5f1e6dbb735413d51648c31580b1927500161c16624836d01e5ee +size 14086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_t.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_t.py new file mode 100644 index 0000000..4697d6b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_t.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d922a935afde1bd7c22cf8a9f23a237511c92c51509a80051dd2862a84d09f +size 13501 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_u.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_u.py new file mode 100644 index 0000000..6230c3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/koi8_u.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f77f72f8a42a1ba97c7d53afdb6f6a6d4e08707caa4d4cd57d6c113156bb32b +size 14069 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/kz1048.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/kz1048.py new file mode 100644 index 0000000..0b46e77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/kz1048.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da8bac477f14620d8aa89eb6cb8963602e1c39724148369c88ef48c95d495011 +size 14030 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/latin_1.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/latin_1.py new file mode 100644 index 0000000..c5a3344 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/latin_1.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d5a6c46fe6675543ea3d04d9b27ccce8e04d6dfeb376691381b62d806a5d016 +size 1314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_arabic.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_arabic.py new file mode 100644 index 0000000..646fc05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_arabic.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5c262f930f3b7d83466283347f8b0d7b5c7cbf18dd6fceb4faf93dbcd58839e +size 37165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_croatian.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_croatian.py new file mode 100644 index 0000000..c39ff89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_croatian.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68539ca54ffd5d96c07f3590e720d8a28009cb7caa13e607ac3084d19dd5a19a +size 13940 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_cyrillic.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_cyrillic.py new file mode 100644 index 0000000..dff15af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_cyrillic.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac11e1f54789aff782d79fe7d6fd52183ef0f57b6ac4a0f680353fe0113f0d4d +size 13761 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_farsi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_farsi.py new file mode 100644 index 0000000..4ce4880 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_farsi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0f1fa8399ad1844ef5f07acfcd523585ab576f411d845a008a610ff6a25ad31 +size 15477 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_greek.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_greek.py new file mode 100644 index 0000000..07b35ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_greek.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c67d361f922b611213fd8feb9fcaaa9ff8cb57cd961f1ca1b5cf4483b1dee66 +size 14028 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_iceland.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_iceland.py new file mode 100644 index 0000000..32cbb6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_iceland.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64de55fd0ea0fe4d2512b2303dcb3d20cc57061d78d08a11d3aa6f19e1877826 +size 13805 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_latin2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_latin2.py new file mode 100644 index 0000000..34c072a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_latin2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74c9045009fabffa3e81b5b41d97a85860ba42d109db6673a276ea8ba9b59e56 +size 14430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_roman.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_roman.py new file mode 100644 index 0000000..1866937 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_roman.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bf6fde10f2350232de5ee47d27cae885362602443b59a924de8eb6998b18bb2 +size 13787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_romanian.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_romanian.py new file mode 100644 index 0000000..3eae76e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_romanian.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1de13f2703a62479c4312f9a39514c7691cf7f737958b3915af395a53a596183 +size 13968 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_turkish.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_turkish.py new file mode 100644 index 0000000..39b532a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mac_turkish.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f9e6c9f92513c69754aef1d7ab235b09e9eeadbbced4c86df6e2aa2d06a1ef +size 13820 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mbcs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mbcs.py new file mode 100644 index 0000000..788ee56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/mbcs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00887a6d93c97d320cbb1c3379bd7c6de767ccfc34ed13442891e06cc62f148 +size 1258 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/oem.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/oem.py new file mode 100644 index 0000000..a9f11f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/oem.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991d1fd2f4b815943eae7f7bfa9f87e2de980acb08932bea3258fb034902a15f +size 1060 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/palmos.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/palmos.py new file mode 100644 index 0000000..a034ef9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/palmos.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e5d71c1fa128602e2d10e9bed0b271132df349290f4465cfca9d5daa5ba86c +size 13827 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ptcp154.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ptcp154.py new file mode 100644 index 0000000..72823b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/ptcp154.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3bda3c1415d37dd1c314e3f474529913f36f7021279d82ded0d11154eed55f2 +size 14327 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/punycode.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/punycode.py new file mode 100644 index 0000000..f276547 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/punycode.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:823d1424afa9508ea425f667f787567c80a6a28ae9742c66aa90a829acc19748 +size 7120 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/quopri_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/quopri_codec.py new file mode 100644 index 0000000..b271215 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/quopri_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bf9a405b6f2359e5b931e0d9fb9bd9609b013688ce2e58aebbd9bfcb119a356 +size 1581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/raw_unicode_escape.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/raw_unicode_escape.py new file mode 100644 index 0000000..39b8fdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/raw_unicode_escape.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc24ffc2d06cab80423ada94e3dffc02c010346e17efc2fffe86825a6e07808 +size 1378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/rot_13.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/rot_13.py new file mode 100644 index 0000000..e1e7cbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/rot_13.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc6052650356095a92a8cb3a6c63300b7f51a63b6cd3b6f636350b5f22cda32a +size 2561 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis.py new file mode 100644 index 0000000..0ef2126 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:195c87bf032904002d5adb51c256ae14d99f4a69ffc15c989ca34dd51fc203d7 +size 1078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis_2004.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis_2004.py new file mode 100644 index 0000000..1fe176a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jis_2004.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b806adf317a9920e69a1deb14c7f078f0d5a9bd26bd370c89492f4dd296aa52a +size 1098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jisx0213.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jisx0213.py new file mode 100644 index 0000000..ff64ae3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/shift_jisx0213.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16be3cdc9efa7c3a6ec5a683bc03bcaa9dbb41fcc70c92900130175a761a9d62 +size 1098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/tis_620.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/tis_620.py new file mode 100644 index 0000000..05da5ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/tis_620.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18afe3a0fd28797d71762eaffadc9822e0cb8832be696af2298f6727ab92627f +size 12607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/undefined.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/undefined.py new file mode 100644 index 0000000..9e097a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/undefined.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e882ad26197f05afb20980407787f77d18e234f562e6ec396b7d9df3c7eef5fc +size 1348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/unicode_escape.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/unicode_escape.py new file mode 100644 index 0000000..879a7c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/unicode_escape.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d1372cf4f46e2f99820070b78563bd3eeed60ffc43a932b483cc7918f3da5e9 +size 1350 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16.py new file mode 100644 index 0000000..b131ff9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd85a9d634b6f3868d6777e2b0367643571b3e61111b87c79f65df3f57c7acb3 +size 5391 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_be.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_be.py new file mode 100644 index 0000000..13384b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_be.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16329b46d794f4d13b38a7a2540002e72e176d85237872ca3a24bf3c90d7665c +size 1079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_le.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_le.py new file mode 100644 index 0000000..8de716f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_16_le.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d3b04f3abd9fb6151fee5ca0426c2e7ed2677ef1358c269747ff8946ffc02b9 +size 1079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32.py new file mode 100644 index 0000000..932ee35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97f6038f368954dd48be9b5fa41b1395a71fca0271b0fea69f8e16f9f6633775 +size 5279 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_be.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_be.py new file mode 100644 index 0000000..b021c52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_be.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3698a68287cc78323117d14be3b0b40f46289a850eb06aa9a5328d44b2a30ef +size 967 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_le.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_le.py new file mode 100644 index 0000000..89e7826 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_32_le.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:945af03d1da591640de7176bef879658594b399ac7bbe564d790893ca7b38a73 +size 967 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_7.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_7.py new file mode 100644 index 0000000..16b4d2c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_7.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1be7fc4c85edaab33427d3f1230d56b8a4b0d75566f726d9dfc50facea36688b +size 984 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8.py new file mode 100644 index 0000000..9e7ab9c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c54c7db8ce0722ca4ddb5f45d4e170357e37991afb3fcdc091721bf6c09257e +size 1047 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8_sig.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8_sig.py new file mode 100644 index 0000000..baef780 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/utf_8_sig.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21a95bb95448f2f064f08aa2c89e843b87a20a5a13c45c6c47c288f2be5219a4 +size 4263 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/uu_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/uu_codec.py new file mode 100644 index 0000000..f6756b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/uu_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3991c68acbb5ce946c6ba71ccb044fbbb449f9eac9b76262456537eaebef9340 +size 2954 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/zlib_codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/zlib_codec.py new file mode 100644 index 0000000..20dfb3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/encodings/zlib_codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b660028249bdb7e9b80af1d5432bf0c90b132a6d0dd205e2ded2a3b3275b728 +size 2281 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__init__.py new file mode 100644 index 0000000..7f90ce3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca96b1b61ef834837c1242bf875d012012ece0cbb2e4aa2e4f631bbd595e842f +size 9734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__main__.py new file mode 100644 index 0000000..f3d3099 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2dee4f4b55958aab36aebbe6d2d644065e9c36a6dd44727e955fc590501925 +size 93 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl new file mode 100644 index 0000000..398188c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_bundled/pip-24.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba0d021a166865d2265246961bec0152ff124de910c5cc39f1156ce3fa7c69dc +size 2110226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_uninstall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_uninstall.py new file mode 100644 index 0000000..b66dbc0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ensurepip/_uninstall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b24642d35a69a8378bd4c8a034c79efdf0d582d5562acfcf19f790a90a7d508c +size 839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/enum.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/enum.py new file mode 100644 index 0000000..6580a1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/enum.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1b2f7dd26000e03c483bc381c1af20395a3ac25c5fd988fbed742cd5278c9a +size 83745 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/filecmp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/filecmp.py new file mode 100644 index 0000000..a9b84e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/filecmp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa9e254243edcc519ac1915bc5fd7aa384ad1c1e5e140cbd6bf0c77cc73d198f +size 10500 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fileinput.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fileinput.py new file mode 100644 index 0000000..50dc040 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fileinput.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac33a85f39799938d6a532886f801f34ce29b8b2563f55ef7e56b41b3b9e44e +size 16156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fnmatch.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fnmatch.py new file mode 100644 index 0000000..d8b6ea1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fnmatch.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146d27a2853cd14c95ee49cc6130b9f84e2a56618dd1be695cddb20489460425 +size 6184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fractions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fractions.py new file mode 100644 index 0000000..f3b3f3a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/fractions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54ddef0252ddbe76a3bef3d821e1ae96bb5c655a1621b3b913c3ebde9d762a00 +size 39055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ftplib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ftplib.py new file mode 100644 index 0000000..65fb964 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ftplib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b651a03a02373ee9844c52c5598cab1ecb4f6d8e7864b514a303010ac32945ef +size 35701 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/functools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/functools.py new file mode 100644 index 0000000..f0be367 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/functools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bb54daf5f8e14a01fee74d58826eecd6cd14e6f7044e7d11db534ba0fabed9b +size 39123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/genericpath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/genericpath.py new file mode 100644 index 0000000..a8c0494 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/genericpath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c540a28c560234d4d00d3451dfdde05b404f81a38bde87086ce8773021e1cc1b +size 5468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getopt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getopt.py new file mode 100644 index 0000000..1079b84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getopt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe8c1422eff6be1280800a819718f88dca24617f03be09b91fe769f1483438e3 +size 7703 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getpass.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getpass.py new file mode 100644 index 0000000..e6b9b3b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/getpass.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2b77376a296cbdd0f659da6cab047426a4719d3f09949aba8f334bd01e80593 +size 6175 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gettext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gettext.py new file mode 100644 index 0000000..7a302d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gettext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da55e22f51bb369819fe4cc1201459c8f18ca948b6ca00137e6dfd7012814d83 +size 21966 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/glob.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/glob.py new file mode 100644 index 0000000..6d6fa29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/glob.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65e7c086807d87af4810dffc492d1faac8bece9531827a9c370f4d1e79cf14e7 +size 8984 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/graphlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/graphlib.py new file mode 100644 index 0000000..faa74a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/graphlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c23a989085259603c38e401b7ecc7d9c2f591c0feb7b4b74f5721b113197541 +size 9906 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gzip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gzip.py new file mode 100644 index 0000000..879d218 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/gzip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad3098b20fda695a7caec7326d2cf0abeeb253d8cbd943d18b44719c6e208141 +size 25553 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hashlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hashlib.py new file mode 100644 index 0000000..c49750b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hashlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c8900585062c567a283cb782c3c867f86c38516e30f1f98a04ffa775b9a013 +size 9602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/heapq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/heapq.py new file mode 100644 index 0000000..d3fef28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/heapq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bdbf0450b6721f00fb0508fce97625c9560a87ccae8d551d94a3e220c8195e6 +size 23627 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hmac.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hmac.py new file mode 100644 index 0000000..4d7e3c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/hmac.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3a1c91643beb33a3d31ef4048500cd852c46967595d332ed64358d807205192 +size 7935 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/__init__.py new file mode 100644 index 0000000..940d873 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4af8ed80247d7cc374e1d4a6fcc5244212a8de668e40b11c0f328db33c686fef +size 4907 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/entities.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/entities.py new file mode 100644 index 0000000..bed55c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/entities.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa0b2845437aa3680aa6c33457d7a242dd303ed27c2a5073772d1c2b04d62473 +size 78025 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/parser.py new file mode 100644 index 0000000..098185b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/html/parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed37c8ded84afef74dfd671f8a20911f58b379bef8f577739c05dbfa99115017 +size 17510 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/__init__.py new file mode 100644 index 0000000..3ac8c50 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:420e7f74a3b5062b7cd1eb820962980fcca3cdea512c1fd6b641326f70a54f4e +size 8508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/client.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/client.py new file mode 100644 index 0000000..72fea6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/client.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cffcbffb80491a4a5c85da575abd89ecc410d75547bf8f9748b4db4445b89cc5 +size 58776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookiejar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookiejar.py new file mode 100644 index 0000000..be88536 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookiejar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4c1fac9a8323fab6840beecda77c69f83fdd72f9345b3d8259c5cc1015fda4e +size 79559 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookies.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookies.py new file mode 100644 index 0000000..3ac308b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/cookies.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d049d9de921dd9a2d13cd205fc0abed14691cddc8ba6f3c174653af938ecd79f +size 21094 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/server.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/server.py new file mode 100644 index 0000000..5b09d89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/http/server.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:240ba27e5469b77e14bcd0f912f778fcff79cfd423b281dab0cdb1ac4bb0f32f +size 49836 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/CREDITS.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/CREDITS.txt new file mode 100644 index 0000000..0124b90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/CREDITS.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbbda5b891da47d37567e28733e1049130820c572cc43d26c17a1488ba7721d5 +size 2199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/ChangeLog b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/ChangeLog new file mode 100644 index 0000000..d9c6ee4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/ChangeLog @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ebd1900bc9aac681b38afdfe01716194e2a50b23547817626023af543b40cc +size 57951 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/HISTORY.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/HISTORY.txt new file mode 100644 index 0000000..1a8acf8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/HISTORY.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a84b2ac9c29304ceb63a7514912a7050f0b54af7f0eb520b5ec8cbaf009cbae1 +size 10608 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/README.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/README.txt new file mode 100644 index 0000000..1092292 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a344541dd13fd028f68d09a00254c385304512b4657471cbc25ce56770b5194e +size 456 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/folder.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/folder.gif new file mode 100644 index 0000000..b8f4176 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/folder.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c98d566a13fd599d1c11a375f387fef69b6c595c4f18c5d88c188a860be0e55 +size 120 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle.ico b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle.ico new file mode 100644 index 0000000..d90def4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle.ico @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f13eeb5dca39d05e24b9eb069c6dcb2748633822d67288a8bf8b7e21cdddf55 +size 57746 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.gif new file mode 100644 index 0000000..45f0c2c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe3af292b38660a8a58b1a8b4fa4240aa190602e7e9a700ea0536b3181fc968e +size 634 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.png new file mode 100644 index 0000000..46cc2af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_16.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78fb3fb0ec11f61bc6cf0947f3c3923aa18e1c6513684058ed0fa01ac858143e +size 1031 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_256.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_256.png new file mode 100644 index 0000000..dcb94bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_256.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f517467d12e0e3ecf20f9bd68ce4bd18a2b8088f32308fd978fd80e87d3628b +size 39205 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.gif new file mode 100644 index 0000000..89a6005 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe70991cfccd1267922e94d91e02e9a58d2d29fd3382a2f4975280b9023cb7b9 +size 1019 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.png new file mode 100644 index 0000000..464aced --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_32.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:797cd05f1964d57c4c6c248ac7f7ea6a38019ada32a9ab7e6c28d060f87b03de +size 2036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.gif new file mode 100644 index 0000000..8c44232 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37484901eb40eefa846308e1da3ff6f240ea98f769a2afc3cf4fdba00327ecbe +size 1388 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.png new file mode 100644 index 0000000..fbc92eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/idle_48.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a09f433197c8870b12bb7859cc4c3fe2068908cb1ddbd4880ab0f6fee91b6c23 +size 3977 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/minusnode.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/minusnode.gif new file mode 100644 index 0000000..9854120 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/minusnode.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efa5aa1d1e3439ab85425bd2aa3a25b9e6c21309e672690cfb32219e1eb7a7f3 +size 75 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/openfolder.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/openfolder.gif new file mode 100644 index 0000000..91b3761 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/openfolder.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a59e2abf1840156e9db8f85a38822fd56ab79a139eb95ec86f1fba1bb87326b +size 125 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/plusnode.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/plusnode.gif new file mode 100644 index 0000000..c4c7e86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/plusnode.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ace9e90a2bcb16d06c4d78837137f2c14bc26b3bd9f24b7b6afeadb689bdafb +size 78 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/python.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/python.gif new file mode 100644 index 0000000..2d73d19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/python.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:158c31382f8e5b41fded0c2aa9cc66a382928b003cdd8b5b0518836ad9c89377 +size 380 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/tk.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/tk.gif new file mode 100644 index 0000000..666c5cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/Icons/tk.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f16cb2e322891dbd9101302c09ffda0c2a3a72d053bb8c0927d507414c59cad +size 72 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/NEWS2x.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/NEWS2x.txt new file mode 100644 index 0000000..a041840 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/NEWS2x.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f89d07cd95d20d295edc6fec7a3663a7e3fde33d94d3321834f7fb673d508b8 +size 27832 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/News3.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/News3.txt new file mode 100644 index 0000000..ef1914e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/News3.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a10b33dc764017841adac767172a292d5b88e9ac198f8ddfbaa2562b8d34e11f +size 56945 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/README.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/README.txt new file mode 100644 index 0000000..c542bc1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcd6421ae86c6a0b52bdf28f94582e2c20829f230e8d8e0e3f4b59c8d0e269ed +size 11943 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/TODO.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/TODO.txt new file mode 100644 index 0000000..39eaf57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/TODO.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1887d7df719819d8fe151b28b4b0555ea6e512f7a22db5a113e633386c1538cb +size 8688 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__init__.py new file mode 100644 index 0000000..11e6745 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b0fddb52b5b9c8d3371b1915fe54915cfdc34b0c175857bb4331446f8f628c6 +size 406 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__main__.py new file mode 100644 index 0000000..25be81c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80b0425e14bcbc3c5c49b0b4d282f777513a5e825d0bcd55a5a9998d4c4d8920 +size 167 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete.py new file mode 100644 index 0000000..826a65e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6863e5703612857b03bc44ce9e5c591b24bbaa02eade5900664e9d87217df10 +size 9582 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete_w.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete_w.py new file mode 100644 index 0000000..275db8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autocomplete_w.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d88d2b736871d3302cf31eaf785d02c0a2d9acd4b23f1b088857bbd2f2bafa8 +size 21361 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autoexpand.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autoexpand.py new file mode 100644 index 0000000..5ff6ac3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/autoexpand.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eec10ffd8d460fb90aaa61fb286f25f982793df124a55d52a92b34a0b15c3f4c +size 3312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/browser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/browser.py new file mode 100644 index 0000000..48d3a8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/browser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b7fb874bdc94408d6b3a8579235783c53eb56eea39b43c6c81b24290cc9d3c2 +size 8848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip.py new file mode 100644 index 0000000..2c6f309 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e24fc65b0dfe9b0abfbb0dea97ab222098aa978f85f2e79a2ac56ff92f5bb2a +size 7472 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip_w.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip_w.py new file mode 100644 index 0000000..71c90fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/calltip_w.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1476595ef18d6adf82d23b435354968683f4099a88fcdb2d814706da3e3ca4fb +size 7285 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/codecontext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/codecontext.py new file mode 100644 index 0000000..3070621 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/codecontext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d93dbc7c9c3b356473ed21ae215c0bf372936966b2c26263cf52d0a35252daf +size 11690 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/colorizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/colorizer.py new file mode 100644 index 0000000..f9494c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/colorizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caced19f537821ecae99736c8c4efb8f879cdaf10b41e1035655f6503a4a4167 +size 15167 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-extensions.def b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-extensions.def new file mode 100644 index 0000000..d496173 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-extensions.def @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a85cddd234ebef874603be43931ba8e4dc472ab296ba7078b4070ae1d3bd111 +size 2328 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-highlight.def b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-highlight.def new file mode 100644 index 0000000..d10a1e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-highlight.def @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b196aa1f93dee8419ac4014149dde19c5d75f3eb650e5504c7e25ebb98de36fb +size 2969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-keys.def b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-keys.def new file mode 100644 index 0000000..914864f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-keys.def @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ff9cafaf6debba83dd4d0f1cf983f0ce4c2c741d5601c63bf58f8a968546073 +size 11219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-main.def b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-main.def new file mode 100644 index 0000000..0be2f18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config-main.def @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c78e90964033d608d7c27364dc4504c25d4cde1dedda47b800353085ef6f587 +size 3261 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config.py new file mode 100644 index 0000000..6623c10 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5073e4a213e1218c9a0b738b30118b165c483727f816d8fd803c5ea8b2360600 +size 39319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config_key.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config_key.py new file mode 100644 index 0000000..a5ded71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/config_key.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00bc58751f927ecf96c7639bdaee3465230a62904f1422e2d6fccdeea85d6836 +size 15584 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/configdialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/configdialog.py new file mode 100644 index 0000000..00b7650 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/configdialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea6daa65c8ef93be96c7029a77b0c0cf3c50e7b234d829fe1379634372b415e1 +size 107722 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger.py new file mode 100644 index 0000000..63858a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2a17354be31a1021bda532f04f4d21ec7f57d8dff9af13e679ecdd852984e3d +size 21593 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger_r.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger_r.py new file mode 100644 index 0000000..d918b1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugger_r.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6993114bc2beec73984ebb74329b7346e455af8afb5ae8b8aa0f3eb9bc3b5d5 +size 12505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj.py new file mode 100644 index 0000000..49d968e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fccd8335e8c3ce7ca07dff376137b2ddec41e477a84b422df40e2edd0d5b0ba +size 4323 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj_r.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj_r.py new file mode 100644 index 0000000..79009d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/debugobj_r.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58b528ea4605d5f039442830286c80b4720dcc23b0339281dab5dccc14374936 +size 1123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/delegator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/delegator.py new file mode 100644 index 0000000..dacecdc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/delegator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:699e43c46f1924a7becb3137653c5260c4a913fa7563b899fd590cd47f68d963 +size 1078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/dynoption.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/dynoption.py new file mode 100644 index 0000000..0dca315 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/dynoption.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f783fac61fba739a734520a3e80199aac78ff90840020fc73b8e71e482af494c +size 2050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/editor.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/editor.py new file mode 100644 index 0000000..357758b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/editor.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d72cb2a6e1f5577541bd9f1345da89eccdaff4e14cef8257fa30d0ce168cdddc +size 71328 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/extend.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/extend.txt new file mode 100644 index 0000000..a3f77e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/extend.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13cd4b284b1efb37e9b99b1362ce31105ef85615187f470cd8e95817990fee16 +size 3714 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/filelist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/filelist.py new file mode 100644 index 0000000..0267931 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/filelist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03fb15a6d2d0e8663c486bc7a1979f0042774936169d4a952ef3d47460aae58 +size 4003 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/format.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/format.py new file mode 100644 index 0000000..0c1351c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/format.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a083ab464bb220bd30ab3ce6c7bb0da43cd1b45bd13ab77dc62f2a8a3f7abb +size 16203 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/grep.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/grep.py new file mode 100644 index 0000000..cbd1225 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/grep.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b3b593aef9e61ebb8e498513cb83a5facd369682526fb8518b093f9ebbadffe +size 7749 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.html b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.html new file mode 100644 index 0000000..2f6d5f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.html @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d49fbc6f172e2178af8db2fc9d8505863f7ac227410603ccf8e79422465bc2c +size 79716 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.py new file mode 100644 index 0000000..a39d8b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5cf050faee2f785a2f55b215c8632f7ac2b2469a20b0785fe700bc574266547 +size 12271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help_about.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help_about.py new file mode 100644 index 0000000..2847a61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/help_about.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f136253b4233e3cbb5ce5d58f824c7fbf3fe9f0c3f1a19107e0bc59ea49002c +size 9117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/history.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/history.py new file mode 100644 index 0000000..1c3d66f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/history.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aa21fec9e929f5d7ee6eeb9334e03317198bb3de054bb7b216fd62dc8fbf48a +size 4171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/hyperparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/hyperparser.py new file mode 100644 index 0000000..49357bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/hyperparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e81e9177fcf8acfae3d47ea8a9552ee4f012cc733e3e4a2043e86856403abe40 +size 13201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.bat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.bat new file mode 100644 index 0000000..396f0c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15a3977f0d2c6a8e87db2ef7050ea10afb3a88b064bf5ef95439924e42464114 +size 177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.py new file mode 100644 index 0000000..8764198 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e32dfca06f56cd261043b9de10a7901e939436c7f36626dc716e2f435fd1b15 +size 468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.pyw b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.pyw new file mode 100644 index 0000000..91361c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle.pyw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8bd323142da1e1365064e78e94466a9cca7694a31c7c70f67e0e06a2e3efecb +size 587 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/README.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/README.txt new file mode 100644 index 0000000..b89d9fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fd76009a4f4d948d8e82d83a4b999b772507edddd84e046bf98e0c61d1e0844 +size 9121 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/__init__.py new file mode 100644 index 0000000..74d5a6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df206fea04363282417cd5d0cb67c60aa506208681fe09735a856b735f4d0e5b +size 1277 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_noext b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_noext new file mode 100644 index 0000000..24301a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_noext @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec3f7a3773f65ee985181e92d7e327366937dd1aad11133009bf1c3fd868eb50 +size 72 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_stub.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_stub.pyi new file mode 100644 index 0000000..8c194d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/example_stub.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f457e4ef07b213f2fe1ad4a422655af08e8f999512646131532b28d7963e4849 +size 158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/htest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/htest.py new file mode 100644 index 0000000..2ac516a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/htest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0ec5d01fb455628b154e606cf8c15a3212f5eb178b8fbc7ac9ef5dae4743d6e +size 15755 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_idle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_idle.py new file mode 100644 index 0000000..79bd1aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_idle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:576aa5c6ed0b5a42a1474fd90d54b97c8f2d9abb408fa5e3f3e4d374a5d427de +size 2004 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_tk.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_tk.py new file mode 100644 index 0000000..c7c2b93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/mock_tk.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:679d19c85a426a888b76cac538a6fd7225f281234d0017c08a14305fc70ed57a +size 12000 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/template.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/template.py new file mode 100644 index 0000000..cce67d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/template.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c389a44988d62d4d32438a4acb081a40f8dcf450250d4e09651d8f7bd21455f2 +size 672 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete.py new file mode 100644 index 0000000..ae4223d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6f32bc7d37b1460d136e6a974d893f4562eb2355b2ce16e6f57e7ea1e92b259 +size 11398 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete_w.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete_w.py new file mode 100644 index 0000000..62b6ba1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autocomplete_w.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8d2fa36733f7c5abfb68bbb852db0de27a55142dbd888ef201b41a855d5e87f +size 752 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autoexpand.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autoexpand.py new file mode 100644 index 0000000..d265157 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_autoexpand.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6866d92d66a1f70f529bc8e32c689dfdbf39c34e8a01b546371f8d92246e07 +size 4793 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_browser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_browser.py new file mode 100644 index 0000000..c78fc22 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_browser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:532a269a58e66953bf6f9cb8eb36825b9fc58396c88b6ce9c08af0ae875d75b2 +size 8677 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip.py new file mode 100644 index 0000000..3364971 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218fcebfc3653927f3824cb722ed04a004d9fe5809c5ef68b9f219a6b102d2e8 +size 14030 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip_w.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip_w.py new file mode 100644 index 0000000..caa7c9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_calltip_w.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3bdc45a886d5805fc30bcca5bf893344c215f57f285fd7ab834da3ea3a0876f +size 715 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_codecontext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_codecontext.py new file mode 100644 index 0000000..77547f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_codecontext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5d19b6ca7f2e86499f8fe61a99049c9e4a7484e6808d68d32aad0dd58973b5a +size 16537 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_colorizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_colorizer.py new file mode 100644 index 0000000..40d3689 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_colorizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3a3791c536a3c5dca2f8274ba9ba38834f76d98cc6cce15758684ed881449eb +size 23504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config.py new file mode 100644 index 0000000..5742623 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:018719324d4e7ffc4c495875fe0f5a2c4368e1464f73db38ddce262702101b88 +size 32896 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config_key.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config_key.py new file mode 100644 index 0000000..6e24ad9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_config_key.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f99447b4386e957db35df678ee8601fd77f36fc8883bc5d983d062130ee48e5b +size 11818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_configdialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_configdialog.py new file mode 100644 index 0000000..65baf16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_configdialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae312bcc28b0021ba498e70b9a5c29aaba5cb71b91e84ddf9e8b5a5ab312a08 +size 56969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger.py new file mode 100644 index 0000000..a2e0414 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aad9503d32eb437e0decde979ca01730b441e5692691f3e25d5dd2d6de110659 +size 10024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger_r.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger_r.py new file mode 100644 index 0000000..d96733e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugger_r.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0eb3b8e1d20e47f63ed327aeeeda491d2ffb41777a9108feee158aa445790a5f +size 1001 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj.py new file mode 100644 index 0000000..16f2cff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3a5ceec69ce1794649b088ac861183b8adc4c91881b29fbb221cea1089b71ca +size 1668 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj_r.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj_r.py new file mode 100644 index 0000000..fca1a2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_debugobj_r.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:264859e8deff2f9cf3f81045142a09d3bf925f350dd48db5ba69368faf2f29f3 +size 567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_delegator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_delegator.py new file mode 100644 index 0000000..ce710d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_delegator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2acbe98d9db036baa7dcd46ac24b5832cf6b716c588c267365558bada2166387 +size 1611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editmenu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editmenu.py new file mode 100644 index 0000000..a36d86a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editmenu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93f790d07d34f2c80378d37beed57fa25bb250f5812b497d34e788105edc57aa +size 2638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editor.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editor.py new file mode 100644 index 0000000..ac9573f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_editor.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facc3c65f65e56d35f261a6829e525a52aed087047987f4755090a0a110a603b +size 8392 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_filelist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_filelist.py new file mode 100644 index 0000000..8c4b06e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_filelist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e8240fd5b08f2cf3d5dc16e39ac19f23737fb401ccb461fbbcc99bf0f481beb +size 828 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_format.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_format.py new file mode 100644 index 0000000..88cbccf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_format.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a2e9dfc0e7cb896b1e9bd61abe68c6b15f74c7349e393c3aa1eb05a363651f +size 24278 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_grep.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_grep.py new file mode 100644 index 0000000..d6a810b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_grep.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18441b4f0f2095fba843eec48293d5adc8d62f30a6be843d1b37f784070accc0 +size 5228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help.py new file mode 100644 index 0000000..709cb71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:decabf0433c50b63c75fe01cf5fc690c59dfbfdbcacf4a9d6411d90c8d57061f +size 899 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help_about.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help_about.py new file mode 100644 index 0000000..1e8e408 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_help_about.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e528fa30564a319c9524e13f18bf8e08115888c0e1b182096c9e1d0dce49cdd +size 6086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_history.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_history.py new file mode 100644 index 0000000..6d0b846 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_history.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cac6c984ce34456d4aefff5721b8d4c6fbe76286bfbbef8ddacf61d5d36071b7 +size 5689 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_hyperparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_hyperparser.py new file mode 100644 index 0000000..91c9bc5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_hyperparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:166421c087bdace4bbf6cb1fd8b8bba986b0dfb485762521c9a7ae5618edc166 +size 9358 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_iomenu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_iomenu.py new file mode 100644 index 0000000..7395d45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_iomenu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14c80a566031a8aed6a781755bd6d8bd6b08f5200c16a8495ea4ccd55121ef0c +size 2541 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_macosx.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_macosx.py new file mode 100644 index 0000000..7f0ebda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_macosx.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fbee21adef8f95f9be575f6058322d66a66775924ae594f0d9fa2e98d8d688f +size 3557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_mainmenu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_mainmenu.py new file mode 100644 index 0000000..45bde72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_mainmenu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c6bfccc93c9c0469bb6ead80ee552699871ab85ecfd3002241dae936ca7bb6 +size 1680 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_multicall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_multicall.py new file mode 100644 index 0000000..bce5198 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_multicall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b3a166fd7edd5da37f5fa2e7d078bac71cf8a2d6bb51df17878feebd1c5ef7e +size 1365 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_outwin.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_outwin.py new file mode 100644 index 0000000..8901c9c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_outwin.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31c1e56158dc7bbfaab81937fea7373ce99282fbb64cdd2386d749f3ed1d6595 +size 5583 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_parenmatch.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_parenmatch.py new file mode 100644 index 0000000..7dc6961 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_parenmatch.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d41411dfe26afe7f3302029333c7c9b896abfe96e68ec991df6ebb61daff408f +size 3656 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pathbrowser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pathbrowser.py new file mode 100644 index 0000000..1d5a083 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pathbrowser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7396a4069a03423f2c6c5ad62d92c742d17df0e3f2e7f66839ff111958ed1bf1 +size 2508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_percolator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_percolator.py new file mode 100644 index 0000000..459eb3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_percolator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:348ed04617a2937915b9c594792d5dbdb3edac826380da206fd54ff1abc556b5 +size 4183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyparse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyparse.py new file mode 100644 index 0000000..0df8cf8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyparse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232fe6760557664952185c669a444c0e16042fa28be2d293d595214e011562a7 +size 19848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyshell.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyshell.py new file mode 100644 index 0000000..9c642d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_pyshell.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e42604612bb73083e184cd79801b2ee7a24dd11f0be0242e88b7cfe0f392b7ee +size 5113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_query.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_query.py new file mode 100644 index 0000000..9ec5525 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_query.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18c9e88b30136ab683dae039dae45e6bbaae36f046cfd3a0a6a6cb8f278c2c89 +size 15905 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_redirector.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_redirector.py new file mode 100644 index 0000000..2abd5a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_redirector.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44739a76b90077c3649192293fbca7159cba8a0fc88c6c09e39a92a565bdc58 +size 4298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_replace.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_replace.py new file mode 100644 index 0000000..7b9ccef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_replace.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a39710f9f13103bce5e9a31a4c968f26f77943e886a21ec8db385911cf6aa959 +size 8593 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_rpc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_rpc.py new file mode 100644 index 0000000..da3d3ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_rpc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38e3bb1648cab509be226a34405f1bb6fb477ea215bf1121e08c745469fb9a0f +size 834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_run.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_run.py new file mode 100644 index 0000000..288fe23 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_run.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a626e21bc2e4a716b002f7afe60a28222fb515a09258b5140159957aa69b385b +size 16186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_runscript.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_runscript.py new file mode 100644 index 0000000..d0d31f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_runscript.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c39ff558c4b3daa525fbbbf1aa21f9ddbdf85b8ec1f8a9b70dc5b23e3f787809 +size 810 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_scrolledlist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_scrolledlist.py new file mode 100644 index 0000000..642de4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_scrolledlist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b63939b3d15478a401e9496991d75be3a7ed8a4414858a08bb277206b0620d9 +size 523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_search.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_search.py new file mode 100644 index 0000000..166f740 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_search.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cefe25b6190417849c1b47cba06d47ec1be2cc7740be00d03dd8aa5d68970a7b +size 2539 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchbase.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchbase.py new file mode 100644 index 0000000..1d2c089 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchbase.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a57aac6c593c3fba1fd99839b0aa8b5a064143bfdf5771e356583877026db204 +size 5851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchengine.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchengine.py new file mode 100644 index 0000000..93698aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_searchengine.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd1ca903cf5f79683bea784da0157659f0b12baca04f5d54ea49957f2089ef5b +size 11920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_sidebar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_sidebar.py new file mode 100644 index 0000000..2592dbc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_sidebar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e02c11e74350b5d57e0616627ab185d5251a4c1902c7a166a36f776390f0da0 +size 27629 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_squeezer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_squeezer.py new file mode 100644 index 0000000..c080310 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_squeezer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3fcd3087a680837edabd847768b4b9c9e49d07b717e8a35a6e081d00cfe5a3e +size 20122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_stackviewer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_stackviewer.py new file mode 100644 index 0000000..be851ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_stackviewer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb1e0f9e9587e303d724566751de1d5964dc58aea435531efb026def43d722ea +size 1032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_statusbar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_statusbar.py new file mode 100644 index 0000000..825c71d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_statusbar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2760da19add51c076b561934f8d6dfc14f2aa1459db22eb56341a06659d33b4 +size 1174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_text.py new file mode 100644 index 0000000..b6766a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2cba8c23d68b6c26f08e525231491689092badbc78948032f2a5f2a20484944 +size 7206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_textview.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_textview.py new file mode 100644 index 0000000..8c88e2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_textview.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06da4e9636798407c88563a0b734b8e68e1008a48333612406daa4d6b0ea6382 +size 7597 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tooltip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tooltip.py new file mode 100644 index 0000000..7917226 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tooltip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2f02f500266a3ef9047f631ac8aa2596f9fa59686a691f2c2e6db4788bb0dda +size 5546 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tree.py new file mode 100644 index 0000000..da88030 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_tree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:266ad30f2f7a299a15ae7f2222568fb318276faf74be49f08b8b483692040931 +size 1812 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_undo.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_undo.py new file mode 100644 index 0000000..e320986 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_undo.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff7dff12d672fd67d763456ea3267077bfc8eaa6c46c1dfcd9185cc61e5615fd +size 4363 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_util.py new file mode 100644 index 0000000..70345f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b2acdfbbbc13ab1d92eccd56d2fb8f2dd31ee03a2b0d46e21b7f7e0dccf7902 +size 322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_warning.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_warning.py new file mode 100644 index 0000000..b2b22ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_warning.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c47f4ebcdb0fa7670df468f9e6e7808d2aa1ebcb6a37deebcb5ff6d4b4f3f6e +size 2813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_window.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_window.py new file mode 100644 index 0000000..f62f675 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_window.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a05cbcc546301152a9ce43d537d6b21c2318355f33bfcc38a785faccc8751500 +size 1120 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zoomheight.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zoomheight.py new file mode 100644 index 0000000..7dff4c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zoomheight.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4da36ebe1543cfca2531ad87053188e12764d28a8ddfee2749800c2df3a4bd +size 1038 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zzdummy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zzdummy.py new file mode 100644 index 0000000..f37ff16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/test_zzdummy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab488206e6b0f6c4f0e5cbf626a2bd3a13b123ef11b009558cf97a8876acadcb +size 4607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/tkinter_testing_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/tkinter_testing_utils.py new file mode 100644 index 0000000..4429e21 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/idle_test/tkinter_testing_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd23ab4162889e63c2240f324cf0cb654b49e17306d0a114ccd7d32c99e636ed +size 2395 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/iomenu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/iomenu.py new file mode 100644 index 0000000..1c9ca2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/iomenu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75fc4558f705a521aaa76cd8961de8e86147e329c57f2496152f1828b2b53261 +size 16600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/macosx.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/macosx.py new file mode 100644 index 0000000..f5a1fb4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/macosx.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9013797aa82d1c4085c35f0e3587bf12d34bb8796bcd03dd98b6265bd54d4c7c +size 9611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/mainmenu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/mainmenu.py new file mode 100644 index 0000000..b90eeaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/mainmenu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0873aa2511c4518588021aa884fa250b8d961d1a22ba0bdf11f965eccc76db65 +size 4064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/multicall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/multicall.py new file mode 100644 index 0000000..7adcf1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/multicall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e745266a652117182f34403f0e66ef62609d9cf1a5a3896f0262b8e82201ca3e +size 19103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/outwin.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/outwin.py new file mode 100644 index 0000000..b1962e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/outwin.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d91a4b1309a8aba993d561b5b7cd3247c1fcca914754f0a510b56b242bc8e17 +size 5903 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/parenmatch.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/parenmatch.py new file mode 100644 index 0000000..3caa7d1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/parenmatch.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e79fcd497d449836554772c565cbf3f31930f8da0ddfc499096e23a9f96a18c +size 7387 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pathbrowser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pathbrowser.py new file mode 100644 index 0000000..235c425 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pathbrowser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85ca313137a19c6f9ad57db14ef0f002d1c298f155d566bc1ac67c12a8ebaf61 +size 3200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/percolator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/percolator.py new file mode 100644 index 0000000..16773cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/percolator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48b2c2718f6600caab78ac6d2ce5e590978f3bd591d6b32cbbd56077a53b65ef +size 3688 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyparse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyparse.py new file mode 100644 index 0000000..bce459c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyparse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b0bd9d69ca690db15d675a20f6a82efe85adebc41d333492fd3f4e486aed9cc +size 20453 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyshell.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyshell.py new file mode 100644 index 0000000..21e3508 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/pyshell.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18ef8b6d5e237ca93b07b4c4fb347fe110241f2a5e13bc6ff07da4763f8eaec2 +size 63899 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/query.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/query.py new file mode 100644 index 0000000..0cdb771 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/query.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232cf1a09c739bf6c67c0859e2d0de951776afecc9deb2863bcf4a8fc7fcb3ba +size 15459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/redirector.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/redirector.py new file mode 100644 index 0000000..2bcd39a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/redirector.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d439e1a431457698bf850721adb1750fcc2b861d942e29199a38eba310a850d +size 6950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/replace.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/replace.py new file mode 100644 index 0000000..19d63a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/replace.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7edcedf77869f69f2bfff63d02fc0e2efd2073bc902e94dfee73112965e293ab +size 10141 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/rpc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/rpc.py new file mode 100644 index 0000000..909d7fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/rpc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e61ee58f3e64bfca03c3a3d07e0dcfdcc84507a51e2b6e8b1842c3e3d8c276a3 +size 21713 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/run.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/run.py new file mode 100644 index 0000000..bcf215a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/run.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d444e2d2f5e44885b0fdc1ca0bdfee7d11da67bc5e0e466c4c58830d840990d +size 22105 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/runscript.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/runscript.py new file mode 100644 index 0000000..96c4528 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/runscript.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20189dfb2029e2bb18c89a374a4157c36467d4c254b8e0be4daa8d9031506e39 +size 8486 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/scrolledlist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/scrolledlist.py new file mode 100644 index 0000000..49b34c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/scrolledlist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c69e4d4a4d334f4eb941f683c7482db67cc11b431af6e255d0af30f5bd76690 +size 4629 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/search.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/search.py new file mode 100644 index 0000000..56ffb42 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/search.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d335b363c13ac46a0db6e836a1f2522c0afabcb143c7cbf5920d66c8642936c6 +size 5732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchbase.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchbase.py new file mode 100644 index 0000000..3a61491 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchbase.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1edea131ebdcde39c640487822d5509165089ba322b33ee568ac1f3c049ba90 +size 8066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchengine.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchengine.py new file mode 100644 index 0000000..2161a30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/searchengine.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7188f8116170dc003a2c16003e3c12424a6fac06e048757cfeb8b5ff41aca661 +size 7650 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/sidebar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/sidebar.py new file mode 100644 index 0000000..ed4c90a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/sidebar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe752e047d588e54f67e1a2b30aec32aa8bf70242437f496afb131baf86c31de +size 20882 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/squeezer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/squeezer.py new file mode 100644 index 0000000..7a6c3fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/squeezer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0cd9c085cf31de1411066074805bb9813e2916142787b06d23d817756a66af6 +size 13179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/stackviewer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/stackviewer.py new file mode 100644 index 0000000..6c8afa6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/stackviewer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69ad3e73dca76d13c340a4b38ba0515ffb82735f0bd079443a6fcf60b37bed4c +size 4150 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/statusbar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/statusbar.py new file mode 100644 index 0000000..9aade3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/statusbar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e02720448e1af6f60311fb8a1e92d992295599e40f43eb9f11e6b9597532c9e +size 1526 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/textview.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/textview.py new file mode 100644 index 0000000..9ad432e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/textview.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35a0b4636e5232bfcf7e8b39c3645c7831ed18218edad644ee64b748692b20b2 +size 7001 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tooltip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tooltip.py new file mode 100644 index 0000000..e6b6ae7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tooltip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab16d34c2325f556abcd7469480915c0d85d8736e650bd9b28fe4c059a4828b0 +size 6657 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tree.py new file mode 100644 index 0000000..410e5fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/tree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:818a97b1c5fa983c14230187be218b4e9d93029c83f8d61f543d5e48f903f931 +size 16986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/undo.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/undo.py new file mode 100644 index 0000000..b112297 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/undo.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:966cdbdf0984b3abe6b87b4a9cc816f6d177ffb15420096b742c9e9f0add06b3 +size 11383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/util.py new file mode 100644 index 0000000..732ecd5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d8aeb89d9fe2084d06dcbc3c17f3b08f5618e42045d56a7809d801ac73d06bd +size 1349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/window.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/window.py new file mode 100644 index 0000000..e009c5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/window.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85919a4f823aa687defadb6716e2b01b0fe74c21e7ebda950b8cbeedd1efb3f2 +size 2714 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zoomheight.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zoomheight.py new file mode 100644 index 0000000..2da3c89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zoomheight.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3a6e578f3fea8a1f834cba273c5722ccab726a394956637eeb02650b7e3b60d +size 4327 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zzdummy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zzdummy.py new file mode 100644 index 0000000..0987482 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/idlelib/zzdummy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd44c3950f2380fbc654d444d8917cd3a144b88ca523917d522537bfbb41f519 +size 2078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imaplib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imaplib.py new file mode 100644 index 0000000..511a2c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imaplib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12c34d60b9f7be521f898e13d72b7f1d2bbedc87c71f9c00140ffb4593e2fb3c +size 55320 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imghdr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imghdr.py new file mode 100644 index 0000000..0b67569 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/imghdr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6be0b302e7d4b7f0a9a32085ad69bebbc735e704b9be68510e3d9009c3e83f4 +size 4578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/__init__.py new file mode 100644 index 0000000..533187c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96dc7e6276beaf680d6576917173fd67b1260bc3b10bb7324f481c424ecb3f4e +size 4912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_abc.py new file mode 100644 index 0000000..8bf8256 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:795157b91862d662ae681c0521daa1311b34b763b955e01505a27c865d848eae +size 1393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap.py new file mode 100644 index 0000000..3e5b041 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74a7017d6ccf9aab6a6140771db1e83118449331dfdb3afa87a1c06a372c4f05 +size 58607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap_external.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap_external.py new file mode 100644 index 0000000..ccb6e87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/_bootstrap_external.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4644d1472529a8f2bdf039cc211630cc4b37cd293f8ae13fd8d974d37e6dc57 +size 70920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/abc.py new file mode 100644 index 0000000..5de7415 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e968730b743a235c1d4d245563dd2257fe1d3ce4faa22aea0274680b3b2bde97 +size 7851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/machinery.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/machinery.py new file mode 100644 index 0000000..240efbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/machinery.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a2ee437c38e45cdf7559f613f57209b5b11c0824a9069192b9ebd5a2ceefa1a +size 900 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/__init__.py new file mode 100644 index 0000000..e97b4a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9798e43428f6c11bf9c4602be62599ff2470088fe0bf82c8bbbc177e740e1f08 +size 29709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_adapters.py new file mode 100644 index 0000000..b226db4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c42dec9f9fbb2fc493da2e0599158a67c8d3dfa7b6d69955aaa1ba9ed589a6ba +size 2495 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_collections.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_collections.py new file mode 100644 index 0000000..952d1c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_collections.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4281b8da21c38b837c93e93916d6bbc0a01f7e023c7d39251e3b80250f7d575e +size 773 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_functools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_functools.py new file mode 100644 index 0000000..1775ab6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_functools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da7408563c04cad511daebf9e2a1091ad148def11a388437d05b97a5618b881d +size 2999 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_itertools.py new file mode 100644 index 0000000..6ca9f53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a31e572e13346401bff14a2a046df203b970228c281455819bd11cc2c746f6ae +size 2141 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_meta.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_meta.py new file mode 100644 index 0000000..fbe87c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_meta.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d84baade84952a90014a0fdb70be6716726e669a897d7c261ea99e38385bb62e +size 1653 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_text.py new file mode 100644 index 0000000..98b420e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/metadata/_text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e89957a504aed6b3f93b0718ca881b6ca9f8d0bf961701b0c0a37a3b55eaacd +size 2265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/readers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/readers.py new file mode 100644 index 0000000..b5fe2c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/readers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb5ae1dcf4c24bdddcef0487dc0f5e9a7917c5280e7a993617a96c1fff25730 +size 339 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/__init__.py new file mode 100644 index 0000000..0dec5cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09ff374bdf81082cc52ea40c0f6ed172342bd6533a0196e4642cce52b9852ff1 +size 542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_adapters.py new file mode 100644 index 0000000..39f0099 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:570783f57345f54c4348f1906be59dded85159b31ab92fd5d7ef80fe36156bbc +size 4650 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_common.py new file mode 100644 index 0000000..08a02b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe1554dc2bc912808bb2697d36726b71a0f0cf93984471a578c52673c4141ed5 +size 5666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_itertools.py new file mode 100644 index 0000000..cbd7205 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d509a9da20dc9619fd2ac63f30cc088599995d3e1b38b1ee5aa68fb697de8897 +size 1315 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_legacy.py new file mode 100644 index 0000000..7115647 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a0ff12b9fa46e82847d8709a756b3531bac8be10916dacfae7b1a8570362da2 +size 3601 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/abc.py new file mode 100644 index 0000000..5b1b6a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f66d4d78ae31ff360c36f18be66000326aacafb4ce851c5b10648b7c75f42333 +size 5376 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/readers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/readers.py new file mode 100644 index 0000000..cb9e34d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/readers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e447aa8a544f61ed834fbd3720ca6991843e8de60d50c5e002a9b473edb8ae3 +size 4447 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/simple.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/simple.py new file mode 100644 index 0000000..ef108c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/resources/simple.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36d8a88a01a4a7166461a99f66a7f06e819b2938bc3057c73498fbc576082b81 +size 2690 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/simple.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/simple.py new file mode 100644 index 0000000..574a66a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/simple.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec15151f532d7e2e4740f0a9618481f3b37828c1180a9a86b7ae450117d67b51 +size 368 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/util.py new file mode 100644 index 0000000..d265e6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/importlib/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d54717b02265b8807ec4241864a5008cf1f07fe44ed525b0a7e4830bdcb0177e +size 11108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/inspect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/inspect.py new file mode 100644 index 0000000..df1e6df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/inspect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d125449802b560c1c9ad6891c52742891ae603c9094a9cbbfa082ae16f8edba0 +size 129923 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/io.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/io.py new file mode 100644 index 0000000..dd88390 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/io.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d70646d9c063dd0ac4293591639de75a100731d9f091f916fbca4857cd8a044e +size 3681 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ipaddress.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ipaddress.py new file mode 100644 index 0000000..75fe724 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ipaddress.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d36ff4126c6b23139e4926de846ae1b846942b1a2407a52cd7799d955aa6f8aa +size 80781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/__init__.py new file mode 100644 index 0000000..39361d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feb17670e443e5db2723f217727dcc5d5e155c40e4e6935b16061c88542f24e7 +size 14379 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/decoder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/decoder.py new file mode 100644 index 0000000..bc8d4bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/decoder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b719fbcfcebd2b174f076e71292e22b1a17d9e258dbe896c768325383bad4f80 +size 12829 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/encoder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/encoder.py new file mode 100644 index 0000000..2098641 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/encoder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7db65c95f09297d57cc6273d78858b25ffcba65bc83709c4a15584d1dbef3c38 +size 16513 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/scanner.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/scanner.py new file mode 100644 index 0000000..2438308 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/scanner.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9841566fb17315ebdd40a1ca9cb214f02cde7171b187d4dc821c80120ea853c3 +size 2498 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/tool.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/tool.py new file mode 100644 index 0000000..107bf15 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/json/tool.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4940a58dc30b05a4d66abce80c8ff52712bd9eaaaaf50b526eccb49185950d6 +size 3424 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/keyword.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/keyword.py new file mode 100644 index 0000000..ca71a03 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/keyword.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f28f509383273238ad86eda04a96343fa0dc10eeaf3189439959d75cdac0a0b +size 1137 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/Grammar.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/Grammar.txt new file mode 100644 index 0000000..5388ab1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/Grammar.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6688247a4adb2b38f18ef1c293482a394fa7e041110131f5f515a966c41e0490 +size 8892 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/PatternGrammar.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/PatternGrammar.txt new file mode 100644 index 0000000..77333e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/PatternGrammar.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bac1f5a4ef2dfe428df9afbecd59d250efc5cbd42a93fcf9b4c6be9e08e7693 +size 821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__init__.py new file mode 100644 index 0000000..d7cbe1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fa8d7b8d7222c3ce492f9a17ae2d37fe9c9815ddc757e6220f2018cf8058de4 +size 164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__main__.py new file mode 100644 index 0000000..0274907 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e34bc92bc4a3a20a1dcb7fbe0ff28e7888c9bc5199ec192dc0e763dd5f050d40 +size 71 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_matcher.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_matcher.py new file mode 100644 index 0000000..c22c3d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_matcher.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:344ae77ca1e51f6919d34884b6cdd64849dde851ecbf9f4d9efc8c772545977b +size 6786 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_utils.py new file mode 100644 index 0000000..863c2fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/btm_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11b921004e6af9351390be268bdcd723b7ee7607cdf6e24a353747f048b1f9d4 +size 10225 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_base.py new file mode 100644 index 0000000..6ecdde4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1195366080ae5114ef41253b9ff6af99a75555ff0764beaf390ff89213d94fc1 +size 6876 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_util.py new file mode 100644 index 0000000..e0163ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixer_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13f97833e856e26b7e77d1051d7e75b7971ce4996f05bfccaa146c98c8732a49 +size 15659 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/__init__.py new file mode 100644 index 0000000..4aee256 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b36ae7da13e8cafa693b64b57c6afc4511da2f9bbc10d0ac03667fca0f288214 +size 48 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_apply.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_apply.py new file mode 100644 index 0000000..1579905 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_apply.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:376d428acb3067e0514e7c32d54f71bb2fbb806dd202583e97efc16fb00b3e46 +size 2414 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_asserts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_asserts.py new file mode 100644 index 0000000..8840fcc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_asserts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f26c79304ff9be6cf45bc163772739fe65c14425f9931b56bdb6f4b26d4a901c +size 1018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_basestring.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_basestring.py new file mode 100644 index 0000000..2c37c88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_basestring.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b37496e760810db956513444a71894773d331c99ca6469d7879d2fd0a95502e8 +size 334 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_buffer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_buffer.py new file mode 100644 index 0000000..5c5e17e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_buffer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f549781e6c39f1550d8a0ecf2af6a1dc9e90b56bf3aad8d77172ad732c8a0ba +size 612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_dict.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_dict.py new file mode 100644 index 0000000..177c08b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_dict.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88e4d802fa886db68a999d5520a9b71b24b16b8c0e8414e93c1aca703971373e +size 3866 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_except.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_except.py new file mode 100644 index 0000000..3617a93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_except.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15702617a53d58bb27d25cd282bbf257b45e178bad4737b3ba8c82575872a3c0 +size 3437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exec.py new file mode 100644 index 0000000..13a570e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0ff0849f6a1fb671a829bb951bd4497e5e9557191ff429f49f0aa46d1151dd6 +size 1018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_execfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_execfile.py new file mode 100644 index 0000000..0853683 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_execfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fedf5b70115d815d633724fb03271a080ecdd7d9d197ca8246c62709ea3fda5 +size 2101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exitfunc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exitfunc.py new file mode 100644 index 0000000..65f20c6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_exitfunc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:944d48b6d4aa4a6d4bfcd2931d46344e4bdf4285df1bbfda74a8a0b2d6ef0f7e +size 2567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_filter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_filter.py new file mode 100644 index 0000000..f62f0a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_filter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:175bdad98d2fb8f3c7217155d314dd66fb1e0d3e7a0b73c8733fda922b0e559b +size 2859 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_funcattrs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_funcattrs.py new file mode 100644 index 0000000..ff60d3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_funcattrs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a822f3cb97254f2372fb53adc912e57fa08a4b3b8098527d4a701d3a9b306492 +size 665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_future.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_future.py new file mode 100644 index 0000000..3ed945e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_future.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b874701b6f1b01632f9af2cd146646e947344d651f05792d3c64f30b4b733a0a +size 569 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_getcwdu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_getcwdu.py new file mode 100644 index 0000000..05c06d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_getcwdu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbdcfdbc1371229cc2cb539f8feec26d85b218eca8d35ee198024e23852f732c +size 470 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_has_key.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_has_key.py new file mode 100644 index 0000000..6758d01 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_has_key.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14625002dc3f848dbe0a284085d29ac89dca62c567d8c15b69169d84552f09c2 +size 3305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_idioms.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_idioms.py new file mode 100644 index 0000000..bb3d270 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_idioms.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e8a4e017be549d8a24ce13c9ead3d41e6b115619e991c66075ae90cab786ec3 +size 5028 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_import.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_import.py new file mode 100644 index 0000000..6d03a5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_import.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb0b8a86d1473a869ca50d0838a5145239049b26ea3e7a902c8e077cc440f2d4 +size 3355 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports.py new file mode 100644 index 0000000..480f7c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bfdf0aa34516d0728bcb2f4bed0ba8e8b37e88c7e9c1e9093db40b97ba3fd72 +size 5829 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports2.py new file mode 100644 index 0000000..304fdfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_imports2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a30cd499da0b2c9d9e8313d8a1e30fe49a8df4534dd718efa997197ea90ee2c +size 305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_input.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_input.py new file mode 100644 index 0000000..8af80c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_input.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f45711c6e4809f87c66e39f68b436ec22b713f96ef73e263cea8f585dce0953 +size 734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_intern.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_intern.py new file mode 100644 index 0000000..da7eccb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_intern.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1457f78f5cf13c87fc6655f0ae8c322c7f155f0bb28389ed1a1881efb487988e +size 1183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_isinstance.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_isinstance.py new file mode 100644 index 0000000..0720237 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_isinstance.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6783f95fe41c83f0a1114fc73023b66899a09ef403ed6c21888254b520822e6b +size 1660 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools.py new file mode 100644 index 0000000..d77c1d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfcdf64e2db7ae031bbb5927d41802b8ac51d2d59d425e8dd0841be451b24e0c +size 1591 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools_imports.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools_imports.py new file mode 100644 index 0000000..ecbc129 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_itertools_imports.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d45ed56241f16a6d64124394ad9a8dce834755e490fea1644dc09b45f1ff0cf9 +size 2143 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_long.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_long.py new file mode 100644 index 0000000..e0f63df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_long.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc68c8f34c0c667763b029394f47f5b248216f8d75130489c6065d46cace307f +size 495 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_map.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_map.py new file mode 100644 index 0000000..9974bf8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_map.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6c0058dacf58333f767364cd740b940a4ff0f322dcb76a87bfefe1d0bb135c6 +size 3750 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_metaclass.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_metaclass.py new file mode 100644 index 0000000..a54120e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_metaclass.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49a612e8252b4c305c5238d1debff68d6f1a76b3afbee39901541e0d70c090fd +size 8425 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_methodattrs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_methodattrs.py new file mode 100644 index 0000000..763771f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_methodattrs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b9edb6fbf2ec9bc25c8fd5dd77b9a63deea5f052d05b91081e51097b8490d1a +size 630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ne.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ne.py new file mode 100644 index 0000000..96b72ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ne.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50835fcc0bd6927339d35266de5bed171f5de1b91c693dcfae6aac7c1b50dbc3 +size 594 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_next.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_next.py new file mode 100644 index 0000000..356b786 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_next.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48734127883eece0f8f0e06d7623352cae78f44934fecab4121699970009ded1 +size 3277 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_nonzero.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_nonzero.py new file mode 100644 index 0000000..a86ba05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_nonzero.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47b5e21ae3f78c75bf68abbf208df08f2983227d26a3c971a5900f64227fad15 +size 612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_numliterals.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_numliterals.py new file mode 100644 index 0000000..432ef60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_numliterals.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e03f3d04b8e48c5a1d11bcc4ea852e55158964c5f560fb0a1aad030abaed9f8 +size 796 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_operator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_operator.py new file mode 100644 index 0000000..7f7c4c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_operator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0de6d510ba21d4cdc1cf95fb1653860db56536f1581d42a70b3ff970ce6707e +size 3523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_paren.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_paren.py new file mode 100644 index 0000000..02e92e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_paren.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52e4fb86c90685bdf090687c2efd51d48c3a6dda7cdf9d6614ea404389954836 +size 1270 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_print.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_print.py new file mode 100644 index 0000000..c0bddef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_print.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:949a3e543c1b2c54fb12e946b6d3495eeb18658be4fc6dd63be0478ba3d91017 +size 2931 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raise.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raise.py new file mode 100644 index 0000000..711737f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raise.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c0076fbbcad7c22d274c589176963229128af3f2e02a24aace074a8a0b6520a +size 3016 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raw_input.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raw_input.py new file mode 100644 index 0000000..10835ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_raw_input.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a94784036c068d0a2b350275816dd9a3b84ba1e702f5ca88d261022a081964f +size 471 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reduce.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reduce.py new file mode 100644 index 0000000..400db37 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reduce.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d477d21b26ebb721d14f2e61754f7ff7578d5e4066ceb4e714f2357fabe42bad +size 872 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reload.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reload.py new file mode 100644 index 0000000..1fb236b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_reload.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ea04f238824758779b96174c74b0a0092451f24cdef7749d3a4cf645457dd46 +size 1117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_renames.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_renames.py new file mode 100644 index 0000000..dca4ba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_renames.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10874f6ab33fde228a8e040580d1de657e3c4b463ca44c96baab6febe76f03ec +size 2291 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_repr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_repr.py new file mode 100644 index 0000000..ee0e30a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_repr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32b21db4f3b49ec4f3934e37b254de1f581ce7d50f11cbc147e3fd196068a9b3 +size 636 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_set_literal.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_set_literal.py new file mode 100644 index 0000000..24428ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_set_literal.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0cc557a8a4529f796c54b3afeaa91746189d264e1342d9699a703867d96b49e +size 1750 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_standarderror.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_standarderror.py new file mode 100644 index 0000000..9de9da1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_standarderror.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe2fe587d984783ba39d5555cba67b7c8d3e7d14a600679c394ddd93a5bbd0f4 +size 467 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_sys_exc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_sys_exc.py new file mode 100644 index 0000000..cd30e88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_sys_exc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79ace20b3ca95643edf00ee3547e16ab7811e382cda395add3052ec721bb5262 +size 1064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_throw.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_throw.py new file mode 100644 index 0000000..42c112e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_throw.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b44ace7653328e3598a0af03c55005db15719328bf5c00f9b9f66e7ebdf6f01 +size 1638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_tuple_params.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_tuple_params.py new file mode 100644 index 0000000..0137f13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_tuple_params.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cd38a9653b73e0e6d4eec3e597029e124bd4ff708d13b8b23500bdfaa1ce1e0 +size 5740 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_types.py new file mode 100644 index 0000000..136b355 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e60463c75e338b466c489756ed269554950a8a41e103190422d3cf9cf2dbbc4e +size 1835 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_unicode.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_unicode.py new file mode 100644 index 0000000..340ce64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_unicode.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18313e149c2306fb0c9db833eec6f86a16a103a565df4b0e45ae49a4ffa00af0 +size 1298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_urllib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_urllib.py new file mode 100644 index 0000000..a4cf184 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_urllib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63c89fa9e60b006926cbf353bf319646affc9f1382713881959e532fb94b85f2 +size 8563 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ws_comma.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ws_comma.py new file mode 100644 index 0000000..adc6970 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_ws_comma.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f1a6d62ca48a22669be98766a4c7ed670df01efbabb1ec4e5bc71022c88fd94 +size 1129 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xrange.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xrange.py new file mode 100644 index 0000000..bab3f3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xrange.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2aee5c6f03ff89e46c8dfaa18c5a47e1d935cc822cf6a74d54fc950c465c353 +size 2767 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xreadlines.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xreadlines.py new file mode 100644 index 0000000..d5812e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_xreadlines.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af358006155e5575577f216ab7d4a06c2ee8639466360a918545cdf748106288 +size 714 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_zip.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_zip.py new file mode 100644 index 0000000..6e8b96c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/fixes/fix_zip.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cfc37d044160c03d5e957031b4097c40ee59ab1b50ff3bd1df3a12e648fc77b +size 1335 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/main.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/main.py new file mode 100644 index 0000000..aa53f2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/main.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cc7b32f9f1a5b9c8400e97248fcaaaff55ba729f34775b47fa322d0a4882f4d +size 12127 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/patcomp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/patcomp.py new file mode 100644 index 0000000..d1807c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/patcomp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68102fe52f65581c9c3eebea52bc1912710466d5fed1f5a9da4cf5ae08e49af8 +size 7258 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/__init__.py new file mode 100644 index 0000000..89d1066 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfc35e9ad36d01a201a1c3cc97468c2e0c5a40c79db0a392fdd395032f1cdd32 +size 147 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/conv.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/conv.py new file mode 100644 index 0000000..d0d2c67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/conv.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35c326723b3a0a09d8e9bd10feaf4fc0dd13589528be1fdc818ad8d2e0e612f +size 9899 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/driver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/driver.py new file mode 100644 index 0000000..fea68a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/driver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f6df6637984b8afee4c8510ad6fb8d7e20a7d257b1e73bde24f38ea0cd5110f +size 6146 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/grammar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/grammar.py new file mode 100644 index 0000000..9efe377 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/grammar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b10f76529a8a2420abb058a1a6594a491ee89deef71172540994b72758046694 +size 5741 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/literals.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/literals.py new file mode 100644 index 0000000..7ba2c46 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/literals.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:211244d439917987bfa75775d05279f4bed092438e2181c03bf546da7a76ee47 +size 1695 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/parse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/parse.py new file mode 100644 index 0000000..5893803 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/parse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146331e38a725b2da2fbc156ec001437c8cca1e176cff9da0fdd17f64c0cf181 +size 8359 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/pgen.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/pgen.py new file mode 100644 index 0000000..f5c6816 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/pgen.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b8b22578442fd5cdd35530e7345e6991cbd0c8e4167be7a921ac3763e7113dc +size 14216 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/token.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/token.py new file mode 100644 index 0000000..1db282a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/token.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b21e0e0e00e845f01c192c7e59771d7396daaf56ba29b47db8e3f6ea1ef16ba +size 1388 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/tokenize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/tokenize.py new file mode 100644 index 0000000..ff6c850 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pgen2/tokenize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca0368766938a9e43f2050718411deeb63da2397a7c995eada6b287bcae9d04b +size 21683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pygram.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pygram.py new file mode 100644 index 0000000..a553e43 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pygram.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63f1390d71d871e1c6fa009ca822b6b7f9eadb09924146fa3c384056b013ac83 +size 1348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pytree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pytree.py new file mode 100644 index 0000000..5632b0b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/pytree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b42ac16230580f733ec9b405238417eff5005b9718728ce612d9a24a632182b4 +size 28827 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/refactor.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/refactor.py new file mode 100644 index 0000000..aff00cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lib2to3/refactor.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45d1539fe02b2386e8b1af0198576365f597ae55c5c96a5d418a67100ff4822d +size 28239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/linecache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/linecache.py new file mode 100644 index 0000000..7f452f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/linecache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17345936e13286c7cb7970b12f6a4a344cce43d0c323156606b85ca8c7d67a82 +size 5829 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/locale.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/locale.py new file mode 100644 index 0000000..745db4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/locale.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a5793c0d629730c9f60ef11509484e04a92697ce603b30b7e9f1137cc48742 +size 80378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/__init__.py new file mode 100644 index 0000000..744045b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38fde6b46e26e58b558f709fe2941cf41c64beead59e03089de76553dc8975c1 +size 85782 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/config.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/config.py new file mode 100644 index 0000000..219de1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/config.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30bdf0becbaa937aff38d315d1ee1691088c6eb8ffeed2d2dc89819230fb4155 +size 42984 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/handlers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/handlers.py new file mode 100644 index 0000000..14ea377 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/logging/handlers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7c40ec1e21677fea5ac0f361283a66e2a3decb78d7394cae2a3d545aa9ef9ad +size 63612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lzma.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lzma.py new file mode 100644 index 0000000..7272b47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/lzma.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da46fa7c6c554a0705cf9a7318279b56fd5f62f71a55ac28e9579616f11129d6 +size 13633 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailbox.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailbox.py new file mode 100644 index 0000000..d1eb3aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailbox.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf0eaa7f78abea40027939ebbbaec542396a3d06ba041402c7d7b2c771cf3eb6 +size 81064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailcap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailcap.py new file mode 100644 index 0000000..5e07999 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mailcap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b35543658f3a65c84b6a59fa3214b126f1fd9c7d6b6c43aaae480d6aa6807544 +size 9635 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mimetypes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mimetypes.py new file mode 100644 index 0000000..1b13fd9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/mimetypes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff9061057c3e432def2aab9fddb9621a8cd434d285a0299b9137fb1a35ccbd25 +size 23539 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/modulefinder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/modulefinder.py new file mode 100644 index 0000000..4cc15af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/modulefinder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b0f9999c525f2c8de5d2a26b4b820e17dd42b6a1e2f116c1f8008a49881effc +size 24365 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/__init__.py new file mode 100644 index 0000000..7b4f4b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b2d1c145e1d2dc2c396932d8987fd8436b69b9eb6043da9599915782728a7b8 +size 18139 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/schema.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/schema.py new file mode 100644 index 0000000..2901c56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/schema.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbf82845488bbe29fb0d4fc5568def6333f35be025ada802bec86d56d184af2f +size 82586 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/sequence.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/sequence.py new file mode 100644 index 0000000..49243e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/sequence.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:674367d4838ca8ed301d55552c7acd4f87397f2cf7f0deba6fb5c51c8eca4155 +size 4055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/text.py new file mode 100644 index 0000000..f62a8d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/msilib/text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c6d03e02cc182bf912e1207f71080d8fe222c437b6b1a612cbfbb51a159ca35 +size 9147 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/__init__.py new file mode 100644 index 0000000..803ae25 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ede1eece1f33ee83f41d50149113271ede6ae549451bd81a3480381d16a1965 +size 953 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/connection.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/connection.py new file mode 100644 index 0000000..7cfd4ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/connection.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad43a788041a50c04ffd06613ada6c002b2a9ed7fbf786b6051ec2cbe7fec8d9 +size 42560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/context.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/context.py new file mode 100644 index 0000000..f48058e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/context.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d10eb97dc462f0b290166379f0ec413c331558b1651d81d00a30a4c73196636 +size 12050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/__init__.py new file mode 100644 index 0000000..3bfa545 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6958460a9acae3d80ccbafaa8f84aef55d51312ae102bab4861411212f1fcee +size 3187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/connection.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/connection.py new file mode 100644 index 0000000..303c154 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/dummy/connection.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc1154afde7815baa6da7738498c26b07c07a02eeb908b86d2eec10731e3f4c1 +size 1673 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/forkserver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/forkserver.py new file mode 100644 index 0000000..8cb4c3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/forkserver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a832a1e72398d886a4846bf282c712a8000f0a8d811f60a45adc5a5a3a4b515 +size 12482 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/heap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/heap.py new file mode 100644 index 0000000..843f66b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/heap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dff70e88dc22167d78039e656567a3bc3fe350b099fa383eef8f9e9d31187aa +size 11963 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/managers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/managers.py new file mode 100644 index 0000000..369adb8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/managers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b6c2e641474f97a16618361ca3bcbdc3c396947578f433a385cb27ede8da943 +size 48996 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/pool.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/pool.py new file mode 100644 index 0000000..3b3f2d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/pool.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec2731e6954c1c3611e311f0f5a111b37e20ddf1652787e57d1c201e66ad879b +size 33717 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_fork.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_fork.py new file mode 100644 index 0000000..fff8ded --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_fork.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7cf3e6019f6f74c305dfc103ff5b69bfbdc5ee546945d483c2380572e17af49 +size 2460 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_forkserver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_forkserver.py new file mode 100644 index 0000000..017441e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_forkserver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:101b13a3880c6eee2b25675cd3ba318af5aea0ed2b3aa66c2ffdd3e4633e363d +size 2304 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_posix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_posix.py new file mode 100644 index 0000000..45391db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_posix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e04a50c8627ef4b8531395a56f0755b27bf91d9ba634a570dc566dfd85eae830 +size 2101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_win32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_win32.py new file mode 100644 index 0000000..9be4c9c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/popen_spawn_win32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed3901a060c08bae31ba7ab98e10117ab35595809bdb04aea6213f69f88c0211 +size 4660 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/process.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/process.py new file mode 100644 index 0000000..4e7e32e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/process.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c6ce5afdc37daa6dbff22c3d2c675c7d87fcaac97f91fe2752a3d343899aca2 +size 12578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/queues.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/queues.py new file mode 100644 index 0000000..f74fe10 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/queues.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44fe480787d27418eb75845b26ccaee3c9d99419994facffb9570dc1b64885a5 +size 13094 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/reduction.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/reduction.py new file mode 100644 index 0000000..dd95b38 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/reduction.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c902343f58b184e0071592408cabeb8ddc0622d107a325361e6546f9aa7c5db +size 9793 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_sharer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_sharer.py new file mode 100644 index 0000000..667cabd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_sharer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe367d89346dd2290005736e0bb79ba3cf1ae33a6e5d74dd92ea116f2ac557ca +size 5299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_tracker.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_tracker.py new file mode 100644 index 0000000..ea62e97 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/resource_tracker.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b8689c9d44ea5ba490c9183ec28f518873472b5904bbf19e58880bc011fe5c8 +size 10601 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/shared_memory.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/shared_memory.py new file mode 100644 index 0000000..861aead --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/shared_memory.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:251c56fe3bca916f9d88562d4ca0322f1dcc62b2021d37ec20ae21b95d368532 +size 18992 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/sharedctypes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/sharedctypes.py new file mode 100644 index 0000000..611d7d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/sharedctypes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bd32baa2cca0acad00027b800c851eeff4b2463f2330765460a01751789272b +size 6546 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/spawn.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/spawn.py new file mode 100644 index 0000000..9f483be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/spawn.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9410d782baec76a388f42e2cba0ae4ca8c20d6f89e4815bf598f881eee2df074 +size 9951 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/synchronize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/synchronize.py new file mode 100644 index 0000000..f260f78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/synchronize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3253a3aad40fc1858f4b0ec73f3f2ea136af9da492263e0bff037f4215478cea +size 12689 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/util.py new file mode 100644 index 0000000..6773c85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/multiprocessing/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:799b13a5c4dac4c94fb88484d46a8cda768193530b75f97cc51eec55fe4249f9 +size 14755 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/netrc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/netrc.py new file mode 100644 index 0000000..694f001 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/netrc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55ece174054d22e0f71aed62ee01be43dfafbea62171e3b8f3559e5984a506ad +size 7114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nntplib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nntplib.py new file mode 100644 index 0000000..eb2ce31 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nntplib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf0b364bd546e36805bd267fedd35a769c52bbed11faadecbe690685f3d52b8e +size 42180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ntpath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ntpath.py new file mode 100644 index 0000000..c8aedc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ntpath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a64a8980f1f6746b230f803d0516911763a502a0739e285def5e4aa2e83b4da0 +size 32106 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nturl2path.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nturl2path.py new file mode 100644 index 0000000..0dde11b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/nturl2path.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad86c5b0a9d8f82e9129900f69765ad079cbef670ccfd0b463fbf608e79224ad +size 2968 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/numbers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/numbers.py new file mode 100644 index 0000000..0577893 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/numbers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:090c5543a1446c444960524b4bb73585cff1ac7420120bdd4805988327a4dbf9 +size 11885 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/opcode.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/opcode.py new file mode 100644 index 0000000..93563e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/opcode.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3edc2765efb81769f13e958c742f77159cfe6466d2298f656c5a31274ee6537d +size 13667 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/operator.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/operator.py new file mode 100644 index 0000000..c991bdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/operator.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c57b6816cfddfa6e4a126583fca0a2563234018daec2cfb9b5142d855546955c +size 11432 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/optparse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/optparse.py new file mode 100644 index 0000000..b258927 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/optparse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c46c1cccc32e7778e3ae4f7018d4d713aaa1dbd13210506472c2e6dee2d4f73 +size 62050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/os.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/os.py new file mode 100644 index 0000000..cd8501e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/os.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c991d83978e345654f1caa90bc4b2c22a29ffbe18018846cb5d60a03d32a358 +size 41936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pathlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pathlib.py new file mode 100644 index 0000000..7b93559 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pathlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6d99265c5e9ecad314263aa552f050abe195d3dcfce4f2c09c25ec24bedade1 +size 52543 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pdb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pdb.py new file mode 100644 index 0000000..733abf2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pdb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cee9aa4592d88609f4fcbbed63a7c70ab3bc2d52c4facab2403c8a2cf1bccca +size 71431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickle.py new file mode 100644 index 0000000..f5aa9d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f4ea26ede958c7a4e6450c3159138af8e94db1f4db29fbd3e2012b671683607 +size 66717 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickletools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickletools.py new file mode 100644 index 0000000..43dca04 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pickletools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8097ccc8b3e71b3df7e8075fe174f0f0a0833dd739c94fd3a30193a2a90474c +size 96762 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pipes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pipes.py new file mode 100644 index 0000000..2ebd561 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pipes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969745cb4b9b9eaaa03c9ea56e36d7fecc2c926fd01e17e9f19814742e896ac4 +size 9228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pkgutil.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pkgutil.py new file mode 100644 index 0000000..20270cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pkgutil.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ba68ff63dda7e69cea449bf45640d742f0b829ebb8b299a7006a133a5788ccb +size 18810 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/platform.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/platform.py new file mode 100644 index 0000000..f29decd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/platform.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:321ba062feafbd733f742e18933f86165c0157dd8a6de24769c5d0c5b9ceca0a +size 44710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/plistlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/plistlib.py new file mode 100644 index 0000000..7023fc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/plistlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9858055a1d1dd2585cdf5c264b542c8a6816fa20ef202d2241143adf50280ea5 +size 29253 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/poplib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/poplib.py new file mode 100644 index 0000000..6d3cc1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/poplib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17fbf2a3fe0869bf884136c593a61961363b3dc6c17f0119129cdc5f5013e285 +size 14630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/posixpath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/posixpath.py new file mode 100644 index 0000000..9e693c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/posixpath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a50991174a61362a0d612b86d05230b05c7ae282291733e32c87699168c857b +size 17870 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pprint.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pprint.py new file mode 100644 index 0000000..2582da0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pprint.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544dcff1ca7b4ae0cff83f940e011016eb4ad14732afe3e44184c985039430b7 +size 24816 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/profile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/profile.py new file mode 100644 index 0000000..cc97694 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/profile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7a5aaa6049de37450bd890a83b343cb5d08ecc32b3ee1ed7d76557a54e19ec5 +size 23708 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pstats.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pstats.py new file mode 100644 index 0000000..02145e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pstats.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ed367bdc69d05b6820182d47f92c323cf01b46e31bbcfbb5229661cdd6574b8 +size 30067 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pty.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pty.py new file mode 100644 index 0000000..2b494de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pty.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4ff07c94e3e737889f115b10be444fc4f0bd8d95eadc77201005128254ae74e +size 6348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/py_compile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/py_compile.py new file mode 100644 index 0000000..4d12a3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/py_compile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba4e5d1ac94fec03bb7ede8e1b7e4d56c8f165d9b3cdd130e16902d13489fcc4 +size 8049 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pyclbr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pyclbr.py new file mode 100644 index 0000000..29cbb38 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pyclbr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e87683a58d47e7e7c49bd1bb83bec01bc8edf803deff289ac30c2c5fcc8da979 +size 11710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc.py new file mode 100644 index 0000000..5b75c57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cb0ec721a6da159cbe49337990e23bc1810dbadd744d5139bbb661badbb3d75 +size 115732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/_pydoc.css b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/_pydoc.css new file mode 100644 index 0000000..0a4c35e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/_pydoc.css @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea8f16dc31fad44952dd9d6c5249e3d5eb51c67aa10d770c9342d372eb669b83 +size 1437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/topics.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/topics.py new file mode 100644 index 0000000..d259724 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/pydoc_data/topics.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eac92a630739f3ad25e25eadd680c99d9d44dd609d32635f7982bfc72a98b1d +size 822558 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/queue.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/queue.py new file mode 100644 index 0000000..661d2cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/queue.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3160b770dc5cbdf0a5f9297dd8ea7fb77acd99b36af8088c8015b119d2e5069f +size 11822 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/quopri.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/quopri.py new file mode 100644 index 0000000..882b1f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/quopri.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0f509a538cf50cfd5f2e821568bfb726d35ea9ba56ceb1e1f522cd7f2177cd5 +size 7421 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/random.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/random.py new file mode 100644 index 0000000..e745d03 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/random.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd90f2195fb0dfadf608e935ba2e879e3d9c23e9bc5de27ce88109a36e0ffcbe +size 35679 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/__init__.py new file mode 100644 index 0000000..a2a4e8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:778cdca1fe51cddb7671d7a158c6bdecee1b7967e9f4a0ddf41cfb5320568c42 +size 16700 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_casefix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_casefix.py new file mode 100644 index 0000000..3509343 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_casefix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1a8ce5d2051c96abb0c854f4a9c513c219e821f7285d28330f84eca71c341e2 +size 5552 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_compiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_compiler.py new file mode 100644 index 0000000..a2708c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_compiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7151ee39cffc73db023430de5d6d8f13bc8244255c831d5c2934fccc991ca5e0 +size 26854 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_constants.py new file mode 100644 index 0000000..f011c6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8df304954ca75dcd98b9f1f5e3cb5347adc6eaccfc461a94ab914e1b0085e9ab +size 6150 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_parser.py new file mode 100644 index 0000000..3428f85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/re/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcc84f06d54e2d28506350a60bc1aaaa0efda4221f4ceeb05b2d0f48c712c479 +size 42281 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/reprlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/reprlib.py new file mode 100644 index 0000000..346c111 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/reprlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:354fd4471a2d8c5972e67a38a8eb40040f12bd9b6acd260a889efed250770f0b +size 6762 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/rlcompleter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/rlcompleter.py new file mode 100644 index 0000000..38822ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/rlcompleter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0babab7d7859072fad2e17ef430bc4910db6f8d311d616b7855bf285c3ff7bb +size 8046 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/runpy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/runpy.py new file mode 100644 index 0000000..baf1b6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/runpy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cf062396c0814b460351d0d2d829ea325034ff553b6035ca19e28bcd1bd8499 +size 13216 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sched.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sched.py new file mode 100644 index 0000000..cac5b4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sched.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d337d7ddbeb4852d806ae3d29dd73c0f2e0a332c8ce4beaddf7173c34d6849d8 +size 6518 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/secrets.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/secrets.py new file mode 100644 index 0000000..f272e82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/secrets.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37570483735e4026f95230a4681057329a72a3c17c2d36592e6743584d4b587f +size 2055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/selectors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/selectors.py new file mode 100644 index 0000000..7eddf7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/selectors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c33ae11c98b22294d106d21c60f853025eef0fbe86f4b534d35761dfa0b825cf +size 20294 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shelve.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shelve.py new file mode 100644 index 0000000..56b5f09 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shelve.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c8ac8dcb31ab0e9b5ebfd1cc99a827bc78deff9966bcc7f7b6a3ab08388a9ae +size 8803 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shlex.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shlex.py new file mode 100644 index 0000000..28074b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shlex.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78cf967a29bbc5430ed5bf4f231a3dd433a9d62dd104de48c93818fb71790683 +size 13698 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shutil.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shutil.py new file mode 100644 index 0000000..2c1e1d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/shutil.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f85012a2d3eecb42a3281520417237c6242c2ceb544ffa27d0d081f9a04b3a51 +size 58358 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/signal.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/signal.py new file mode 100644 index 0000000..b889487 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/signal.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b7e3d3d39a120142dbf4875d7d79579cad8fee662add30c2375a797f0d2386e +size 2589 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/README.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/README.txt new file mode 100644 index 0000000..4158900 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/README.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c99489111112d2150db0e18bbd474ff45f78fef80fa0e533dfd9ecfc6a3a480 +size 121 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/__init__.py new file mode 100644 index 0000000..e5561e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bf5b0bc8f8af7ce7096e96f7167cf4f776f2cc0983f5c8f876ca780b3a67781 +size 6002 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/override.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/override.py new file mode 100644 index 0000000..4967b7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/_distutils_hack/override.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12efecf8d17a5486780aa774b5b6c0e70b56932d8864f35df1eb7a18bb759b3a +size 44 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/LICENSE new file mode 100644 index 0000000..79d00b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaf9a29ca5907971ccf07de025375db34539a8d5eeebce20b46099805722106f +size 1113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/METADATA new file mode 100644 index 0000000..e702490 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f713846913f28e40818c120f7301864470b3c03873269a7fe17cff33fcdc9e9 +size 4324 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/RECORD new file mode 100644 index 0000000..58d508e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b3b6fdcd0f7dcd23358cab4393211644b99dcf804e54dac03c28261487c219 +size 2319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/entry_points.txt new file mode 100644 index 0000000..73d3bd5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build-1.2.1.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3186db33a24662e6e02234e070ba4d219a5cd0f59b8bd991016ed586d733952f +size 105 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__init__.py new file mode 100644 index 0000000..75091c2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61137cd91dde82cd0dbca1b946a2bc55d9ae34bba7f4243a5cbad34f5d6be71c +size 837 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__main__.py new file mode 100644 index 0000000..f9d2e97 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6fce563afabf155c7483de1ed28003484e5e6f0d5d5931d10fc7c9ff2f2b2e0 +size 14227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_builder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_builder.py new file mode 100644 index 0000000..8381d61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_builder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f56987d75c9b5fb1d2e4278b35186a5b13f38a6249b2bf5d6a6fce1a9b7448d9 +size 13393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/importlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/importlib.py new file mode 100644 index 0000000..204c8d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/importlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99d518627e5c89abc143acc513eda08450e8b4a642e10b9f6ca3323e0e61dd62 +size 467 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tarfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tarfile.py new file mode 100644 index 0000000..665f9cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tarfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3eb039db1bef666793ac99254f02bc44e8a23a74f7b4c17db27f87ad0d2ab19 +size 816 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tomllib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tomllib.py new file mode 100644 index 0000000..e6e9b54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_compat/tomllib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:253faaf5f06efef3ade1f3d62a1d9b20abdf928eb7df3ffbe05fd33ff635edcb +size 255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_ctx.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_ctx.py new file mode 100644 index 0000000..7217ab7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_ctx.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:404073418613d81bb28f478791328843718adcb115eab102fb68918ae538b13f +size 2880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_exceptions.py new file mode 100644 index 0000000..2ddd5d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:971118af8d9e1bec207cb6dc321964b3871cd2ef8fdf330cf2c6d6ada20dc08e +size 1625 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_types.py new file mode 100644 index 0000000..ec6352a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ee8c71f8fed756e6ebce53ed2fc217d9372d61dc2d8c55530762ad77e1afc20 +size 372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_util.py new file mode 100644 index 0000000..de063a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f8c45c680383d3dbbc5a96ff5afb97e50ad66064734568aa6220cd97a5d33db +size 2325 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/env.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/env.py new file mode 100644 index 0000000..e01af9d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/env.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9437b71dfa8daf8048f66305b06629e186c5fc82721417ceef839fb45f352a63 +size 13473 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/util.py new file mode 100644 index 0000000..2b44f55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/build/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8811cfa54d76f28dc46f174539348eddae0d92d3bd0e74d6889a1705e76a9aed +size 1776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/METADATA new file mode 100644 index 0000000..6ea0860 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7baed29eb50c3b29bdb33ff84e3177bf1bc05784f7685ecdcaa4471c7dd810cc +size 17158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/RECORD new file mode 100644 index 0000000..60677a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ecf55e9e177d90edaf7e688cc0d1944d32d35027e53f2c51d076cb9f4e103d +size 2174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/WHEEL new file mode 100644 index 0000000..d3413ff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71d705e056ddd053edc3610c20ec07fb7ad239351d4c278e49744c0f588b51bf +size 105 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt new file mode 100644 index 0000000..04fcedc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama-0.4.6.dist-info/licenses/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cac35c02686e5d04a5a7140bfb3b36e73aed496656e891102e428886d7930318 +size 1491 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/__init__.py new file mode 100644 index 0000000..c04f90e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1e3d0038536d2d2a060047248b102d38eee70d5fe83ca512e9601ba21e52dbf +size 266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansi.py new file mode 100644 index 0000000..c583b7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e8a7811e12e69074159db5e28c11c18e4de29e175f50f96a3febf0a3e643b34 +size 2522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansitowin32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansitowin32.py new file mode 100644 index 0000000..4d9ab76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/ansitowin32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcf3586b73996f18dbb85c9a568d139a19b2d4567594a3160a74fba1d5e922d9 +size 11128 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/initialise.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/initialise.py new file mode 100644 index 0000000..8e0bf60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/initialise.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa1227cbce82957a37f62c61e624827d421ad9ffe1fdb80a4435bb82ab3e28b5 +size 3325 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/__init__.py new file mode 100644 index 0000000..3fdebad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32480f004cc641df91ab4c343d95d25f62da7515a150409c8ac258f254ab9b84 +size 75 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansi_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansi_test.py new file mode 100644 index 0000000..a8c2578 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansi_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e5620eb50834865caf9d393c0c6f5380235f3d5ab048802ecf465cc87045a1 +size 2839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansitowin32_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansitowin32_test.py new file mode 100644 index 0000000..b96eb79 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/ansitowin32_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44dec0221309e44a83b186828d5a3ea38bbc2730c3e2e9096e67af58a4bbd2b6 +size 10678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/initialise_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/initialise_test.py new file mode 100644 index 0000000..54c2c16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/initialise_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05b3f2f977f21f027accaa33b903af36f419cecc7dbdd6ffd1b6179fb86c0537 +size 6741 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/isatty_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/isatty_test.py new file mode 100644 index 0000000..1f6bda8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/isatty_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e0dba2d1a6fd3240307901cfacc605571bb86c035358bdaa45800a597d8cd98 +size 1866 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/utils.py new file mode 100644 index 0000000..41c0296 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d48211ca51b7f73e7e773ab4f51fe782e7f1c8f67182574d6ebc4ac541b018a1 +size 1079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/winterm_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/winterm_test.py new file mode 100644 index 0000000..9e8e19a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/tests/winterm_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa85853c48f29b9826d91b8cc297f7a4e8acddae6bfcf259142ccadb9e092fc0 +size 3709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/win32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/win32.py new file mode 100644 index 0000000..8fbb9f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/win32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61038ac0c4f0b4605bb18e1d2f91d84efc1378ff70210adae4cbcf35d769c59b +size 6181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/winterm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/winterm.py new file mode 100644 index 0000000..3c56659 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/colorama/winterm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c24050c78cf8ba00760d759c32d2d034d87f89878f09a7e1ef0a378b78ba775 +size 7134 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/distutils-precedence.pth b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/distutils-precedence.pth new file mode 100644 index 0000000..c659194 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/distutils-precedence.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2638ce9e2500e572a5e0de7faed6661eb569d1b696fcba07b0dd223da5f5d224 +size 151 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..529fe1e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b62adc76b5e086960da8adaafada9e04e32aaf35e1ccb14cef5742405aaed27c +size 1517 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSES.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSES.txt new file mode 100644 index 0000000..080da8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/LICENSES.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce53f508d0cb88bdb4621e236ca34881a3fa1805f97dfccf38960128a4e2ead9 +size 1543 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/METADATA new file mode 100644 index 0000000..55bef2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1c1b3cf4166032b1bb181b5d2ebdd3be8f79ff89c8b3688a0cbef846a46316 +size 3516 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/RECORD new file mode 100644 index 0000000..eeb9055 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f52beeaff2d9d4a5d711aac2b45afda28d37590c4accd13e98659094400cf9f1 +size 16654 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/WHEEL new file mode 100644 index 0000000..1174510 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d95b28fff3894ad1c03e64d0ac77085b265d0e4eba56931227127e36e2aad2b +size 102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/top_level.txt new file mode 100644 index 0000000..a49069f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml-5.2.2.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3630fdf3cc2a68aab9d769ec84d74bb7eb83c6c8e4a78061e759ba37e76152b9 +size 5 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/ElementInclude.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/ElementInclude.py new file mode 100644 index 0000000..8ea8d91 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/ElementInclude.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a44bcb292ca1356b594d1afa9625090fed6622a99bc5b72eaf172a66feef3478 +size 8804 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/__init__.py new file mode 100644 index 0000000..2d19743 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb06d193f26ab95e5fc918a51701c9babd335599aefdbfc75a845fb1df38372a +size 596 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.cp312-win_amd64.pyd new file mode 100644 index 0000000..d3bbf29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:754c11dd73893a01f477736658613ffb26e67bf73d0be00ea5c57f5d29fa3b20 +size 149504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.py new file mode 100644 index 0000000..53fb9b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/_elementpath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a670c2680a6ce94d6b3b4b4543975819c79d9750c035b0bfb3341a01f0278e +size 11229 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/apihelpers.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/apihelpers.pxi new file mode 100644 index 0000000..6794890 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/apihelpers.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e12fff70e5cee20ab9b6caf8e771893de45d6ea23907cdf448562cc7250fa24d +size 65403 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.cp312-win_amd64.pyd new file mode 100644 index 0000000..1732d41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77ae8aa66b7c34ba0ea26a93add8e34c837f7138c48d527ab6079bd60911b5a4 +size 82944 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.py new file mode 100644 index 0000000..5920a2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/builder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4fd0b298830270b367e628064eafd824aac06d63e9540bd2c31765b90790229 +size 8332 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/classlookup.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/classlookup.pxi new file mode 100644 index 0000000..a506e21 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/classlookup.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad1b561f3f406a332a926ed1886fcf90e0ac6904d19202bbe7ba518f746f0b10 +size 23015 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cleanup.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cleanup.pxi new file mode 100644 index 0000000..bacde9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cleanup.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66597fc5072630191442d916ba0889ed30d058f4742072a30f939eb26434741f +size 8669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cssselect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cssselect.py new file mode 100644 index 0000000..39fa138 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/cssselect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:babefb355b13936e3eb7fd40168e448df12aca17aec34d41446fbf39be430d06 +size 3407 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/debug.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/debug.pxi new file mode 100644 index 0000000..0aa3dc6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/debug.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dd5042b0f215355b3cf89cede185eaab6ae6653c04ecbfb37840f43109db61e +size 3372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/docloader.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/docloader.pxi new file mode 100644 index 0000000..cb8e9b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/docloader.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4fe9bff3679b34f998f691fda6164b08f14e70840af03950ce56e69971b82d3 +size 5950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/doctestcompare.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/doctestcompare.py new file mode 100644 index 0000000..bae7690 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/doctestcompare.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6bdb73b72a2d41ca9ab39155a1f7b144751abe10dbe61445ae001396744d0ba +size 18219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/dtd.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/dtd.pxi new file mode 100644 index 0000000..018fe92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/dtd.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8cf77071d966c3bb28d35b506d976786d14eeaed8b64014f6ccfd650ff9a5ae +size 15706 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.cp312-win_amd64.pyd new file mode 100644 index 0000000..b3fc697 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92dfa927cfbb2f1f352e908cf1103a78b5eaf70419b0a2cef1182482699bfdd3 +size 4109824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.h new file mode 100644 index 0000000..cb4ef27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:905d18b731029fe4863cf82efcce89829829048ae00ea702304067b902a3177f +size 9912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.pyx b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.pyx new file mode 100644 index 0000000..fa638a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree.pyx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d992bbf1330288bed31c43a413befed12a43b22d732d5ee64e77a3867b88668 +size 138288 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree_api.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree_api.h new file mode 100644 index 0000000..196d442 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/etree_api.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c31e2ee5806a08732a12f21076edd8bc3806f4442eae6c6b37113cdddca0d21 +size 17063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/extensions.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/extensions.pxi new file mode 100644 index 0000000..e8c0072 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/extensions.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b37224a2f37aabb23596f004b37ae1ec5fbc4ed4e34c65d14a4a6d615f74d762 +size 32921 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/ElementSoup.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/ElementSoup.py new file mode 100644 index 0000000..18bfc73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/ElementSoup.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7504a9ceecd44f72ca08687bd47e2b71c079442c28329c9ac9163ea9bb5604cd +size 330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/__init__.py new file mode 100644 index 0000000..315716c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1408a91acc3adc92414b86070e8ac5e4e4135a8b5f81460cd7af796c5c38e16a +size 66225 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_diffcommand.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_diffcommand.py new file mode 100644 index 0000000..758c903 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_diffcommand.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31f71c698000282b730917bf3025e2842def9ee3d42a225b98ec7ce43b77ed3a +size 2167 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_html5builder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_html5builder.py new file mode 100644 index 0000000..d4983a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_html5builder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dfa8d1434391d43964eab9b78e7b59b9aa622eb7a23fdc48327bbe707abeed1 +size 3330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_setmixin.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_setmixin.py new file mode 100644 index 0000000..5e6b383 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/_setmixin.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c53221e88c227e73532b5c587b1d5995f23095d5b1f255550a002087bd87b4 +size 1244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/builder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/builder.py new file mode 100644 index 0000000..c1fe83b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/builder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f8f9936a733a22f61d37e4037ee0199f4980dfb15c8aa575c6b183d4140878f +size 4625 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/clean.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/clean.py new file mode 100644 index 0000000..d3f51ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/clean.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07faec9b7333ee99ff67c2e7917792a1c2f6e7bfbeb2a58919ac41a762e5981f +size 524 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/defs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/defs.py new file mode 100644 index 0000000..7108f4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/defs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3ff241a8330794359c538d0f5494c794a3cc324d3bf38c31b8b9bdb88fc4518 +size 4371 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.cp312-win_amd64.pyd new file mode 100644 index 0000000..d4f4fa5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6adc24ccb0af3d9c3044454bf235b0ec5b074c86ceb55c0f08719f9f87f9590 +size 276992 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.py new file mode 100644 index 0000000..b780b36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/diff.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37282f83f6b6f5f6e5ab28f4ec2782b65f7f395dc058f153063c2a10e93cf8f3 +size 31271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/formfill.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/formfill.py new file mode 100644 index 0000000..7a69f47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/formfill.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f325c520ee0335563e1c6f2ae0ee0eb71210f2a98ba57610f13d6b1544e42bc7 +size 9980 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/html5parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/html5parser.py new file mode 100644 index 0000000..c5fcd72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/html5parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aea425433bfe88d4f356b2d904ea899d0e1fab11cd0a31a217a353823fd9e83 +size 8894 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/soupparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/soupparser.py new file mode 100644 index 0000000..a9ee3d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/soupparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d0fd98d6717c0a4eb6cf0fc96c3def5834fb109a4da8f7309dd5f246157d336 +size 10511 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/usedoctest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/usedoctest.py new file mode 100644 index 0000000..e3a3357 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/html/usedoctest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78fd129cb2d915f6073487a07cb58f781a8efb8cb228a8d2b63b5401418937ac +size 262 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/__init__.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/__init__.pxd new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/c14n.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/c14n.pxd new file mode 100644 index 0000000..fcb4f46 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/c14n.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0eda0e0782774d1a586c4a6308efaed3f0a7d970db63a458a5cd9dce0f87aa5 +size 1135 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/config.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/config.pxd new file mode 100644 index 0000000..c3aa13d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/config.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1022b08446b1e485b62859f505077047633415b59c8954453095bba47c494aa2 +size 99 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/dtdvalid.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/dtdvalid.pxd new file mode 100644 index 0000000..ff0a4ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/dtdvalid.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54eb7de1ba9ee35edbc6f7e47dbb5bb1de64567c108f8a1848731f9d5da972c3 +size 707 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etree_defs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etree_defs.h new file mode 100644 index 0000000..ab7e14c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etree_defs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d7cf50a5883a8404fbf118db6799813013a0f55ed7626f5b0c93d26fbe41c33 +size 14624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etreepublic.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etreepublic.pxd new file mode 100644 index 0000000..8c831d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/etreepublic.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b361d1252b998709438b7a07b1204f0a10387604e75a359633305bdd5c6bb49c +size 10421 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zconf.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zconf.h new file mode 100644 index 0000000..dd81706 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zconf.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de38c0a2242acb2b925c42481fff3853cc24efa7ead54b422ee6ed3a203ce2d1 +size 16832 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zlib.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zlib.h new file mode 100644 index 0000000..c6bd978 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/extlibs/zlib.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:325aa8068f98d26298f8c873076b90a86496b3e148ad804df7c9308e08931d1b +size 99252 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/htmlparser.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/htmlparser.pxd new file mode 100644 index 0000000..c4fa4df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/htmlparser.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:504576c08a7c4477a4c1401c3d63107bc2817c4bf7f6ed1cdcb1ceb1dbd1af49 +size 2858 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exslt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exslt.h new file mode 100644 index 0000000..a4f5dc5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exslt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b1557d027828743297d37064abddfe7c322263c771ac2480b932fcebc67e518 +size 3222 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltconfig.h new file mode 100644 index 0000000..8ffff0b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12b3731f9c4467618596e893ee6dec76a94bf8c1593e98ef5c2eca2d18d21a94 +size 1242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltexports.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltexports.h new file mode 100644 index 0000000..8487853 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/exsltexports.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe575d2e85233976b5ef668061215f417929f31bfc436599c642804fae04bfb8 +size 1140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/libexslt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/libexslt.h new file mode 100644 index 0000000..b853fbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libexslt/libexslt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8796399f2d4bcd6dbdecc3027d15fec277d01b47d35ea9130a9db9e4640d3e3d +size 679 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLparser.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLparser.h new file mode 100644 index 0000000..c2231c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLparser.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4e336f03a97988e8bde6992c7a93892156e299ae6f846d79a16347f85d6fa60 +size 9809 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLtree.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLtree.h new file mode 100644 index 0000000..987e071 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/HTMLtree.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dfb7212eaceaab78966de01e462b6a6abd8fdb636b9be1352309f71c84f15ac +size 3649 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX.h new file mode 100644 index 0000000..0c56023 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9abfb9b68dcd8878100251381b85b837f86de08fe74efb406131a944cbbfefb3 +size 4661 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX2.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX2.h new file mode 100644 index 0000000..fb231a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/SAX2.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9a51932c85447ab964b0e53f0341e0c19651f5b091313f4e5d684fc7ba40f7 +size 4642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/c14n.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/c14n.h new file mode 100644 index 0000000..3c1ff4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/c14n.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b35701c3b9f12c6947afacb30aefcf2c94d8bd17e8925a8218b55be35ec6a222 +size 3213 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/catalog.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/catalog.h new file mode 100644 index 0000000..4a3f6af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/catalog.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1eea28570d1332c02f1cae75fe249d2fce0492c7741b6c101bb5941b2511751 +size 4800 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/chvalid.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/chvalid.h new file mode 100644 index 0000000..de972b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/chvalid.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:128277df76c4c544e503fb8640e7bca8e9c9c9a2db7274111eb90c7fa7e328b8 +size 5317 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/debugXML.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/debugXML.h new file mode 100644 index 0000000..4a53874 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/debugXML.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b39ada080f4d2eccdca6b66c06eb5ffbee49c934a80857d7ebdd8846c43ab8b5 +size 5145 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/dict.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/dict.h new file mode 100644 index 0000000..192ed5d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/dict.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e1388cbabc743ec67295023ab68aca0546a23cf3d4c22b5ad8d90a80fdddfaf +size 1821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/encoding.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/encoding.h new file mode 100644 index 0000000..dada786 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/encoding.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f406ac3c778320769e255da2d647d127d1d75ff265e9c89e06a0c670d26d1ff +size 8142 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/entities.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/entities.h new file mode 100644 index 0000000..35fa168 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/entities.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8743a6cb60d0edb1041f8358ad6d62f614a99f3a78e3036069f924f38658b7f7 +size 4701 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/globals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/globals.h new file mode 100644 index 0000000..3650a36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/globals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe42f083955f894b6680ca0f9f5e95e04e88ce14752ae495f12b9e66c970dd4 +size 14931 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/hash.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/hash.h new file mode 100644 index 0000000..e47182a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/hash.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1c3d51abf465456624e2161c9fa5761632d075486862b1922b9332fd2e2273d +size 6637 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/list.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/list.h new file mode 100644 index 0000000..eb86e19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/list.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb5c39b95b44cd8f213d3a75dde88b36f98cb4ff8e3d67a46907dc27415ec85 +size 3277 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanoftp.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanoftp.h new file mode 100644 index 0000000..91659bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanoftp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d636a53b03a091eea457c69e64f73d5b16671b0bca55743c79967e6700ebccc2 +size 4150 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanohttp.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanohttp.h new file mode 100644 index 0000000..5569384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/nanohttp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ee36e6212b675c51dc76d0c8c651d8483d9293bc305124fc2c74ec04b41651 +size 1950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parser.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parser.h new file mode 100644 index 0000000..a9fc4f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parser.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a78f4353d83352b98d89ed7264e3c03610ac40486d1e76132e0e4d6c120c4bab +size 40871 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parserInternals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parserInternals.h new file mode 100644 index 0000000..cebccb9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/parserInternals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8d4129d00d5cebd57ce73511a8a65c0447f1ed4ee28afc2d91a38e2fe83f001 +size 17241 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/pattern.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/pattern.h new file mode 100644 index 0000000..119f76b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/pattern.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c8b9d4c1de8c1659d4feeeaadbe37f3ec2db9b6522b8d92bc97474e7e495856 +size 2566 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/relaxng.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/relaxng.h new file mode 100644 index 0000000..0ae9edd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/relaxng.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91ab9aefb2446dee4c138274e745418c22331e7f7359119cf2c17e33a6e18c87 +size 6019 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schemasInternals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schemasInternals.h new file mode 100644 index 0000000..d747623 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schemasInternals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a936ad44b6b6c05deeda264e1cb2297408812eff3d7578e15a5e1467b86d98 +size 27166 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schematron.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schematron.h new file mode 100644 index 0000000..625ed84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/schematron.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ef0b8eb0dd4036443a96b11c8c38838eab056fc433ed5e5761f9064caf60a96 +size 4368 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/threads.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/threads.h new file mode 100644 index 0000000..d06f314 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/threads.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf2e0afb6bb068654ba19225d6e18c9d16695b924c9bdc174a2ce1cab89bc217 +size 1969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/tree.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/tree.h new file mode 100644 index 0000000..daf4c54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/tree.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eb7b8723816475eecb533de35c514df39609907b3947c675603708460030a8d +size 38200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/uri.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/uri.h new file mode 100644 index 0000000..1fd57d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/uri.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b4935caba2cf6e3c2ea2b19f93c70cf93004ad39c69defcaf2ff6e99991bc1d +size 2638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/valid.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/valid.h new file mode 100644 index 0000000..4947173 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/valid.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:974b0e8030c87b14577399809d897a7edd9e10c4a2876deea34326774e6d1e13 +size 13229 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xinclude.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xinclude.h new file mode 100644 index 0000000..304bb7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xinclude.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6ee718e32faee5fddfc05e31a6b860b3d5974ff681deb06998c7c38ef9c250b +size 3016 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xlink.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xlink.h new file mode 100644 index 0000000..a29fcfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xlink.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c2fab5d35a6d0a17a1bc132f418b1cdc7a46981e9c8470a697c1d293f5a2bf2 +size 5191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlIO.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlIO.h new file mode 100644 index 0000000..8ffa1c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlIO.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f3b641373701ac6178518c864891a03578fb73d076e9c09c324f15654e998d8 +size 10572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlautomata.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlautomata.h new file mode 100644 index 0000000..7616a87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlautomata.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baba4de8d314e9eeee2ed87ba9957ee56c53f4cb8213a8f08509e2ee9f0e1156 +size 3933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlerror.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlerror.h new file mode 100644 index 0000000..7ab58c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlerror.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa4da3fbb088906315ad72627f71000c56fd4e6b4246affc3570040dbd902ab9 +size 37020 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlexports.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlexports.h new file mode 100644 index 0000000..15249c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlexports.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18bdfbc4c2dcdae8577ef9165abb79b88bd293146f9abf57a4746f916ca7a77b +size 1042 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmemory.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmemory.h new file mode 100644 index 0000000..f008287 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmemory.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a31580f2e4d7a8f7b046d83bffed8c9f8a874a299f95d8b6a8a0706e116789 +size 6053 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmodule.h new file mode 100644 index 0000000..3ddb41b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23972e1c296f2fc233de2071017f1ef38c9a829186083b92628510a99d96a885 +size 1195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlreader.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlreader.h new file mode 100644 index 0000000..2434762 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlreader.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ca4bdbcfd32749219788eca3bac504e08e61bfc606036b20b9a4c3fd9e614a0 +size 12339 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlregexp.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlregexp.h new file mode 100644 index 0000000..5a5c4c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlregexp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85c33692cca84f488fa94659314311668452d56bb1b4fb22ebcaf574181a76a6 +size 5440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlsave.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlsave.h new file mode 100644 index 0000000..3f67273 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlsave.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8669cc43726a00ce7c273fac3920d2e05013e4291f690f2f2674715b0642f8f4 +size 2345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemas.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemas.h new file mode 100644 index 0000000..e7ddfde --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemas.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e30499a3a1c2fb1454ee938f760088ab5f48df40a1d384797ac0cba4ec4fa82 +size 7071 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemastypes.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemastypes.h new file mode 100644 index 0000000..cfe9236 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlschemastypes.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e3db170a2091bb28e089186718689ffb233262753ead3de3b43422a4b0708e9 +size 4735 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlstring.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlstring.h new file mode 100644 index 0000000..b9edfdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlstring.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4b4dcd798b2e6c953faf87cdd857caa87976ae5ddcd8f02fd4a836f94d0ffb9 +size 5411 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlunicode.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlunicode.h new file mode 100644 index 0000000..ae09fd0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlunicode.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6d84c5d5b3799fb168202890c0256f6f0e8a25eaf6a4a04a4bb429bae4f4129 +size 8867 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlversion.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlversion.h new file mode 100644 index 0000000..3a6e3b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlversion.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:083822f41fd30d668fbff1cd4582971f61124794ec43f963f0e72dd88fc05954 +size 9833 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlwriter.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlwriter.h new file mode 100644 index 0000000..f0b334e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xmlwriter.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea13171e0ee45f317140d59a72f8a274e653e027e15178cf8951e492fc394188 +size 21113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpath.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpath.h new file mode 100644 index 0000000..4374365 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpath.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48816eca97627ed0f5926ea08e0749cf46632c09ecf61710600e9b726b3f87d +size 16994 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpathInternals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpathInternals.h new file mode 100644 index 0000000..d3dbcdf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpathInternals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5877832f2f8537c0fc2e7aa262b1d652873c54cb2b85eb63816b3550334f407 +size 19049 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpointer.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpointer.h new file mode 100644 index 0000000..f24a9f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxml/xpointer.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a4a6fe62c1c837a320f9a478988ad60f56e3e7f77ef62f859b8a63b6f982fed +size 3753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/attributes.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/attributes.h new file mode 100644 index 0000000..82b7d06 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/attributes.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b25dbe19567255c3bff43077075cf70d4642c05434d34aeeb3a0b2994035a66 +size 996 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/documents.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/documents.h new file mode 100644 index 0000000..9004cf3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/documents.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e86512f622144b5a7fe6f7837c5d549b1d71b07c4d853bb72a71158019cd76a5 +size 2797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extensions.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extensions.h new file mode 100644 index 0000000..e9632db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extensions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:889c4f87028da917e2227de2dcbf2d2a27c2f2e2013e7d75b78eaafa3e97cc1a +size 7161 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extra.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extra.h new file mode 100644 index 0000000..791e555 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/extra.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88eba11a314b8b4b1c9b679b800d3b111f851f5ffa1e63de1df4a08665eee57c +size 1712 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/functions.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/functions.h new file mode 100644 index 0000000..af96d0e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/functions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ae67cda07c3ab082425c4172de8c310a7c2bc73f19deb5e0eabcd9f706bda5 +size 2050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/imports.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/imports.h new file mode 100644 index 0000000..87cf266 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/imports.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9d1abdd45bd760dde12275d4835563940afc258c6c9f339ed11f6420bd9c35b +size 1915 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/keys.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/keys.h new file mode 100644 index 0000000..badcb6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/keys.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb7758fe567791f61407a5f0f373919c3a12ebc789a74a065047c3b61616b4c2 +size 1208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/libxslt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/libxslt.h new file mode 100644 index 0000000..1504c7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/libxslt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42a68ba5921be1372b197d1722f289428d385a33597e1d4f7b5964c346e24046 +size 872 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/namespaces.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/namespaces.h new file mode 100644 index 0000000..ef99707 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/namespaces.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93bf040f57d40dee06df9b9586ba396aa27bdda4df43ec67e39cfe4248d9a169 +size 1734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/numbersInternals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/numbersInternals.h new file mode 100644 index 0000000..3a634d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/numbersInternals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbc67f04e1c29c9113efa4c7697b1692dfdd47c2bffd838881d62f73843cfe10 +size 2092 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/preproc.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/preproc.h new file mode 100644 index 0000000..c906445 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/preproc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c619d35c85cce823483f84ac5c9abdcebaaa60e638ae7ac3527cb88d6bd5b7a8 +size 939 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/security.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/security.h new file mode 100644 index 0000000..96cca28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/security.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5a4874189c34ea95807bdd10286ea7dc2d6b2608245be7617fc879b235c0d9d +size 2756 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/templates.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/templates.h new file mode 100644 index 0000000..47905af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/templates.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c65b6e2b2a5a6f72994f87469da18dad0cdaac318808158f00636521780427 +size 2345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/transform.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/transform.h new file mode 100644 index 0000000..a07e235 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/transform.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e250989ca2697443181d6d709eac29ca42ec9b7a7e8f882cba546f6742b86ca +size 6518 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/trio.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/trio.h new file mode 100644 index 0000000..6f88629 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/trio.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:927fbdf0db0953dfe143c23c976fa7f09e4b9961ffd0ad249571d1de12ad734a +size 7415 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/triodef.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/triodef.h new file mode 100644 index 0000000..4cfe83d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/triodef.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e06d45ce738e3bd9109c987aa1f8d32030c2dcca4aee6ee23ef6b34491fdc9a +size 6912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/variables.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/variables.h new file mode 100644 index 0000000..b560d1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/variables.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edc2f510ea73a61cd9243dfd427f5e9c76736a47b2130ec77f3f67d48790d1c6 +size 3261 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/win32config.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/win32config.h new file mode 100644 index 0000000..478a650 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/win32config.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98963895cfaeee72eda877881c59c9c293db88d8e437b199a1b6998c399d0b1d +size 1164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xslt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xslt.h new file mode 100644 index 0000000..2dabf19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xslt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fa9d91f1c98dd4e74e466ed3bf69e2ccac9f71136baec78e573a5c93d287986 +size 2074 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltInternals.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltInternals.h new file mode 100644 index 0000000..ddd9706 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltInternals.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46d8046019bc9cbc41acba55d0011bee3db128857d4b369678bdbcb8f858df32 +size 59886 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltconfig.h new file mode 100644 index 0000000..a46f433 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48b0d039b20d634fdd54ecc0d016f312621a58e4b7a743d94c6d0a1e730d6f0 +size 3819 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltexports.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltexports.h new file mode 100644 index 0000000..2667f5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltexports.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19d7092f6a078b7e381a8ae7b86da2013dbbcaa238f0bf5e8a6d127008fdcb08 +size 1188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltlocale.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltlocale.h new file mode 100644 index 0000000..c9e86c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltlocale.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8019effbde1bc264fe660ef1c21e070cbdb749ec56c71d2cc20c89dfb83b9bf +size 986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltutils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltutils.h new file mode 100644 index 0000000..ca02655 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/libxslt/xsltutils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:283db4f29b6c407ac70750eee1b89953689933461be8cedcd923c9b63a38e891 +size 9428 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/lxml-version.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/lxml-version.h new file mode 100644 index 0000000..0036811 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/lxml-version.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52ed854d817e995a63f1a91efb2ec8dc20d9fa602cf2f99f50164e2b330805f8 +size 74 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/relaxng.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/relaxng.pxd new file mode 100644 index 0000000..8f0cba5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/relaxng.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f95b95ce6c8e58b51a542de891cba2ba95d5190b4b4341ab80159ecf252a84e +size 2679 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/schematron.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/schematron.pxd new file mode 100644 index 0000000..2cc706e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/schematron.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2662831bd12534f5c9eeb6733a94233da21dcc8675a73304393fc68d944af7c5 +size 1638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/tree.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/tree.pxd new file mode 100644 index 0000000..e499ee6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/tree.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:528ea13f26da4a087a3fd61d41fa6bd267ed0ab4b2619ff0fd9d05c82b4eaf57 +size 20885 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/uri.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/uri.pxd new file mode 100644 index 0000000..9c3ef2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/uri.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51b4c6e1fbc76aaea390d9302f2c7a68c6db0825c60e6ac4dca8cf8ab0ad5b7d +size 150 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xinclude.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xinclude.pxd new file mode 100644 index 0000000..0f4bcad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xinclude.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f749dcf1c1d730271797f13408459ffaa33001c20ea6acc10e5c3173b397f9d +size 826 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlerror.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlerror.pxd new file mode 100644 index 0000000..17ab32b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlerror.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71566bbaf8dd9ed02813c8f2d97171486d65ea4bec63cbbd04ad8c904f0614bb +size 58868 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlparser.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlparser.pxd new file mode 100644 index 0000000..20ab46d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlparser.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5396a7dc11222f5bdbd3a3d5188ba0ddbebf0b63b984056c53371b8c62fbb2f +size 11699 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlschema.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlschema.pxd new file mode 100644 index 0000000..5c86db6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xmlschema.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aba7073c9a62dee8647f630b5147768779c20c1ff86b507c71e8bc6931db37ce +size 1737 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xpath.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xpath.pxd new file mode 100644 index 0000000..68adce5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xpath.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec0e85a33b9c49501fb3d3f05db08b4458784b80ba57e3421d3666d8ce976fe +size 5739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xslt.pxd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xslt.pxd new file mode 100644 index 0000000..d85e7c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/includes/xslt.pxd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18cfc7924eef1a758c95694b33d602a6451e1a05a4f0bbe6af5294cb991b67ee +size 8431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/__init__.py new file mode 100644 index 0000000..dbab440 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fadd4622d1a7eb01df7ae223aef0ba533259738df3beae7aadb4c3a608009722 +size 13618 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng new file mode 100644 index 0000000..d0be5a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/rng/iso-schematron.rng @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:702338aa97ee4d8015b6e923c65a1b3cc949f2767e6aeec380e352da0e2b60ee +size 19046 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl new file mode 100644 index 0000000..e6bb18e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/RNG2Schtrn.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:832f84eb1476a77e522bdc1715386b68f24423d35da084cd1dde319aacbba316 +size 3247 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl new file mode 100644 index 0000000..cd772f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/XSD2Schtrn.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:430791ac820cfb315c820f7c19703609a59f21b8151345ca11e6127efbfaec0d +size 4563 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl new file mode 100644 index 0000000..2ee3c7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_abstract_expand.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:492519900916845606fd8347bd6f5453a5fcb6630e1f5bdda519b3aaed25e103 +size 12015 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl new file mode 100644 index 0000000..b984ede --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_dsdl_include.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:659f9def6af14250027ebb381266836316916f177480f6be0cf2d195557a4118 +size 41116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl new file mode 100644 index 0000000..2bacd2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_message.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3506a5e33dc4b99ff9415a0c15b26a99ad922a0e3e8739bf0dbdbcdfed25d245 +size 2069 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl new file mode 100644 index 0000000..9d0761c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_schematron_skeleton_for_xslt1.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:568d45e7bea875191d2c19ae1045ab2dae4b17748c4d7f41e841069f151bbfff +size 73560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl new file mode 100644 index 0000000..a623e1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/iso_svrl_for_xslt1.xsl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:508ef11f1d2578d5d2f41694e9cc90e021de7e5b9f2a6004fb38ceae286e1fe1 +size 20970 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt new file mode 100644 index 0000000..733de29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/isoschematron/resources/xsl/iso-schematron-xslt1/readme.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3862e216cc2e2c9116e443d828e7a86aeb8224512d55aea3cb3044d4e70923df +size 3310 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/iterparse.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/iterparse.pxi new file mode 100644 index 0000000..505f325 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/iterparse.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbe7db7075eff563f3e9a3a77b17b8570bf9cc7273d3e19cf1270e2feaa17294 +size 16965 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree.h new file mode 100644 index 0000000..f3c1849 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14497f66473a3d75c20a798325cf4c112fca9e40f87366a2c67ade29f825f617 +size 10160 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree_api.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree_api.h new file mode 100644 index 0000000..f79b448 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/lxml.etree_api.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc1c453d3c608122f6e7513946ea50e7295c15380a071409b45f5d9e66a87f32 +size 17263 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/nsclasses.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/nsclasses.pxi new file mode 100644 index 0000000..64ebe68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/nsclasses.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f538998cf6cfef71fc54dd17bb5466b9107b1be0f4a534d2a8b3db753250b795 +size 9410 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.cp312-win_amd64.pyd new file mode 100644 index 0000000..3c5a092 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66f8cc5c3099627b6680381300576ad18c5e99cc67584b6dad789ed7e033373c +size 1756672 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.pyx b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.pyx new file mode 100644 index 0000000..188d83f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectify.pyx @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22782a7520adc546affcd9251eeb4547dd80bae35fafd9d8721118dd9a6b7217 +size 77880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectpath.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectpath.pxi new file mode 100644 index 0000000..93e95eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/objectpath.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a20ecb5fe6bcf11ae0248de5500b6e27c1efc7846935fe7b93ba6669fcc2b820 +size 11782 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parser.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parser.pxi new file mode 100644 index 0000000..0519ab0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parser.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b838958bc3b3db08cb5e4cce67faeafb2ce860cb771336eb3987f8b2e7e0dfa +size 83860 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parsertarget.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parsertarget.pxi new file mode 100644 index 0000000..7d03ce8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/parsertarget.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2067978b276850f2d480a45110c753dfcda88fa91b9a4710ff1b028e0c8cc47 +size 6506 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/proxy.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/proxy.pxi new file mode 100644 index 0000000..fe225c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/proxy.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a61a1e1d9c26acde8b1775b9ed5e49fbbd993e11b17692344f18335650f9a725 +size 24316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/public-api.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/public-api.pxi new file mode 100644 index 0000000..ff6ed5c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/public-api.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:353f415133e17f46712ca9bad71293e125665b16dbe5a22698d21e4c9757351b +size 6844 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/pyclasslookup.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/pyclasslookup.py new file mode 100644 index 0000000..66f66e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/pyclasslookup.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c3198adbc6e284dc7974ecf6c82d7fe9b4b91069762ba494a0be2978848b37b +size 95 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/readonlytree.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/readonlytree.pxi new file mode 100644 index 0000000..0b19557 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/readonlytree.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b745714cd9a50633c66cc1304fe44516fb04f59fac7b7e91069684106b970f1 +size 19541 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/relaxng.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/relaxng.pxi new file mode 100644 index 0000000..f186d61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/relaxng.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae34df97eac16251ea42fe277f154af0a651e7d2aa296429f6566fdda2985d59 +size 6504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.cp312-win_amd64.pyd new file mode 100644 index 0000000..b259818 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:221c2dcf688810b34bc2490cfcbdf00ff5fcc6bd9d8c1982f881f6603a017786 +size 130048 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.py new file mode 100644 index 0000000..65b09cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/sax.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1894079e5723cbfa4b2f20390e67b1e55d2bf0072a2231a22e8f33789d38d0c +size 9578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/saxparser.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/saxparser.pxi new file mode 100644 index 0000000..3ecf337 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/saxparser.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d692e6da8dd488eff4b028ed6fbb4b8e1d39635d4e8d6618417c4744774e91f +size 34197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/schematron.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/schematron.pxi new file mode 100644 index 0000000..694290a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/schematron.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4934298921232fcd4c55e3e3a1b3e1856609107d8ab9c596e75f4d1625a9486f +size 6076 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/serializer.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/serializer.pxi new file mode 100644 index 0000000..8270153 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/serializer.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa1b42976b4f90a6a4dcc50459e8f01e8aa52bbda5299e5b5f753f093c3ee10e +size 69833 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/usedoctest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/usedoctest.py new file mode 100644 index 0000000..93ee846 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/usedoctest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:727deb5de2f717e2128fe1d734bf60e04c1c887eb46fd35c6635c8440177d623 +size 243 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xinclude.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xinclude.pxi new file mode 100644 index 0000000..b2fc440 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xinclude.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d3adefca6084add6bcdb7ffa92ef98b1f996ebb9206779f21f36ce00aaf17e3 +size 2523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlerror.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlerror.pxi new file mode 100644 index 0000000..c344460 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlerror.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54510ee939f644c563285f525c4d79a626a4db794c68daef136a6a4f48717c5c +size 51508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlid.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlid.pxi new file mode 100644 index 0000000..bf6209c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlid.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:360ed689fbf45d79278cf30eea495d82b3877c2b08238e9404f0a451393de909 +size 6252 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlschema.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlschema.pxi new file mode 100644 index 0000000..a8f1126 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xmlschema.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b09ba61046e4b91faf8f6bc3004f2f0ef6e3061833b7f2d15fe2304111602d35 +size 8705 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xpath.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xpath.pxi new file mode 100644 index 0000000..5352f66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xpath.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893d52ec2068d9d067d7dcbddba92dc0f800286442e56167460ae7700e86c293 +size 19619 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xslt.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xslt.pxi new file mode 100644 index 0000000..3bc67a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xslt.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad959da2cebf60ebe96b7a3619574b50283a8df9d415073004e1812196cf807 +size 36973 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xsltext.pxi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xsltext.pxi new file mode 100644 index 0000000..f6e27e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/lxml/xsltext.pxi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b322a4988e8633013f7fe5cf602f2b1855c9e45f4a7908a0c73e760ac6c5e0f0 +size 11330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/LICENSE new file mode 100644 index 0000000..bff2fca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb36986 +size 35149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/METADATA new file mode 100644 index 0000000..9df1081 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b78c9f28fe721a670b8f401fee006b25821f6a92c4245f05d6922dcb5564afc9 +size 10058 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/RECORD new file mode 100644 index 0000000..177bcdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f2c43013db4d3fed8a9df2e3751b7263d0387eb41a134d74d417ef9a5186012 +size 1160 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/WHEEL new file mode 100644 index 0000000..0d1b7f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6472d658cd44b8018567e9d27eef7ebb389662bc5d9ef1103d6ff6418e27f5f +size 92 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/entry_points.txt new file mode 100644 index 0000000..4a13d00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e18ca6d2fd574522b65c8f6734af6b10cf192a339ee932a965198841512298b +size 82 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/top_level.txt new file mode 100644 index 0000000..6daa19e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline-0.1.4.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:281859cc3cccd04707e80b9a1a319980d8d0acd1d9f6f099442a77f66f6de4cf +size 19 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline/mdbook_pdf_outline.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline/mdbook_pdf_outline.py new file mode 100644 index 0000000..907e678 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/mdbook_pdf_outline/mdbook_pdf_outline.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01eb1c74f56682f4462c28bea0dc5d8b2f8e5a6147da3b546b90cda459b89bfd +size 6932 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/METADATA new file mode 100644 index 0000000..90c48d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b04e1b134a7c8143fc1f028585f2678b5fdbbfd4a50e5940b683f96cb4e5c61b +size 438 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/RECORD new file mode 100644 index 0000000..4a8d30d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a78bce9004892bcdc80ee37e4d2061d84e82a263fa1ac49149609de99af3c77 +size 2536 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/WHEEL new file mode 100644 index 0000000..1174510 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d95b28fff3894ad1c03e64d0ac77085b265d0e4eba56931227127e36e2aad2b +size 102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/top_level.txt new file mode 100644 index 0000000..becb57c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime-14.40.33807.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45e9fd7ff8544d4707a8a774dc8d450ef9a807d75d9507d1b55589474770aa4c +size 13 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime.cp312-win_amd64.pyd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime.cp312-win_amd64.pyd new file mode 100644 index 0000000..18fbd8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/msvc_runtime.cp312-win_amd64.pyd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60098669be3ad97cd02410a582e38e54ac6441aa01be57ef53c99dca8498362b +size 11264 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE new file mode 100644 index 0000000..9139d20 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cad1ef5bd340d73e074ba614d26f7deaca5c7940c3d8c34852e65c4909686c48 +size 197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.APACHE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.APACHE new file mode 100644 index 0000000..4964db6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.APACHE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d542e0c8804e39aa7f37eb00da5a762149dc682d7829451287e11b938e94594 +size 10174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.BSD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.BSD new file mode 100644 index 0000000..7149817 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/LICENSE.BSD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b70e7e9b742f1cc6f948b34c16aa39ffece94196364bc88ff0d2180f0028fac5 +size 1344 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/METADATA new file mode 100644 index 0000000..89ea1ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f7a283b75a709fccd481aea42379f083d4f3801753365922e6b0732042515d9 +size 3204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/RECORD new file mode 100644 index 0000000..e37ccfe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce3767096ce75bc47f82523047657e4f066a760c51fe75ca23625c931ebef7e8 +size 2476 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging-24.1.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/__init__.py new file mode 100644 index 0000000..9a5daa8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76dc366cd996090f569cca0addb93f7a52f5b2f4a58a45ed2e9661085201f521 +size 496 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_elffile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_elffile.py new file mode 100644 index 0000000..63d8678 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_elffile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb7095b860d2b2c18b25e35ebd076ba4291ab0c63c6cb7ff07d0545540a973f +size 3282 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_manylinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_manylinux.py new file mode 100644 index 0000000..3543daf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_manylinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e8e15d0f673f2c6ee5426d39e2d2dd424740077a2affee26f8953995f2c703e +size 9586 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_musllinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_musllinux.py new file mode 100644 index 0000000..6b4fa22 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_musllinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7d66a35888e22d19e7bc29c64578717f61c76157018774aeabfbc9608b1bc64 +size 2694 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_parser.py new file mode 100644 index 0000000..8ea7f53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f4ef4ef0cd2b436b336401dd529385d58533835cd0fe899e439b925dcc8e93 +size 10236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_structures.py new file mode 100644 index 0000000..5a59a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab77953666d62461bf4b40e2b7f4b7028f2a42acffe4f6135c500a0597b9cabe +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_tokenizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_tokenizer.py new file mode 100644 index 0000000..faee4ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/_tokenizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27abf91fb273bdbfa0f35c69ff640008ac0eecbc47400ea292bc8c53bcd7c0df +size 5273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/markers.py new file mode 100644 index 0000000..0ce6fc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:756292aa7e52a7e8c398e1be5b719f2c72a3c217f522cce76d3ef55650680793 +size 10671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/metadata.py new file mode 100644 index 0000000..f307d3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28836e4a4275daef92ca828d4f2fe91cd1807cc52dc4dbd9e77a80d7300a70a2 +size 32349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/requirements.py new file mode 100644 index 0000000..5eb24fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:818c9148075bac8c8a0d8ebaba02035108d132fc641f600b8a84e65f7b672faa +size 2947 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/specifiers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/specifiers.py new file mode 100644 index 0000000..ac06f9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/specifiers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae3a5cde1a09bae9d1213e83747ee02d39d0e63e50292b968e84c2e6c747b472 +size 39714 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/tags.py new file mode 100644 index 0000000..967050b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc11b85e3aef564bbb3e31e6da5cc707305fa3cec03f0b52f3e57453892cb8c +size 18883 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/utils.py new file mode 100644 index 0000000..0581c13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3407585309e500ea646adfd1b616af5fc6b4ed8b95c6018bfefc2bc7bdc64833 +size 5287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/version.py new file mode 100644 index 0000000..38be2d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/packaging/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5741f748e8fff307abaefa2badbe900cb46195ca9212b3534e40afbdfb338432 +size 16198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt new file mode 100644 index 0000000..20f8031 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/AUTHORS.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b05e6e279304649ad9ced5963e74bcbb10f7a840d5cc34b6f2e423771a53616 +size 10388 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..4f9dbd9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:634300a669d49aeae65b12c6c48c924c51a4cdf3d1ff086dc3456dc8bcaa2104 +size 1093 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/METADATA new file mode 100644 index 0000000..dca3455 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90d11f277fd5868da679ee257c97656dde511c8aac7d025231407e6ce90839e2 +size 3581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/RECORD new file mode 100644 index 0000000..0d6598f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d1748827c0b2ee8ffb8fc412fce5c824358393c2512062595beff56cf1d6830 +size 78960 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/WHEEL new file mode 100644 index 0000000..8320396 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2241587fe4f9d033413780f762cf4f5608d9b08870cc6867abfde96a0777283 +size 92 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/entry_points.txt new file mode 100644 index 0000000..92be101 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca764dd7fef4eff2f6dce6bcfcee4b3b112871c8f59c36b8c474f981a95f37ba +size 125 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/top_level.txt new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.0.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/AUTHORS.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/AUTHORS.txt new file mode 100644 index 0000000..90f5dfe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/AUTHORS.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:324ceaa5b2a8a1fc5e078ffa6c0cf2ef1fc697e07d1880513da62b3d649d16eb +size 10669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..4f9dbd9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:634300a669d49aeae65b12c6c48c924c51a4cdf3d1ff086dc3456dc8bcaa2104 +size 1093 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/METADATA new file mode 100644 index 0000000..75205e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3852cb34b5fb47f22df907c6bbff4236b030be683ee5489ec700f3fa40a17dd7 +size 3626 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/RECORD new file mode 100644 index 0000000..8eb3b63 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dd9c74bdf03766c78ed25dfc6ac57444d4064ea068ad31c1154c7cd6d998250 +size 67188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/WHEEL new file mode 100644 index 0000000..fb96744 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb8997f92397e1f6089289ec0060393743b2fbcfe0238157c391cd235c6abd68 +size 91 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/entry_points.txt new file mode 100644 index 0000000..6d7ee4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79e223bb37e77d1d8fae16e39dbcc553a327492ef49192f1c1a1c7aba33e6c3d +size 87 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/top_level.txt new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip-24.1.2.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__init__.py new file mode 100644 index 0000000..f0d8b78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f501623a914d7ba9239691b3bd4d97e47fd262a0cc2c783b9115add605b052bc +size 357 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__main__.py new file mode 100644 index 0000000..738419b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b36e11d74db484ea0058d7d98d37d9b8b39a3fdfae4b3af4d84a0aa06dd0611 +size 854 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__pip-runner__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__pip-runner__.py new file mode 100644 index 0000000..aee2fce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/__pip-runner__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70f3d6b89e8d2bf93e1b37ef95e8cb160c339985113a6a4047a402dd0faf9174 +size 1450 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/__init__.py new file mode 100644 index 0000000..b592f7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31f7283a5b8367c40c08561a974e08a8e27daba9b657b6b468eb2723e58ec54a +size 513 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/build_env.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/build_env.py new file mode 100644 index 0000000..6879f39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/build_env.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cba8c78e806a566e71ef3fda62232995e11d9afeb58e5a0881f9e3806d53c4f +size 10374 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cache.py new file mode 100644 index 0000000..6c358b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25bebdf29e4f362811b695b9a36eb040d92452fe0c9d0f7899ce3bd702fadc0d +size 10369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/__init__.py new file mode 100644 index 0000000..b00cc8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1641c1829c716fefe077aaf51639cd85f30ecc0518c97a17289e9a6e28df7055 +size 132 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/autocompletion.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/autocompletion.py new file mode 100644 index 0000000..6831557 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/autocompletion.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e58b732be9a0cdbbb664249145bf00f6fa1171348e80bf3f0ec0cc92e5356bb +size 6865 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/base_command.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/base_command.py new file mode 100644 index 0000000..7154382 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/base_command.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08d58f84860544d3dd4c37b06edbc29783be467c8d1cb45ee817f0a5db3e1d5f +size 8667 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/cmdoptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/cmdoptions.py new file mode 100644 index 0000000..d5f0b91 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/cmdoptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d17c87635090f6d1add397b604ea954a6486b955b983751d91d824d4cfea4164 +size 30066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/command_context.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/command_context.py new file mode 100644 index 0000000..bb1b60d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/command_context.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4478083f0b4e6e1e4a84cadddd8653925f336d51bee8e92697b61b157e04860d +size 774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/index_command.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/index_command.py new file mode 100644 index 0000000..1f06e77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/index_command.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a658bf36ce9cd2e1cef2abed86a395f6e8196f74cb129897b087edcb4a29949 +size 5857 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main.py new file mode 100644 index 0000000..c3f0856 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04365e7fe6d67bd83d269af8395b387437fef38e4726c2b0f37e53ec0a849c07 +size 2817 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main_parser.py new file mode 100644 index 0000000..8ebb8f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/main_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95a0e9b2e04397a9327f2c29f5e30c03db3ce237c7d932499febe62f4186f74c +size 4338 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/parser.py new file mode 100644 index 0000000..2d3f39e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:400918eacf0df800fbc390f63d09b663c0b6308252bfb8ae01e36338cbc30540 +size 10811 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/progress_bars.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/progress_bars.py new file mode 100644 index 0000000..73c29cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/progress_bars.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35e75223c839fbaf712bc3a8b9b05eb576e4214bba6f5d5307446c6a7f54c36f +size 2714 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/req_command.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/req_command.py new file mode 100644 index 0000000..fa5964c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/req_command.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ea78586650cb3aa3a12ff2a6b001c3a860d74066c7f2292d0c648e63b096304 +size 12250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/spinners.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/spinners.py new file mode 100644 index 0000000..a6d0fdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/spinners.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84827cdc67ab74580509da1b200db726081eb5e825fee0b84a9e7cea7cc56cf1 +size 5118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/status_codes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/status_codes.py new file mode 100644 index 0000000..27dfe86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/cli/status_codes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0414751a5096eabfc880acbdc702d733b5666618e157d358537ac4b2b43121d +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/__init__.py new file mode 100644 index 0000000..744ad54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6844ef4eddd336bc6ba1d1b170e0739595eb6bcabcf91c732698f5b026b1fd5 +size 3882 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/cache.py new file mode 100644 index 0000000..0e9837b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c60efafd9144042eb3a10de05cb45f31925fb78cf66b44701f81841590ba9e75 +size 7944 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/check.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/check.py new file mode 100644 index 0000000..0b17dae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/check.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98b44a4da18398bb996d9fbe90ed6734aa11318588b0bddf350def9b9169ba4b +size 1684 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/completion.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/completion.py new file mode 100644 index 0000000..43810fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/completion.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d3e250f46e0b1f947ab62038187e211da7b2061ad13bb3a320237c67d15404c +size 4287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/configuration.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/configuration.py new file mode 100644 index 0000000..606584f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/configuration.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fdf1e9f0a7acb46f91ba7e24508da668e3716524a62f7bf75a32137ee0144d7 +size 9766 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/debug.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/debug.py new file mode 100644 index 0000000..3a18530 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/debug.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cd0d1804f58b0aadb633534b3754a8bcac7b4a1785f5dc227f6ebffc3d45ced +size 6797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/download.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/download.py new file mode 100644 index 0000000..1e82423 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/download.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2a0749f2b3a6443eca20e39d650ec8cbe41c7b67deedf81f34a0564a869cca3 +size 5273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/freeze.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/freeze.py new file mode 100644 index 0000000..4e013c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/freeze.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daa8d0ac7f4a5a2e51a1abf40ae47bbdcee15a6e2e3a2ff497ab69dc448a0c73 +size 3172 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/hash.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/hash.py new file mode 100644 index 0000000..6d741d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/hash.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11554ebaf1ada0f11d162f1236799daa5090ae10b157e909b1dc2d75c0a75c64 +size 1703 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/help.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/help.py new file mode 100644 index 0000000..7109da8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/help.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c73a40391c80730eb809f9531699c004adb1106b9c64a7ff2c634b9ec92283 +size 1132 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/index.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/index.py new file mode 100644 index 0000000..1198413 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/index.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4405f1989c058556f94b5058cdbe627d7dec9fd35af2fd8209563048c3fca5aa +size 4731 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/inspect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/inspect.py new file mode 100644 index 0000000..26f42f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/inspect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c6ad8f53453442337cb9325f01764f0310e5eab9645fb1caf80d1a352ce4cf7 +size 3189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/install.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/install.py new file mode 100644 index 0000000..cc1a035 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/install.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:003592a9ad44d648344950b1f88d2ff283e7dded6ca211895c5c8e912cde1480 +size 28997 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/list.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/list.py new file mode 100644 index 0000000..02c9b9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/list.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46068857890df9e312a605005dcfba6e39d4473974bf7711135d71af9e0ef428 +size 12771 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/search.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/search.py new file mode 100644 index 0000000..b8c7d87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/search.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8521ad207836e8b45ee3af0bcbba19ea07ddf4a6d3c41459000b4973d526e92e +size 5628 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/show.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/show.py new file mode 100644 index 0000000..fbc640d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/show.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:206f4be6ea3cc3a500e2d23f22599ac4b0a834a3dae493490a58e3dcd5acd0e1 +size 7507 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/uninstall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/uninstall.py new file mode 100644 index 0000000..8eb7483 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/uninstall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee9391ede9caefa8229b2c506f3c5c1b53acc8b5cbdc3bd7f77f7198cf05bed8 +size 3892 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/wheel.py new file mode 100644 index 0000000..05cda23 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/commands/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:789461affaa834dc5602491d24236240cec25dde04d7f632421b2a26704f1868 +size 6414 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/configuration.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/configuration.py new file mode 100644 index 0000000..281e3e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/configuration.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e4022052d21a73b0cf8b17442ee61bcf58efc1b3aefea1029160506e31b112b +size 14006 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/__init__.py new file mode 100644 index 0000000..54ee44b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eaea4b7a8170608cd8ade614d358b03378234e2a807e374a46612a9e86b962f +size 858 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/base.py new file mode 100644 index 0000000..ceb7c4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41e07daaf2970c88cb74f0431397cc8297c6a8c302afe828be7ba84271ae885f +size 1783 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/installed.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/installed.py new file mode 100644 index 0000000..4e55fc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/installed.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4229c715b58043ca04d296c3f0c1595a4c259df5354184dc700d6f9e1ae560e5 +size 842 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/sdist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/sdist.py new file mode 100644 index 0000000..077c777 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/sdist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e570fe1aebe47a73df179ce33e6fa2e46f7aecbe1f621b8a24f2c85a6a7af3b +size 6751 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/wheel.py new file mode 100644 index 0000000..5e856f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/distributions/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c70587e7bfb555b7c99884c614b47d774b513b143c2d0f20df994725f1a8b41 +size 1317 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/exceptions.py new file mode 100644 index 0000000..32d51ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaa716dd0826155951c6566f0d22d4852cca27bfd379da3e972a9603a35f7405 +size 25371 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/__init__.py new file mode 100644 index 0000000..3f123b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be9b7e25e4d979f87c6be142db665e0525c555bb817174868882e141925a3694 +size 30 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/collector.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/collector.py new file mode 100644 index 0000000..8b940f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/collector.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45d3ced092c0966c8158f0166073f24681a3cf718d01e4e78023646c67b2fe61 +size 16265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/package_finder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/package_finder.py new file mode 100644 index 0000000..94426ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/package_finder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c71d09b54e6c38c02da3633ac36b6970971f8e18fcc5eed4e1bfe523d58eda9 +size 37733 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/sources.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/sources.py new file mode 100644 index 0000000..0c679ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/index/sources.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7497a0891f5ff3a92c95a00772ff7e4792ff5c17f94739bf164c8fb5e0ee3f12 +size 8688 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/__init__.py new file mode 100644 index 0000000..d75463b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51a031799fdff77172a2eb857f8a7b497605fb85acb57b84bdddcb6e63c2027a +size 14925 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_distutils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_distutils.py new file mode 100644 index 0000000..1173374 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_distutils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fd6472bfdf9add0d5d50b268b841e68150b8c54f831bbba42ea151a427a4072 +size 6009 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_sysconfig.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_sysconfig.py new file mode 100644 index 0000000..a2f461b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/_sysconfig.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:206cddb3ad2ab059de468802fa8781698edb121de53edfefe3b90c2428505ec5 +size 7724 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/base.py new file mode 100644 index 0000000..86bf3ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/locations/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45088f8b5778155336071934e1d4215d9d8faa47a58c42f67d967d498a8843bf +size 2556 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/main.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/main.py new file mode 100644 index 0000000..8987af9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/main.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe52751ef072e8e57149cfc8a74dc38e4e2bbfb313618076fa57094652594e2 +size 340 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/__init__.py new file mode 100644 index 0000000..4f3930c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f695375b7b3ee87b6316e62159c2d36159926b38a494fbfb936c7ca7b5f51a60 +size 4339 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/_json.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/_json.py new file mode 100644 index 0000000..d15257b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/_json.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f470026b1ff9ad98c66f959d7a6579bffa2cc0e25a6be70cb4f256880ae89a0 +size 2644 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/base.py new file mode 100644 index 0000000..adad7de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7edd0ae57360238113a999d1bf6f82b6f81888c38c01e18c033c53f9fe952c90 +size 25298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py new file mode 100644 index 0000000..c09f216 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d4522768c671dc7c84c71da0161b51b68b97dd058925bffb89723a36c7b5581 +size 135 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py new file mode 100644 index 0000000..23ed21b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1807bfa6b21f084e2253296b9ebff67494659240554546ce89d128203ecb3e81 +size 1882 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py new file mode 100644 index 0000000..d60bf07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_dists.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01d9e87076acac80502a35932b603c3d955ba615a9c9170fab66c233494a38a +size 8275 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py new file mode 100644 index 0000000..ebdad6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/importlib/_envs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f001a88db7fb122f9e5e657c72660c3c3a8f57f2a4a87f684d81c4f0e1a7e4b1 +size 7455 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/pkg_resources.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/pkg_resources.py new file mode 100644 index 0000000..29d9be0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/metadata/pkg_resources.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:534ec44c020d4867924417d6506f77138b5965b696fdfecf1b312a64dd21ba57 +size 10542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/__init__.py new file mode 100644 index 0000000..79d7083 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc31d477fab1a4fa337f3a2ea2a6bd83db6cd42cebe6a6877c5c5b9f1ae27a93 +size 63 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/candidate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/candidate.py new file mode 100644 index 0000000..4556265 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/candidate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf380546ec3f9163e32a91b0ecb0b4654303d8243611b7ab50862cf22ce37420 +size 753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/direct_url.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/direct_url.py new file mode 100644 index 0000000..1fd967c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/direct_url.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81b58d871dddd33bd70a4095a1d1386f139151afe3164580a1454e081bd1d91 +size 6578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/format_control.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/format_control.py new file mode 100644 index 0000000..5cd0ead --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/format_control.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2db10a922bd1da522371404b81f82eb67958a6c3a1b8fd5405c55f7efca0c11 +size 2486 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/index.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/index.py new file mode 100644 index 0000000..dcf7b82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/index.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b589cbf28c468b8692356babd261bc0c03fbac2eb2ba16bf33024ef31c3472b2 +size 1030 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/installation_report.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/installation_report.py new file mode 100644 index 0000000..a49fdb5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/installation_report.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd1559a1acfedafb2b7b38ff1f784b3a131908af5ced36f35a00be8ce6a50f4d +size 2818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/link.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/link.py new file mode 100644 index 0000000..9416b0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/link.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c76b1f4efbdce54b31308c1083931d0e5e3297c010f03ae3f09fe3ec47c742b +size 21034 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/scheme.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/scheme.py new file mode 100644 index 0000000..91800d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/scheme.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3da9261c93377bc38e592645b5fcf5033edfd6678e3499e41ae431165b77c011 +size 575 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/search_scope.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/search_scope.py new file mode 100644 index 0000000..37eba1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/search_scope.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb3449ec618f38efce12f8c33b7a442ea3d2972c7fbb333167b578daa6f028d +size 4531 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/selection_prefs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/selection_prefs.py new file mode 100644 index 0000000..56a8d95 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/selection_prefs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9a15f0ecddc8aaa173e0eb1c78e4dd633cba9c70b270e0dd2ce0fd0fc874d0f +size 2015 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/target_python.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/target_python.py new file mode 100644 index 0000000..5e8e15f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/target_python.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d97687dab679645f8ae707096c4306125ed2aab4d3a030cd92bb50daffefffe4 +size 4271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/wheel.py new file mode 100644 index 0000000..ff4d13c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/models/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39d73535558be4dfa2e80def15ae7405f36f091946bc66b8b289bad0540cd7df +size 3601 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/__init__.py new file mode 100644 index 0000000..6b4349e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dfe93b799d5ffbce401106b2a88c85c8b607a3be87a054954a51b8406b92287 +size 50 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/auth.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/auth.py new file mode 100644 index 0000000..4db89a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/auth.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891bb92c110c2bfdf35e6b275a2db5af410aba425b58cba6d63988b8befd3de6 +size 20533 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/cache.py new file mode 100644 index 0000000..5256980 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3c03def5a82cca345be46f9eee18493bfb4c5aa8f4b41d68f6ef5d50353c645 +size 3935 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/download.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/download.py new file mode 100644 index 0000000..5703bcd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/download.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad9adb8ba39d635fb636473b00cbc97ad566b4e327c15224100c3ad7938d0733 +size 6087 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/lazy_wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/lazy_wheel.py new file mode 100644 index 0000000..e7f10f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/lazy_wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8f5d576e6193c23d99244057b527519b7c725678253ef855e89c6c887f0f5e5 +size 7638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/session.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/session.py new file mode 100644 index 0000000..b4d0227 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/session.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e66a704a8d5c0f166875889e7caba4c387dc5a6c7dfb81112e409fdf7ae6460 +size 18741 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/utils.py new file mode 100644 index 0000000..678783c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e80e52ad42441141f16c6b5bb1cc14d8da42cb3fb7ced883946587a51461b09f +size 4073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/xmlrpc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/xmlrpc.py new file mode 100644 index 0000000..ef44455 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/network/xmlrpc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00c7339a709f8dd4d5c63ef6a9f630b7cee6164a79efdc65ed811dbe13600f0 +size 1838 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/build_tracker.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/build_tracker.py new file mode 100644 index 0000000..bd439fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/build_tracker.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f80456fd37231c2397ec3d8d50e1a7b41e0581ce9be1aa25b179002ba0562fbc +size 4774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata.py new file mode 100644 index 0000000..eec1b17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f52d02503f14dd0a99797a7e672b7c1f1c14f74944e10ae760382ba990f30677 +size 1422 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py new file mode 100644 index 0000000..bc978c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_editable.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54b2fb2ef9ed284f2ac5d854744261728b45cd4b0e488f0d352d38df150b29ec +size 1474 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py new file mode 100644 index 0000000..3c98aeb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/metadata_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f22ea2d50657f66fe528f4ad105b0728cd0c4f86be083e34f093b0f7d75a2e6a +size 2190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel.py new file mode 100644 index 0000000..7152f34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13d761412c0c430bac32ac3a2b87c92f719d631b9a889c2456cf33fe5242624 +size 1075 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py new file mode 100644 index 0000000..42807db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_editable.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8eb681face9024a0a60452dafc161ceb62790d1d0690063590d8761a7b53108 +size 1417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py new file mode 100644 index 0000000..00ff0a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/build/wheel_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2beea43619a3fb5c43178e67cb5ca178c7ab174ba2e04a1008bcc4a0787afad7 +size 3045 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/check.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/check.py new file mode 100644 index 0000000..8396e65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/check.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:429c3b17064c1b56716d9e2c48f9db2747a7ccc9d7b0229650bab47d2d61bedd +size 5087 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/freeze.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/freeze.py new file mode 100644 index 0000000..4379f2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/freeze.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:579f72132092cff62166e847d3dfba695ff3bd804cad2fc8c4514daa7d90ce50 +size 9864 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/__init__.py new file mode 100644 index 0000000..7e938b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997ee1c83d863413b69851a8903437d2bfc65efed8fcf2ddb71714bf5e387beb +size 51 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py new file mode 100644 index 0000000..ec9ad3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/editable_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e812c3443c66c8676c90a613ec9984ca2ce08cb3882fe4e7027735b5db835c0 +size 1283 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/wheel.py new file mode 100644 index 0000000..80e1efd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/install/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2c8435009f1b8f50183ea6b509eb46aa2ee5b86ed6fa5c74f76f06f75597211 +size 27197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/prepare.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/prepare.py new file mode 100644 index 0000000..e8a7ff1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/operations/prepare.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e8589c0f92ea86b1c42054d2262caef57bd8516a9c0abd108cf07725cac9af5 +size 28118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/pyproject.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/pyproject.py new file mode 100644 index 0000000..d349a31 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/pyproject.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e17b33a75d7182bd76eb2cc6e816c9034a1a43d597ba16f48f251bfb2ffa94f4 +size 7152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/__init__.py new file mode 100644 index 0000000..3ba8195 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f1045b59cbf05b09c94b82bdbac1a32da7361d3b94f7bf178fbe91805d2b79b +size 2653 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/constructors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/constructors.py new file mode 100644 index 0000000..5e296cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/constructors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:682f4d73e484484cf9ed64e87721f8eae8eea58d74a56a363664e5d6ff7fb6ba +size 18412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_file.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_file.py new file mode 100644 index 0000000..cc96a6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_file.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8670bd3b3fadaea190a6e0e70955aac2926402fb5b0ac93bfb99341165508654 +size 17687 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_install.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_install.py new file mode 100644 index 0000000..630eea9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_install.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbd2cb078a06e88822fc578e29927f801b75e51d41a465bc154f498aae07f602 +size 35054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_set.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_set.py new file mode 100644 index 0000000..3c8b923 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_set.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f77ac1b4b3a4b3a1545e5fdad69f8ae960db72113fdfc316f024f4629af471a +size 2858 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_uninstall.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_uninstall.py new file mode 100644 index 0000000..8224e1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/req/req_uninstall.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab30c8c49a3e3844d6a866a2b3bb523020dc59b013600053f9389dde2b72174b +size 23853 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/base.py new file mode 100644 index 0000000..dffddbd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa59a1df6e520557ef1ba31ef6073936c879b1dc07070cc706ae9a117b4ab0b0 +size 583 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/legacy/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py new file mode 100644 index 0000000..0d69193 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/legacy/resolver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc766224145dd454cdea3429238a913bcf936cb61e21b5134ba3c5bd79d7b36c +size 24068 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py new file mode 100644 index 0000000..9278d65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c27faebd16cab2418e6ea9779e3c31d06357b840efa9073587f0ed2cf7e2bde +size 5023 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py new file mode 100644 index 0000000..392c50b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/candidates.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3b08173ce726b7275f57a9dbd4b0b430b5523189362af649bd85b4d18748dbd +size 19823 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py new file mode 100644 index 0000000..ee38931 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/factory.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab334847f62c0b8969b3369298e9a138d0a996b7f7de13dc78ef18b40210ac0e +size 32395 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py new file mode 100644 index 0000000..2458850 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f61ad3c90a85be5f48ed38e2efd1750311efdfd421d6b909ffb75e48748c7d07 +size 6383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py new file mode 100644 index 0000000..878e270 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/provider.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dcb059d8be59ad07cd1cc15756d5f23082897c64daf57f5547c914e4cf8ed23 +size 9935 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py new file mode 100644 index 0000000..67f980d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/reporter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6059bd850bf3e031426e365e153439ea14f3dc073e9830671e478d455bcc1cb6 +size 3100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py new file mode 100644 index 0000000..d8a05e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec91b867bd9ee58938bd4d12e6e946bdba93cb814c406621639cd0857f734ed6 +size 8065 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py new file mode 100644 index 0000000..cefa66e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/resolution/resolvelib/resolver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cb24eb15304562da0414549a1414a31901ebb67fb19132318cbcd496cb3d017 +size 12592 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/self_outdated_check.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/self_outdated_check.py new file mode 100644 index 0000000..ea7f150 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/self_outdated_check.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7d65fe9a6925ef96875cd896d4355c489960a8137da9d7b18a266cae23e953f +size 8356 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_jaraco_text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_jaraco_text.py new file mode 100644 index 0000000..b0ceeaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_jaraco_text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:335e6e50f221e4da4fd6d754181c516aeeaad59004b48f3e5f22c4113b1c15f1 +size 3350 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_log.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_log.py new file mode 100644 index 0000000..4afee65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/_log.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa31cb384fd31da673e4115c0a7a122fd11802d2749d77a6e3db3da1fe23bcac +size 1015 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/appdirs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/appdirs.py new file mode 100644 index 0000000..a966596 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/appdirs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3081c4ca3a6ddd68b7974d6eafe41512d938b646f1271914181ffc835e4940a +size 1665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compat.py new file mode 100644 index 0000000..3df17fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:724905bde0626108d15a390db1a8edfe858f4b9eed26f13c5f1a02e0e2188026 +size 2399 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compatibility_tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compatibility_tags.py new file mode 100644 index 0000000..b502a30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/compatibility_tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9d8a7f101bc047a9846c3d8e0e2fa7266f8e026ea5e5d53d31c52f7b5611e49 +size 5377 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/datetime.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/datetime.py new file mode 100644 index 0000000..e1ff9c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/datetime.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b6d58df002d41cfa38ba55e6fa93f33983a034672148e1e81c853767c21fa94 +size 242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/deprecation.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/deprecation.py new file mode 100644 index 0000000..e3b5d18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/deprecation.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93b420fd404069a4ddcaaf3661501103a0fb4667064d71afedf9df7208a08f84 +size 3707 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py new file mode 100644 index 0000000..7359e50 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/direct_url_helpers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af6311b64543002bfd006a983830540bd0a3c20b6c514d6cebc86681f08932d0 +size 3196 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/egg_link.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/egg_link.py new file mode 100644 index 0000000..bc8ee47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/egg_link.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0578f6685182afe11190dadeb1ef0e59e36ef06c0fd4a375999c092b82cbaaa +size 2463 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/encoding.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/encoding.py new file mode 100644 index 0000000..2de8c92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/encoding.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaab170ed8b03088d730488855268e8f01f96268ab09a2be748cdbebe5c9b0bd +size 1169 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/entrypoints.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/entrypoints.py new file mode 100644 index 0000000..021a530 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/entrypoints.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62584b4d1976a07040baa85cfb398bed4492ebb4cf5951c89a3780407ade6534 +size 3064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filesystem.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filesystem.py new file mode 100644 index 0000000..c7fdd60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filesystem.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4613085d468d54c1a3737ae1b036a1590e0c6afbc440376a5ea82af85e9fa70f +size 5122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filetypes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filetypes.py new file mode 100644 index 0000000..e85fd8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/filetypes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bc5c04347850a8836e85c3dc95d186f5ca002a298075c3d0b3f67d1f8fc8195 +size 716 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/glibc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/glibc.py new file mode 100644 index 0000000..c0f9d6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/glibc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31eb31c6083704bc6178b671f9d49fdf46fa80aa4e81d557c3a5befae1d2b334 +size 3113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/hashes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/hashes.py new file mode 100644 index 0000000..aef441a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/hashes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68b8409435de100fcfae345b7c5632f46ebf30a97176f73b27152d37940a3fa9 +size 4951 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/logging.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/logging.py new file mode 100644 index 0000000..177cff9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/logging.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c520df20745fcbde7e4521ee8754055d9aeb4b63a7a5ad663152c3339fe8db5b +size 11602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/misc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/misc.py new file mode 100644 index 0000000..d8c62d1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/misc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cedea55cf7c0ce49dfb6c40f6a04c1524e19998d0883cd50daddd9b6f90de57 +size 23814 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/models.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/models.py new file mode 100644 index 0000000..347ef6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/models.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e46a18539f3a4abc5444cbc39ff8c13092278adbe2260e0ee7e88e53ee88d166 +size 1193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/packaging.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/packaging.py new file mode 100644 index 0000000..283c60f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/packaging.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e569baff1ee52ab96a5633c8e4c04dfd1bab7111f0558a10ecab2bb3ce1d7bbb +size 2108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/setuptools_build.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/setuptools_build.py new file mode 100644 index 0000000..37b81ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/setuptools_build.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2e5e9b9dfa3792f313f24cfb1727e9b7e0d3ef2b9a2ce39a2d03375257f2091 +size 4435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/subprocess.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/subprocess.py new file mode 100644 index 0000000..aa68a86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/subprocess.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12cbea49189230717df13f13c66bba34b53753ef8ca534d08ed36028fd0ffbe3 +size 8988 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/temp_dir.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/temp_dir.py new file mode 100644 index 0000000..d84fcda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/temp_dir.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d4030db6b85aee41d2b8de2d8bd8ae770be0838d108f780b01289a6efab1d0e +size 9312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/unpacking.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/unpacking.py new file mode 100644 index 0000000..e931e6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/unpacking.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b20e44ac9389d6f197e24a337325db82ce7a47c9a18756fdda93f2cc1ac8843 +size 11951 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/urls.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/urls.py new file mode 100644 index 0000000..7dbe634 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/urls.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9c7923996f995b343ac736cbfbfd2e0be18b6cce36b93703ca50c9d91db6273 +size 1599 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/virtualenv.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/virtualenv.py new file mode 100644 index 0000000..b32b4d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/virtualenv.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ba7fb72c628ad1a620fa72f9f78c849961cdc8f0f242e371f988c1694401035 +size 3456 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/wheel.py new file mode 100644 index 0000000..802c53b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/utils/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f8e368e4c9d1478d7cc3cba70c47b329cd6049d50f36851e45df77267075778 +size 4494 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/__init__.py new file mode 100644 index 0000000..89e7b0b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:500aafce96e2d156d9a3751beac904799030fa8a08651fb35ff5a909bc720a85 +size 596 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/bazaar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/bazaar.py new file mode 100644 index 0000000..0b57325 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/bazaar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10a4ad71068aa4dbb434ae29e50d7439ce316f70d4c45c34db85eb272e346c54 +size 3528 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/git.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/git.py new file mode 100644 index 0000000..e67549a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/git.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deda5cf4b400fc9e08556e6be4dbd669a49e0f372624ead215937427cbc829f5 +size 18177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/mercurial.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/mercurial.py new file mode 100644 index 0000000..507ae2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/mercurial.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a142ce8732765227bed3a775a2690bfbf19cea6786694932a20bea1bd642c8fb +size 5249 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/subversion.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/subversion.py new file mode 100644 index 0000000..8b31f7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/subversion.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75d4ee80706a1f357779b2a55394171cf378814aa5c976cec7cabc3605cabecf +size 11735 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/versioncontrol.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/versioncontrol.py new file mode 100644 index 0000000..f04e9d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/vcs/versioncontrol.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72f7fffa19d302340b5c9dddd7b14c36141f70ed4070a594175d2d7eb6323fe7 +size 22440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/wheel_builder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/wheel_builder.py new file mode 100644 index 0000000..795df29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_internal/wheel_builder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cbdc0f0b29e463fc00a9d75592e704a001280f16a7b201e5c929d5df99a5975 +size 11799 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/__init__.py new file mode 100644 index 0000000..51669d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebdd51ee6cc76978c1a52caac787e59d21a3076c53b0d614c75eeb6c24bc17d7 +size 4850 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py new file mode 100644 index 0000000..e8224eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a26286a0c0f12227fc51fe56f05866a80a23ed17faf3e22b237e37430201d4e +size 676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py new file mode 100644 index 0000000..446d1e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/_cmd.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a2b2dd84a7326f0d5221300c57abc8859d306c89901dea2a65c5f98d6e83729 +size 1737 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py new file mode 100644 index 0000000..d87890f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/adapter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c1c8efcf77f10e7a68d66eea1cbc159d37ce714f4abf4c19b69714babc3e1f9 +size 6355 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/cache.py new file mode 100644 index 0000000..fb59692 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:393423ef6b547fc0b5b8481ccdd97719cf2f925752cec4c84cab4318a331e33f +size 1952 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py new file mode 100644 index 0000000..1243193 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76daebae82b90670034751968c2675f5a674b45b0c7ef141b4b410535b29fda8 +size 303 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py new file mode 100644 index 0000000..2562da7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4096699325ce9cb256fa939cffeaad2c18f1d5acc8fcceffae5b2fac8a699f1 +size 5406 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py new file mode 100644 index 0000000..a6cdd2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6b9aac2d62efe58d5916ebfa0ba9b0bb11a5ff6bc613ff22ee9daf9e4b4760a +size 1386 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/controller.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/controller.py new file mode 100644 index 0000000..5ff1d86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/controller.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3e7a31899419a928af1040bc933c98f4b7bb2253c5d51d7b95f0c0b26c2c50f +size 18575 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py new file mode 100644 index 0000000..d8ad401 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/filewrapper.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:493b6d1a620f06f673b766f9d5d50ec28597e5cadc302a4a64e8ac3377f904d7 +size 4292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py new file mode 100644 index 0000000..5c06b93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/heuristics.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2187b84261c4456b0cbedc4dae9f76d1679a22c6934f2a8b075e034a17926ed6 +size 4834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py new file mode 100644 index 0000000..48d0901 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/serialize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d0776225950d391f33e454b3174c5dae5f99a31108c3064c42a94254383a599 +size 5163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py new file mode 100644 index 0000000..bf25bb0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/cachecontrol/wrapper.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c19cee0f101904d3fb87fcb60cf700ce6ac12720e853b405274b491744be95 +size 1417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__init__.py new file mode 100644 index 0000000..df7683c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963b44c7e12698fa537b648e7792b3b2e8e6fe5503d1f28956713d83371edf6d +size 94 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__main__.py new file mode 100644 index 0000000..2a73632 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64dc2afde6f0b1c464460e58eb5b7c0c76965d2f73617f4bb59fe936a9db026 +size 255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/cacert.pem b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/cacert.pem new file mode 100644 index 0000000..73fa7bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/cacert.pem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a347ca8fef6e29f82b6e4785355a6635c17fa755e0940f65f15aa8fc7bd7f92 +size 292541 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/core.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/core.py new file mode 100644 index 0000000..0f50811 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/core.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d92453e6b21c4028450db7b7ec141afa450bc40809f2a37a9758dfa93a781c8b +size 4486 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/__init__.py new file mode 100644 index 0000000..d92cb3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b47e1d2c63d0f5a620b30dd0616650da8431fac45526a65f28c3f96ebf7dbb +size 4797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5freq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5freq.py new file mode 100644 index 0000000..6880390 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5freq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96d71f3fedcf8e53470a8a397b86bb0b8cfed838414d745f63a8db31b07b3f7d +size 31274 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5prober.py new file mode 100644 index 0000000..bf495ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/big5prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94f31fc025fabf601a3e0bc587f7125997202c36d68850872d9fe9f5143dbb11 +size 1763 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/chardistribution.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/chardistribution.py new file mode 100644 index 0000000..03eb47a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/chardistribution.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7707c5d41b8a170ee2dd5ef7db216c0b15e47e654db502a4d2d7371d38df1b5 +size 10032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py new file mode 100644 index 0000000..286ac13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetgroupprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a2b749a2190763c274a4884b4827bccb4b47d2495fad8cf9f649bb73a55b28 +size 3915 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetprober.py new file mode 100644 index 0000000..f21b647 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/charsetprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f7b7cff020ea2ff1e9bebd958e71b91db2bc1ee3737afe0a8d879a47ed63dde +size 5420 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py new file mode 100644 index 0000000..adfd894 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cli/chardetect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce26cc560e51a4a6fe304f7fec4606e1933649fd3b347710cd9d7653ead8261a +size 3242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py new file mode 100644 index 0000000..f7fe526 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachine.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bb93af6cc378d8e439935e8489415b14b452102983d054e48926106e1afff21 +size 3732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py new file mode 100644 index 0000000..139cdfc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/codingstatemachinedict.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d066371e2daa219bc3ace389dc0b6aa6933546c631affeba111e041e3b8c88c7 +size 542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cp949prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cp949prober.py new file mode 100644 index 0000000..01594c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/cp949prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2329157b7c40ae588d7aacd9e4b3464408a03589960220468ff00d59be35122 +size 1860 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/enums.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/enums.py new file mode 100644 index 0000000..cb51179 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/enums.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f3102899a0228d32a83053be9c3c278a58506a696bc074b31ebf9fdb0a4858f +size 1683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escprober.py new file mode 100644 index 0000000..6f95faa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1a38f17eb9c44d2c705ca521d7898ccd9b71bbd1befd21d1651b316ac90f70 +size 4006 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escsm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escsm.py new file mode 100644 index 0000000..e9674c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/escsm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ac97a40d854050fb93e6ee06dcbfee2b461189219956bc5f4f4d2d1ba5dd03 +size 12176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py new file mode 100644 index 0000000..c712d96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/eucjpprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4a61a33d7ecc64458cf0d5be64d1f2fe8fff9ecc8c3e8a3f6bf7b6bd307c4b6 +size 3934 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py new file mode 100644 index 0000000..4048ed0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrfreq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de61ee46f5dfb2afd0710cac0d015bf2a4ae76f4e2a25ef50ba21cdb0e7bb4a3 +size 13566 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrprober.py new file mode 100644 index 0000000..0326de6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euckrprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:862153eb0335ef8188c11bea0ec21cb8e73e743b2adae3ca30a6f257cfb55e77 +size 1753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py new file mode 100644 index 0000000..2721c17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwfreq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9a9482c4d4b8797aa8852598f34643105e894d2511d8e6805077ebe66581453 +size 36913 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwprober.py new file mode 100644 index 0000000..a918550 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/euctwprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3716e935d06d5345452346ca7c67c39293fb4b6ffcffa1653bcedd547d28830b +size 1753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py new file mode 100644 index 0000000..fc956f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312freq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3d3ab757cc3f875eac1abe4aa3a3c67b82fb39f2138d3730e103230434d92f6 +size 20735 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py new file mode 100644 index 0000000..1ae5310 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/gb2312prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28f101b9e6922d2bc1a4578834cbb40fa4e01dc47dd1ee4f6906b089fcc5e28d +size 1759 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py new file mode 100644 index 0000000..fb5d025 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/hebrewprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7a4ff2e3fce996f9f2bb26b487a23623c86ddfb0681bce4a13365799de47d81 +size 14537 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jisfreq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jisfreq.py new file mode 100644 index 0000000..b1a4353 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jisfreq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a6f2d7ebc2a86939ddf0cd9292e0d26a91805055c0df4ccd89890e5a5bddf61 +size 25796 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabfreq.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabfreq.py new file mode 100644 index 0000000..ba7818f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabfreq.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741a4e606df81915fa48bf24fcb6d2f6bc593cc8cb8e8325819d373f3e479aa7 +size 42498 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabprober.py new file mode 100644 index 0000000..3b1a1e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/johabprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b5430f67573467ba7eef669e1464cef0bc94aff56f78d66114f6e0cc9d8dc35 +size 1752 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jpcntx.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jpcntx.py new file mode 100644 index 0000000..1123a11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/jpcntx.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba11eb61690bc44feb1793a41ca2279b41d4b2b8e02871d542fb6ddd472fa2d0 +size 27055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py new file mode 100644 index 0000000..6272ab3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langbulgarianmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be66ef6053fc499912c6806f2e416a2a21f5b2399ae62864dcf4e9772ef546be +size 104562 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py new file mode 100644 index 0000000..8e27140 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langgreekmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25f07b6eea638c91f6c375ff9989d0afd70903fec4b884c2d9c456d777d48de2 +size 98484 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py new file mode 100644 index 0000000..ffc7d41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhebrewmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc75c768b40f34019c5e726390825fa333592d3bd32667f85b90308bacd144a7 +size 98196 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py new file mode 100644 index 0000000..38b57e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langhungarianmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b16de408c64bfc62d02988dab141cbe3fad33272ca08e17cbe7f09031e93ff6 +size 101363 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py new file mode 100644 index 0000000..0effb7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langrussianmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b37f796d367cec4493ad908e7605db12367d3f58863f00a5ffcc52b1a73f0cb6 +size 128035 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py new file mode 100644 index 0000000..5f6a711 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langthaimodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edb265422b51a539d51800666d2ce71e72703870f2dc89e44efb45531d775902 +size 102774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py new file mode 100644 index 0000000..43c3d61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/langturkishmodel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d8d1e19d4c8cb8790f578352d53d969c6fe501847051f9cab42293d51e8c0a7 +size 95372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/latin1prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/latin1prober.py new file mode 100644 index 0000000..24dab2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/latin1prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a75e4412615b9905306ca2c2ee53895461c4670706e39b9b1196131aed352798 +size 5380 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/macromanprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/macromanprober.py new file mode 100644 index 0000000..d1ab842 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/macromanprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a9dfce663a4c17d43c3c810ce758d3b92a9931e9675b4ad232fea7525670e6 +size 6077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py new file mode 100644 index 0000000..9a5584f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcharsetprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5abd3858d2381775ff57112f7ab346f87db983bbbe3030ca94db7e2468fefee5 +size 3715 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py new file mode 100644 index 0000000..40679a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcsgroupprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:891a5a3418d5d0337060fbbfcfa4e21e0469c186a188cef3b48ff8919e14cfd0 +size 2131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcssm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcssm.py new file mode 100644 index 0000000..0cbe4f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/mbcssm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:854b4fbc3620583680d9d59d80bb2c85bc117e6dd0e5846546881d99e454350c +size 30391 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/metadata/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py new file mode 100644 index 0000000..7939ed4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/metadata/languages.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161bc121d645c5143e753c246ffd2669d44a815042694310cfd239c6a8c4e624 +size 13560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/resultdict.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/resultdict.py new file mode 100644 index 0000000..5071081 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/resultdict.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b3e0546f37929a4a8b09789d96cd4c8a743760df91c3cbf4922cf5ca09db793 +size 402 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py new file mode 100644 index 0000000..d8b5a6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcharsetprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa777717dd22ec6a572e37a12d51ea5411342a55b31af4143c44cb04d9f8a3a5 +size 6400 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py new file mode 100644 index 0000000..76bfb11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sbcsgroupprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c808d1f39f830ff76130a5a5badafcc371c321322777945eb6a82c761be7d1 +size 4137 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sjisprober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sjisprober.py new file mode 100644 index 0000000..bdda340 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/sjisprober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aa42e7cccd1c38e99a45973998698793dbe9f398a6fe86672b029a6927ceb69 +size 4007 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/universaldetector.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/universaldetector.py new file mode 100644 index 0000000..25f620b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/universaldetector.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5806b838c7475df569d3f2a7257c00d50fda2776b50d92a3e6bed7b5a5ae76d +size 14848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py new file mode 100644 index 0000000..1e674e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf1632prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a70d5ea4674c8f58431a20aed401eaab33847e35fc3157625bb3b50654fcf9e4 +size 8505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf8prober.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf8prober.py new file mode 100644 index 0000000..138a30c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/utf8prober.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f26d3c51be78f741f88d0e8b617bc5cac1ad80aa0ab0751ddb31ff8bcfd39d5c +size 2812 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/version.py new file mode 100644 index 0000000..9aea9de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/chardet/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946b4973118ce38433e026e4e2b6db9ab2b19cdaf5fbded4db94da99e2de859c +size 244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/__init__.py new file mode 100644 index 0000000..c04f90e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1e3d0038536d2d2a060047248b102d38eee70d5fe83ca512e9601ba21e52dbf +size 266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansi.py new file mode 100644 index 0000000..c583b7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e8a7811e12e69074159db5e28c11c18e4de29e175f50f96a3febf0a3e643b34 +size 2522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py new file mode 100644 index 0000000..4d9ab76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/ansitowin32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcf3586b73996f18dbb85c9a568d139a19b2d4567594a3160a74fba1d5e922d9 +size 11128 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/initialise.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/initialise.py new file mode 100644 index 0000000..8e0bf60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/initialise.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa1227cbce82957a37f62c61e624827d421ad9ffe1fdb80a4435bb82ab3e28b5 +size 3325 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py new file mode 100644 index 0000000..3fdebad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32480f004cc641df91ab4c343d95d25f62da7515a150409c8ac258f254ab9b84 +size 75 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py new file mode 100644 index 0000000..a8c2578 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansi_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e5620eb50834865caf9d393c0c6f5380235f3d5ab048802ecf465cc87045a1 +size 2839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py new file mode 100644 index 0000000..b96eb79 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44dec0221309e44a83b186828d5a3ea38bbc2730c3e2e9096e67af58a4bbd2b6 +size 10678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py new file mode 100644 index 0000000..54c2c16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/initialise_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05b3f2f977f21f027accaa33b903af36f419cecc7dbdd6ffd1b6179fb86c0537 +size 6741 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py new file mode 100644 index 0000000..1f6bda8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/isatty_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e0dba2d1a6fd3240307901cfacc605571bb86c035358bdaa45800a597d8cd98 +size 1866 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/utils.py new file mode 100644 index 0000000..41c0296 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d48211ca51b7f73e7e773ab4f51fe782e7f1c8f67182574d6ebc4ac541b018a1 +size 1079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py new file mode 100644 index 0000000..9e8e19a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/tests/winterm_test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa85853c48f29b9826d91b8cc297f7a4e8acddae6bfcf259142ccadb9e092fc0 +size 3709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/win32.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/win32.py new file mode 100644 index 0000000..8fbb9f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/win32.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61038ac0c4f0b4605bb18e1d2f91d84efc1378ff70210adae4cbcf35d769c59b +size 6181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/winterm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/winterm.py new file mode 100644 index 0000000..3c56659 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/colorama/winterm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c24050c78cf8ba00760d759c32d2d034d87f89878f09a7e1ef0a378b78ba775 +size 7134 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/__init__.py new file mode 100644 index 0000000..a1cc8ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:849285ec51e8a9b9867249dc0ee108356a3f3989033621ce0ed61748c72f8dc7 +size 625 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/compat.py new file mode 100644 index 0000000..f9dfd1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:527fae201bf2d36c3e0f6ebb386e15121b9d76a5a02a3f67364c5596d01bef9c +size 41487 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/database.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/database.py new file mode 100644 index 0000000..63c7b80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/database.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d15f50becd15af16b617ffa12d68ad2325724627c9d290b1c8e23e904381c2c0 +size 51965 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/index.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/index.py new file mode 100644 index 0000000..3c3d3f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/index.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9536f0dbaf2b4618fc770d6c89bdd567fd048521a0a093b714a27348530e69e0 +size 20797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/locators.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/locators.py new file mode 100644 index 0000000..b26ee4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/locators.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a35aff33cebf6d12da7d2a5eb66c9f5fc291b45bbefd0e7c69bbd0ae73929db0 +size 51767 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/manifest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/manifest.py new file mode 100644 index 0000000..e508a24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/manifest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dea7e6026570c51a94d68db70257d7ad0199ce1ea0fc61b34c03ff1dbf42e734 +size 14168 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/markers.py new file mode 100644 index 0000000..1e46001 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f70df3a1d72bd9ffc116edab4cca861e6455e36256b4373d22b509688c27740 +size 5268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/metadata.py new file mode 100644 index 0000000..b41cbbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a41f5667d9817e643173d39522574b4b90a33a8411bca02f530c10c8ac0a42d4 +size 39693 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/resources.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/resources.py new file mode 100644 index 0000000..e1e619b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/resources.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f06cf92c73403524c6e2e979ee3dd301527f375fb04fb85356a8f184288ebdf +size 10820 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/scripts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/scripts.py new file mode 100644 index 0000000..78d68d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/scripts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3f80ff49effb6535189c9d698f5f86620e53f9c13c0928379e83ef3fa975195 +size 18780 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t32.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t32.exe new file mode 100644 index 0000000..93701d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t32.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b4195e640a85ac32eb6f9628822a622057df1e459df7c17a12f97aeabc9415b +size 97792 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe new file mode 100644 index 0000000..4c236ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64-arm.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebc4c06b7d95e74e315419ee7e88e1d0f71e9e9477538c00a93a9ff8c66a6cfc +size 182784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64.exe new file mode 100644 index 0000000..3fd3d2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/t64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81a618f21cb87db9076134e70388b6e9cb7c2106739011b6a51772d22cae06b7 +size 108032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/util.py new file mode 100644 index 0000000..a2a56b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d2ce7c448bf8b74f6d1426e695734a971f3e64b065025b5921625069acdfd01 +size 67530 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/version.py new file mode 100644 index 0000000..006ee5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f695e476e721bdefda37b246ea22fd553615fe4a8d486a1cd83c25f09bb24a74 +size 23747 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w32.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w32.exe new file mode 100644 index 0000000..4f2f09a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w32.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47872cc77f8e18cf642f868f23340a468e537e64521d9a3a416c8b84384d064b +size 91648 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe new file mode 100644 index 0000000..bc02472 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64-arm.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5dc9884a8f458371550e09bd396e5418bf375820a31b9899f6499bf391c7b2e +size 168448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64.exe new file mode 100644 index 0000000..daebd1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/w64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a319ffaba23a017d7b1e18ba726ba6c54c53d6446db55f92af53c279894f8ad +size 101888 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/wheel.py new file mode 100644 index 0000000..3ee9419 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distlib/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:155402bdef2ef8bd10624e7e61365ceece1698d41dbe34564cad3c297cd9557e +size 43958 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__init__.py new file mode 100644 index 0000000..b150081 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f1e317e49f80fbe3c8d67588787fc23a96751fd8a393831f0642d232c13e17 +size 981 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__main__.py new file mode 100644 index 0000000..71c8417 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6eef5ddd389fa0a72264572a441bb2815dc64ae4e19d50ff9b620ae1ccfde95b +size 64 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/distro.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/distro.py new file mode 100644 index 0000000..3438967 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/distro.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ea6de7da7008434f8cebfedae76c0d79798f2f74ae064e08609af506ac433fe +size 49430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/distro/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/__init__.py new file mode 100644 index 0000000..7d6c393 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28940dd5e401afc8882b948aac9e3b957bf11b4049ecb9b7f16e334f4bfff259 +size 849 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/codec.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/codec.py new file mode 100644 index 0000000..7c472d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/codec.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d2ea6f9799d493ed68fb27bba544c6a43c3b7910127262b4f708fb6387eeede +size 3426 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/compat.py new file mode 100644 index 0000000..f30387a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3fb0e114313e02570f5da03defc91857f345f5f4fc2a168501b3b816b05304e +size 321 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/core.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/core.py new file mode 100644 index 0000000..be2c736 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/core.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:972869a1edafba511a07feb9c615e6a0a80efb152a143bdcc31bb986934d3b81 +size 12663 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/idnadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/idnadata.py new file mode 100644 index 0000000..93c0e0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/idnadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76a470cadce48c81cc05ad91d6562f1c3c0009e9d93edf1e195bb563c50113e1 +size 78320 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/intranges.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/intranges.py new file mode 100644 index 0000000..9a13dc8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/intranges.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:601af87d162e587ee44ca4b6b579458ccdb8645d4f76f722afe6b2c278889ea8 +size 1881 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/package_data.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/package_data.py new file mode 100644 index 0000000..b57c553 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/package_data.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e4b742a721ec889671dd74e6b3f564a4922b25360a24240b84fa9e46a2b32aa +size 21 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/uts46data.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/uts46data.py new file mode 100644 index 0000000..468b60a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/idna/uts46data.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4aba4b16a8bb9c70f5e6daec9156485f8852cd22133f1f69b86b309c9cea845 +size 206503 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/__init__.py new file mode 100644 index 0000000..902c745 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82c30fec94c40993544a3bcec886dd84d3a4a41f59f01706c1a6d5198d9471d4 +size 1077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/exceptions.py new file mode 100644 index 0000000..8d4ff98 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7424d67a2f1da64accb100dc8d093be004e5f47b08047d326edf3338f36a3187 +size 1081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/ext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/ext.py new file mode 100644 index 0000000..59cc384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/ext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7caa74d01a832e352d6673ddef42e5af5dfcce4f09b02b92a499246794b876df +size 5629 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/fallback.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/fallback.py new file mode 100644 index 0000000..941d460 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/msgpack/fallback.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1d516264597da0cdf456f410424ceb881355afadfe4fb41b51f19b58ec6fc41 +size 33175 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__about__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__about__.py new file mode 100644 index 0000000..c4aaa5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__about__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba001220edb0d685321fcfc23aa4365ffb34ac38636e1402df2268703d378767 +size 661 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__init__.py new file mode 100644 index 0000000..9a5daa8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76dc366cd996090f569cca0addb93f7a52f5b2f4a58a45ed2e9661085201f521 +size 496 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_elffile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_elffile.py new file mode 100644 index 0000000..63d8678 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_elffile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb7095b860d2b2c18b25e35ebd076ba4291ab0c63c6cb7ff07d0545540a973f +size 3282 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_manylinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_manylinux.py new file mode 100644 index 0000000..3543daf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_manylinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e8e15d0f673f2c6ee5426d39e2d2dd424740077a2affee26f8953995f2c703e +size 9586 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_musllinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_musllinux.py new file mode 100644 index 0000000..6b4fa22 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_musllinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7d66a35888e22d19e7bc29c64578717f61c76157018774aeabfbc9608b1bc64 +size 2694 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_parser.py new file mode 100644 index 0000000..8ea7f53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f4ef4ef0cd2b436b336401dd529385d58533835cd0fe899e439b925dcc8e93 +size 10236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_structures.py new file mode 100644 index 0000000..5a59a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab77953666d62461bf4b40e2b7f4b7028f2a42acffe4f6135c500a0597b9cabe +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py new file mode 100644 index 0000000..faee4ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/_tokenizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27abf91fb273bdbfa0f35c69ff640008ac0eecbc47400ea292bc8c53bcd7c0df +size 5273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/markers.py new file mode 100644 index 0000000..0ce6fc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:756292aa7e52a7e8c398e1be5b719f2c72a3c217f522cce76d3ef55650680793 +size 10671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/metadata.py new file mode 100644 index 0000000..f307d3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28836e4a4275daef92ca828d4f2fe91cd1807cc52dc4dbd9e77a80d7300a70a2 +size 32349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/requirements.py new file mode 100644 index 0000000..5eb24fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:818c9148075bac8c8a0d8ebaba02035108d132fc641f600b8a84e65f7b672faa +size 2947 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/specifiers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/specifiers.py new file mode 100644 index 0000000..613e889 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/specifiers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1df1a07cd251bebcc2ef9f609e7a288c7ca25acfc3626730e4f121e631c7f981 +size 39738 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/tags.py new file mode 100644 index 0000000..967050b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc11b85e3aef564bbb3e31e6da5cc707305fa3cec03f0b52f3e57453892cb8c +size 18883 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/utils.py new file mode 100644 index 0000000..0581c13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3407585309e500ea646adfd1b616af5fc6b4ed8b95c6018bfefc2bc7bdc64833 +size 5287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/version.py new file mode 100644 index 0000000..328f5af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/packaging/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c04e2c495945f9dd47e87142d6fb3311edf90b04e283f7e1e071c8160f798451 +size 16210 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py new file mode 100644 index 0000000..fa890f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pkg_resources/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0e1d4287d593ef271943bc81dfed59bb5f215d0f59e144578cbfbb0ae50b0b +size 108869 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__init__.py new file mode 100644 index 0000000..3220286 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15303a2c6366e341b0359b77806dee2c069c5af7f613fd874e61f4ac000b191f +size 22285 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__main__.py new file mode 100644 index 0000000..97542fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c127ccdbecca71e5e6dca85f37c6ba4ef7831a782a4d18755ff5cbc337624b8 +size 1505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/android.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/android.py new file mode 100644 index 0000000..e6019a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/android.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06a22c027230fba6957f1abba156a2e050d3e9ad00706914c0bd63a12b6ac6ea +size 7681 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/api.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/api.py new file mode 100644 index 0000000..8a5d914 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/api.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40161d51a736782e76d5e93fcb9dee0f50dcabe9495fc22049155de089c2eae7 +size 8996 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/macos.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/macos.py new file mode 100644 index 0000000..8b7ad60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/macos.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1fb6c6ecbeaea767458e4574a20ab64d9111f3fd62ae92d9746ba982ecc1642 +size 5580 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/unix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/unix.py new file mode 100644 index 0000000..2e18ac2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/unix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09c8bd5aab77e5d00cb20e874fd9d11874815b9a1b6f4a51dc01352499ec0978 +size 10643 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/version.py new file mode 100644 index 0000000..9c93110 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92fb2f63445dd9619146b3a07930ca7b06b7ad3d31db5d84c790206d4d8d8cc9 +size 411 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/windows.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/windows.py new file mode 100644 index 0000000..729e9cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/platformdirs/windows.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205a62a21501c313ed0b39722b036dc725b8264f2169ae96f28e7d99fac35d5a +size 10125 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__init__.py new file mode 100644 index 0000000..f426d51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d5193c67cb8d13a877b3cfbfb84c9e1e86cfe6e038f6d6374fdb8874eafc3e3 +size 2983 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__main__.py new file mode 100644 index 0000000..97c3e18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7acf0428cbd78f9c93a087d0fa97f70efe539c879e33ab0c1342d6fa7e1e707a +size 353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/cmdline.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/cmdline.py new file mode 100644 index 0000000..f473952 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/cmdline.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdb972686abbf4e23d491a9e45fa682c23a3ee7ce98a2c3e7f3e736f8e98d3ba +size 23650 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/console.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/console.py new file mode 100644 index 0000000..a5b8b65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/console.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db06795be53a4ee7490f5fcd2d4c237253296e898533dd6536fd75ffad2c7c66 +size 1697 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filter.py new file mode 100644 index 0000000..a60d73a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f968b33d6bdc12c7a787d68cb8ef7a12909d3684658da6d065568e2cd60ff7d +size 1938 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py new file mode 100644 index 0000000..be3bf41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/filters/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f928624505a3e1455318ece7ae091d4033ecedf226957023a7ca377318cc6d +size 40386 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatter.py new file mode 100644 index 0000000..f9d8218 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27d38bf615cb24a664ee6a1480ac298d6f4735fe16949160fe8ffe67f4bfb536 +size 4178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py new file mode 100644 index 0000000..fa1b1cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7fcccffbf61c71bab4bde3ab539799b7d13c21f006f3513b6ebfebfba1653fe +size 5431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py new file mode 100644 index 0000000..5ef0303 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/_mapping.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d42c37ec5b9094d69c9f144a9ad94f5f89f22e85fdfedb64a39670b1c354659e +size 4176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py new file mode 100644 index 0000000..df05570 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/bbcode.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af56fbc33593268b800c32e1f99d758918b8890c43d09289d6a1e5ea6398c6c0 +size 3314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py new file mode 100644 index 0000000..017714a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/groff.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c72f197f7b573a8e8c5ab5e1ef23c65b1de5544920fc3858e02c66b036f4215a +size 5094 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/html.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/html.py new file mode 100644 index 0000000..83bb505 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/html.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89ab919942bb2a70349036f143e0b6a75c7e6e3a166c33e506ab13f593c54d48 +size 35676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/img.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/img.py new file mode 100644 index 0000000..8e927ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/img.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e495876cd77998cba9b10494bd68e7d1f12127dc1b4b72745bd74cee0300fa3 +size 23140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py new file mode 100644 index 0000000..26dbac8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/irc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:129fa6f23777be814ee85bf9edc506166cfa25503aec8120ca204ec2fd0de1ad +size 4981 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py new file mode 100644 index 0000000..10e428a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/latex.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146cc9f98a924c4f33fefa163ddcef2d8e53abc8c4ff28231a333a757649f3e9 +size 19351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/other.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/other.py new file mode 100644 index 0000000..072d0ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/other.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80fc6493905d0335930a06c41e0d65a4b8bed45e993e1e40fdaa2d80b5c79f38 +size 5073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py new file mode 100644 index 0000000..aef5b53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8b2a741cf32878f5ff34d9b174b0fbdbcdc938422bcc62aaa85c03da60ff2e5 +size 2212 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py new file mode 100644 index 0000000..65b6185 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/rtf.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:680d2ffe9b16e8a648dcdd7c4ca0e27f178bea6705f040d770f5c3588e2f8554 +size 5014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py new file mode 100644 index 0000000..492dcb9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/svg.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75038d5b2a5bcdfbf31820ed769dccfcd25ac12709bccd838876f1d64fb0c3b8 +size 7335 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py new file mode 100644 index 0000000..8367a60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146faba6346916636988607837322e72fc6aeac4085c1dc7393a3699e4cab6b5 +size 4674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py new file mode 100644 index 0000000..9a3cd5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/formatters/terminal256.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d77489dc3e6915da99f7344e13a1db5a7043c07bce184f0696c9aa1a1a6b469e +size 11753 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexer.py new file mode 100644 index 0000000..dd638c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2077bd79988a4c5cde99cd62eaac0a70d059509f75f15d81cd111b562c13d1c6 +size 35284 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py new file mode 100644 index 0000000..7ff0294 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:583d6e224d8498831b772d56bf651b8ea660e654ef66fa660134b965dbcb40aa +size 12161 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py new file mode 100644 index 0000000..332351e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/_mapping.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14c5f67df4c41d01a08b0640f6f6123c8032a8e9dfd94c3d3a21b8188ef05c3b +size 74926 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/python.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/python.py new file mode 100644 index 0000000..f0b5553 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/lexers/python.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f37870665b52314022fbba35e12d25bb00e5e59cd70d7eb93a257e3a89961b9 +size 53448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/modeline.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/modeline.py new file mode 100644 index 0000000..70797b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/modeline.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:785daf3b82e9386a0fbc828a91b3df9f2badf214f852279b64fa5bf8160641d2 +size 986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/plugin.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/plugin.py new file mode 100644 index 0000000..81173ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/plugin.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f5161df5d116d5d8343d9ef92692abe58f7f20772b982a594b9c6c5b73cb093 +size 2591 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/regexopt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/regexopt.py new file mode 100644 index 0000000..6d04e7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/regexopt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0d402e881c60653de93412f62b0197a742aefc39cb9fbe04ffcafae164ffcb +size 3072 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/scanner.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/scanner.py new file mode 100644 index 0000000..b362420 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/scanner.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ff9eee7f7f71c2812769e52fda351050d4c4829b86630f079cd8e993462724c +size 3092 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/sphinxext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/sphinxext.py new file mode 100644 index 0000000..4eb4d76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/sphinxext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c81f107030c3366c8691e17b4c1ff53c33a1face927e1fec5e46c1da786b43d +size 7770 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/style.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/style.py new file mode 100644 index 0000000..62bfd9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/style.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:211d9f954977d487ad5fee5824021350c45103193e7d32777fd9ccdc3e9c2a0e +size 6420 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py new file mode 100644 index 0000000..ed105a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54c8f707b17a29fd4b7803d315617707c46dd0e64b8ffe2367659d802e7da28a +size 2042 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py new file mode 100644 index 0000000..bd8b17f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/styles/_mapping.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2763d6dc105d59c3d5eed1b9aa7dfa981071db359bc24078add8e5652561f29 +size 3251 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/token.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/token.py new file mode 100644 index 0000000..ad72b4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/token.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d755070b50b567d392c6eb76da822a89776147dd4ce179550199d41e5e7d54f +size 6226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/unistring.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/unistring.py new file mode 100644 index 0000000..73cfe3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/unistring.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15a51f1b5e0d04910a2d0a18f6a8fa258797ae961c2e62ae96085dc4e18568e7 +size 63223 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/util.py new file mode 100644 index 0000000..82271e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pygments/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:004558d2aa27cb210c82fe03a3674836baea500c149365d84aa1cceb9d2ecde9 +size 10230 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/__init__.py new file mode 100644 index 0000000..96da2e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f66d496c4d894cb7411b431be81d2511a663d7cd56c7972e3d7669b1b1c46201 +size 9116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/actions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/actions.py new file mode 100644 index 0000000..cfe1f2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/actions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d39b9a20f3b39c93d0ed5811766182986e2c0e750fb7082fe6a39822a6cbd946 +size 6567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/common.py new file mode 100644 index 0000000..6847404 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7eddcf37139f838e5905df91b43bdfa48d0469a1e8cffb6ff3d21c59f9ea25e +size 13387 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/core.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/core.py new file mode 100644 index 0000000..c2a2a62 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/core.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cafb9194ba57485f26824f908625b73952ea0fd4f4aec8fdb5b89b8511f861ac +size 224445 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py new file mode 100644 index 0000000..6d0ec60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/diagram/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f19833a8605f4d5ee2da198cb4d6d2858e4351796265ac616e24d584893a3ce +size 24215 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py new file mode 100644 index 0000000..aa2cc5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8973a5b5783641cf216ed49d18adc74d155042f9120dba3666bde4a707c471c +size 9523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/helpers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/helpers.py new file mode 100644 index 0000000..136d573 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/helpers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:059247080f124b4a588a8df428641373dc36a8c39a2b862967b85cbc76e74e09 +size 38646 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/results.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/results.py new file mode 100644 index 0000000..0c86caf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/results.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5dcaa43ec373237e6c566c5b7c2843d4e887d77b245da16a763a0f34dab5106 +size 26692 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/testing.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/testing.py new file mode 100644 index 0000000..a56718a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/testing.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7899dc834a7cdf39b51533ef33d6ae353ea86af22f5da89b9911437f5aa6c246 +size 13488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/unicode.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/unicode.py new file mode 100644 index 0000000..6ef9333 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/unicode.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c03ddb098804456e43c08a1e8d918af2d1da63e233ea7a5195325138c16156f +size 10646 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/util.py new file mode 100644 index 0000000..001d5de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyparsing/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd33334ddc120f257c77f75282ab944dd5a0045a00fd6df49dfc44243b2c8514 +size 8670 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py new file mode 100644 index 0000000..3dcd3d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9027a19b2d146816bda15303ed9219ae7b307e73f72d767996f9cd2402f92413 +size 491 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py new file mode 100644 index 0000000..d444ec0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2e9ebeb627aa48ac88cf8c41cbce2ace5b80333394e4a066a44736a7f4e331 +size 138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py new file mode 100644 index 0000000..34857a3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_impl.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb5189c73422a742089e1b8eebd648e466cd43cd97103501ff51a0e7f2ad5287 +size 11920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py new file mode 100644 index 0000000..32809aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f604004e9b5b1647a5908cb439f5851000b3ab15c93100d6087f6b04e0195704 +size 546 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py new file mode 100644 index 0000000..7961b47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b66f7e1cf75ec85b9a3e43fe936081e5b0af6549494d8b2ac84d3507ff3c1ec +size 10927 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__init__.py new file mode 100644 index 0000000..6c187e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e507f1f386bcc6b5f0ff69a614c14875cd65cb67be7f6022f28adef9774573f +size 5057 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__version__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__version__.py new file mode 100644 index 0000000..d964f7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/__version__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1557e09606663509e660f5e93a8843539f05e4451bffe5674936807ac4b5f3b8 +size 435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/_internal_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/_internal_utils.py new file mode 100644 index 0000000..d4411f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/_internal_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cc4329abe21b37d93a95a3901b0ab99c24486f3d487bc57965bb2ab0b252e24 +size 1495 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/adapters.py new file mode 100644 index 0000000..40a4800 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27b55e571281bdac1bb655f60c4455a34e49f415d371660b30735dd4169af9b9 +size 27607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/api.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/api.py new file mode 100644 index 0000000..ec8fed2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/api.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd96fd39aeedcd5222cd32b016b3e30c463d7a3b66fce9d2444467003c46b10b +size 6449 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/auth.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/auth.py new file mode 100644 index 0000000..64d2f92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/auth.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:905ef9b6a9cb72d67d31ffe19bd4d9223e1c4169cde6ec51cfca16b31e70991d +size 10186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/certs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/certs.py new file mode 100644 index 0000000..4229485 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/certs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d53e8a01d233f986464450b482c02d3be39df65056d1d8fb60bb4239cf0982b +size 575 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/compat.py new file mode 100644 index 0000000..664ab34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:328f5ff7166979fa1df199be9fdfd2b497154e6c12ba45d1da9dc8432c955ef5 +size 1485 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/cookies.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/cookies.py new file mode 100644 index 0000000..0df3748 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/cookies.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cd8be8aa123e0d3d9d34fa86feac7bf392f39bccdde5129830de0ea9692dd7c +size 18590 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/exceptions.py new file mode 100644 index 0000000..c873517 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f5c2acd85a77b5992dab538ded3fd09e3751bb400cbb7aa2fda3582877a123c +size 4272 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/help.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/help.py new file mode 100644 index 0000000..877bef5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/help.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85129a7fdbb41bb7ddc2ba8c1ed177a06d7a44a92d45fe8a8b0b52ab6168d7fd +size 3813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/hooks.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/hooks.py new file mode 100644 index 0000000..7da4d16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/hooks.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a2bb2b221c0dfd57951f702057148c7cdc8ac3a6ec1f37d45c4d482fdbc7ed4 +size 733 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/models.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/models.py new file mode 100644 index 0000000..df4740d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/models.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c782b80a61fe942d25d8a6fe88f7cc3787515f11c471b39a11604bfe2d3d0302 +size 35483 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/packages.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/packages.py new file mode 100644 index 0000000..255a160 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/packages.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd94030894c9f123f79155ae9d2a81b1164d3f38f673558556a6ddaf4f29cf75 +size 1057 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/sessions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/sessions.py new file mode 100644 index 0000000..1b7655a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/sessions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca44c8f145864a5b4e7c7d3b1caa25947ee44c11b0e168620556901a67244f0e +size 30495 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/status_codes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/status_codes.py new file mode 100644 index 0000000..08a8e34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/status_codes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:889500780db96da4ddc3ee8f7c3d1e178aa1a48343251248fb268cab1b382c42 +size 4322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/structures.py new file mode 100644 index 0000000..2a6a47a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f886e6855cf4e92fb968f499b94b6167afba0fd5ce8d1b935c739a6d8d38d573 +size 2912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/utils.py new file mode 100644 index 0000000..d80ee6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/requests/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fbf6f9c56f32774852cab49c29a167b8d53a338b746566ff78a58d53148ca8c +size 33631 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/__init__.py new file mode 100644 index 0000000..a98edf6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879d3d4dd11ca5be7ee382689da5377b1d93335e465412e333d08d08fc274d3b +size 537 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/compat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py new file mode 100644 index 0000000..cf7e890 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb2f31519f8d0c4c3dd7ab6e8145e6f0783008688c3b47fe45c767a647d77ceb +size 156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/providers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/providers.py new file mode 100644 index 0000000..89d985a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/providers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7eebaf56b09eb6ee60b313c1e37111ca37cef1a45e4b7ac5407a4382222d6ece +size 5871 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/reporters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/reporters.py new file mode 100644 index 0000000..94157ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/reporters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d26d1996cd3736eb0d2082c5756f15697960c1f10348adeeadc1897b1886411 +size 1601 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py new file mode 100644 index 0000000..6eb46a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/resolvers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bcaec2d94aaeb883956622afa507b51c209d608c0c48409993178444665790d +size 20511 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/structs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/structs.py new file mode 100644 index 0000000..d7c64b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/resolvelib/structs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3fd7f5cef33fc22e17a03f75697fd549df325c7cb9b434e1d133e8b4624cf7a +size 4963 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__init__.py new file mode 100644 index 0000000..e796998 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:751c6320bf926c5558d2adc88d232b7e00531eb9b52d90e02ceca0541c226197 +size 6090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__main__.py new file mode 100644 index 0000000..81906b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78eec2abc267ae01bccd5a1e226880b3ddaade15cd3087e9d30e6532c3bb4366 +size 8477 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_cell_widths.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_cell_widths.py new file mode 100644 index 0000000..0af69c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_cell_widths.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7db99ec9eb447478f313f571da5d6e2bbb673ce84cb365f59497cedefb0a0e90 +size 10209 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py new file mode 100644 index 0000000..8b322af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_codes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86ed552fd9db55da6926b5688a356c85195c4517bfbf7763bb7326776b0a65d6 +size 140235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py new file mode 100644 index 0000000..63a4d77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_emoji_replace.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fe91c7adb04531d99526850adf78c35cfad79e1a1a6e490e45f153c1b32bc3a +size 1064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_export_format.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_export_format.py new file mode 100644 index 0000000..b1279e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_export_format.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:448d3ca52ae6e6d052ccf32f9db4ea6c3f5621a95a3a837977833545398bab56 +size 2128 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_extension.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_extension.py new file mode 100644 index 0000000..83cf662 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_extension.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ede3b41a7022b062bbb38c38be80e06aef6e0945e0e3f429bdc548b97ebfb7e +size 265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_fileno.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_fileno.py new file mode 100644 index 0000000..8fd2a29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_fileno.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d66713f90b66a331b1ebcaf01066c79f9557d0a06cec28e1f3286b0b0fcca74 +size 799 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_inspect.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_inspect.py new file mode 100644 index 0000000..794db08 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_inspect.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a19246c37d5eeb87705d20a6ac39ef65bc156f564a8567d4f30237556a218c99 +size 9695 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_log_render.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_log_render.py new file mode 100644 index 0000000..9b0423f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_log_render.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d41c88d0f035669c5963708624e2b9e218e5ab85fe073fdba088c8a8277c2a7b +size 3225 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_loop.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_loop.py new file mode 100644 index 0000000..087576e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_loop.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:855ffa08b7683e6d2f6b6d96a70e332aa334458b33dd36715e3d0fa12fbd7834 +size 1236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_null_file.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_null_file.py new file mode 100644 index 0000000..98696e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_null_file.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4649793fbfe21999b8f5180cc78adf00de460840c882a55b0215fb02fbf289e +size 1387 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_palettes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_palettes.py new file mode 100644 index 0000000..88621d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_palettes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71d7afd4940a67426f960b95f62a478339d3767be52335050c16f422dd8fce32 +size 7063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_pick.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_pick.py new file mode 100644 index 0000000..a342fbc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_pick.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af0edf10378945e428b0ad421794e2429ed8ad0423ac23764b3c42005512c95 +size 423 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_ratio.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_ratio.py new file mode 100644 index 0000000..e30c4c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_ratio.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66de7c6a9b3323a84001c5cfa607562a9bb7737d5405679b39e47899bca9b6f5 +size 5471 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_spinners.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_spinners.py new file mode 100644 index 0000000..c01ef1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_spinners.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:536af5fe0ff5cd28ec8e251d00449cda200c7378b8ae2fd2f0f60fea4439cf52 +size 19919 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_stack.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_stack.py new file mode 100644 index 0000000..9f86642 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_stack.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f82f0e2bbaf19f7b0851d570c59041a5e1e12335f4788f9533731e9987da5e6d +size 351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_timer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_timer.py new file mode 100644 index 0000000..fdbcc4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_timer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cde9716d3ea83c566736bc163e973592d51e013f957387ee15c4592d018bb4c2 +size 417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_win32_console.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_win32_console.py new file mode 100644 index 0000000..6fde420 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_win32_console.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f4bf12367dc9ddca6d545354b7ed703343342793263b62a00a9b19b6e3f82e8 +size 22820 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows.py new file mode 100644 index 0000000..97059e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:681c1a0ff4b9e926e0a2922f6b2566a64d18dbcbb06360b905a6f5c25dc1a7e2 +size 1925 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py new file mode 100644 index 0000000..3fa451b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_windows_renderer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7be192f7c6e0c23f79e64e9f691f52f92e223671a909b9045095e1c225eae59 +size 2783 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_wrap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_wrap.py new file mode 100644 index 0000000..d4aa131 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/_wrap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1654aca26e445f42d5900dca5b2df8c879c27cbb6a5fe6487a95ca87eef4ae97 +size 3404 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/abc.py new file mode 100644 index 0000000..0556d99 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38df84f99a924a1799f3c56b297d8cdcf5e915b18451464f31afc07f497ee1fd +size 890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/align.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/align.py new file mode 100644 index 0000000..4ebac9d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/align.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b025248ac5e441fa2af8840fc8110b7c9f25ecb8a16495f71db1fc2bb0a27be3 +size 10368 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/ansi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/ansi.py new file mode 100644 index 0000000..debc2b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/ansi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:883eb9df6418aa7066ea1003ba52a3ad5f25f24149fbd7c4568a072471f784c8 +size 6906 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/bar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/bar.py new file mode 100644 index 0000000..b87bd80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/bar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95d6d51cecca24e9df95536ebf5c52ee0e9d2d7d84df03275e474f6e9cc94dcb +size 3263 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/box.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/box.py new file mode 100644 index 0000000..a95c48c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/box.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ebe5f608520841fe250212aeb2d19dcb9424fc8053c3af337dbb6927eed265e +size 10831 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/cells.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/cells.py new file mode 100644 index 0000000..b835f1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/cells.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68c9862b80635e1804ebf245d59106996dceee62a413c83ce2f5278f812de13a +size 4780 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color.py new file mode 100644 index 0000000..b719299 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c24404d57517b9202949e8797ad9d7b63ca43f5388b6319e2e82350483b4daa +size 18223 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color_triplet.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color_triplet.py new file mode 100644 index 0000000..3b4bac6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/color_triplet.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de585091d25bbd63e82c33be0276089805a626f579765818342559f7b39168de +size 1054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/columns.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/columns.py new file mode 100644 index 0000000..3f38ca4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/columns.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d45f429c326f5db0a362d757d36e233f876883b65f3248269573195a944ceaf +size 7131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/console.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/console.py new file mode 100644 index 0000000..4e421e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/console.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75e15922e6ead8cf40d8c0ac28502c1509560ef70e32c1ae500d3b42439a1c8c +size 99173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/constrain.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/constrain.py new file mode 100644 index 0000000..ace7ce6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/constrain.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5520fb82f0082d296adc9dc42b8c1758a80dc9556cacbba8d9a35aeb87b73b4 +size 1288 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/containers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/containers.py new file mode 100644 index 0000000..b18682b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/containers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73fe7a4f171e74662a0dea4704c4ee65d5088a38ad010827a31f9075ed19d6aa +size 5502 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/control.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/control.py new file mode 100644 index 0000000..a21d30b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/control.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d29074d440ba2b7d211100a13fa1300450579f667669e1b41be2af2b1db2b0b +size 6630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/default_styles.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/default_styles.py new file mode 100644 index 0000000..78fa92a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/default_styles.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f857b7d7c90c548fc8c1c88ae4f3a94e170ed3ef43609ebb4d900de839669663 +size 8082 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/diagnose.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/diagnose.py new file mode 100644 index 0000000..a358116 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/diagnose.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a7eaea2ec2128f025bd0858a4d3691aaf44272b1f3083afbc26cede84a8476e +size 972 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/emoji.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/emoji.py new file mode 100644 index 0000000..5dcc1dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/emoji.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a264c5f5ab1a027b0ce322d8f78791ffd7604514a6d651d4b335f6d03d726024 +size 2501 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/errors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/errors.py new file mode 100644 index 0000000..d4e44a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/errors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e693f729ce5de1027f734285b31adfca18e23d57bb275ccea9215b140cdc57e6 +size 642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/file_proxy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/file_proxy.py new file mode 100644 index 0000000..f3291fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/file_proxy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5f531cc0d9f8f9395a6f2c23580683f5390e1bac9b10fe159d1f51b714d16d +size 1683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/filesize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/filesize.py new file mode 100644 index 0000000..b2136c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/filesize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5f4cb00f080c079815dd46feca654d7de234a036b45be96c7b448a0182a78a6 +size 2508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/highlighter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/highlighter.py new file mode 100644 index 0000000..281a533 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/highlighter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9902351c3610516a3042a3dba6154725ca2db12f4fb9e492fb4b4bd819426ee +size 9585 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/json.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/json.py new file mode 100644 index 0000000..417681f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/json.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd512829d6b0a094630056b23f05e43013cbcbb4524ecf9fe38c124034769c9d +size 5031 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/jupyter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/jupyter.py new file mode 100644 index 0000000..7acb67b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/jupyter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:432a0aa04ffc21d09baed8921e9f53b1348dc931d8d053b9c2113b8ce4ddf541 +size 3252 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/layout.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/layout.py new file mode 100644 index 0000000..7773ed4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/layout.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a3912140b4456ff44153705b3ec38b997dfb7b9c45e13732fb655760ad3e6b2 +size 14004 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live.py new file mode 100644 index 0000000..29d2a9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd4727255d8b3122b7b1035a20b6e6d3efc1f01a407a21df71030030b7e945ed +size 14271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live_render.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live_render.py new file mode 100644 index 0000000..f31d738 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/live_render.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9b41e3bd631b3881b44c31739e31d76c0442d1f806e42bd5203cbfd914f36c +size 3666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/logging.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/logging.py new file mode 100644 index 0000000..2de3118 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/logging.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b81f9c07edd0e1b9970cb2e96ce5a4985be2c3e15d7b7f73c8c57ab4a2765874 +size 11903 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/markup.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/markup.py new file mode 100644 index 0000000..d8bf7df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/markup.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddeb8628fe6ce353424306928d39c9c6eb398993078f1a483345ba7c2c6b6b7f +size 8451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/measure.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/measure.py new file mode 100644 index 0000000..9bf358b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/measure.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e6ac8257f2c5914c76e087c33111acbff37564a8d5bfef4b3c68a3f965c608f +size 5305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/padding.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/padding.py new file mode 100644 index 0000000..5c207b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/padding.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:913146b1d19ed28b3bb572e71caa704c8f7409712fadc79e6460ac866272e73c +size 4970 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pager.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pager.py new file mode 100644 index 0000000..caf36d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pager.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48efc44c114a6e0de7fc080ecd79b8d52bf7e98c57032237fd1f8a398dbfb927 +size 828 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/palette.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/palette.py new file mode 100644 index 0000000..d1cfa8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/palette.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9489ef4753830d3d9fdd464c7cbd60aeaedd63fa4374a1f0e1b75480e19a3386 +size 3396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/panel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/panel.py new file mode 100644 index 0000000..f163cd5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/panel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8577557b7b5907c653c522eb281d8e53efe0acd11a64ae2860546f5956a2788 +size 10705 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pretty.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pretty.py new file mode 100644 index 0000000..70a1a61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/pretty.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e682073ff0865a71c49c3d3331d5b9a9f182e641ea20a9fbcc7fde0b872b50b1 +size 35848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress.py new file mode 100644 index 0000000..b5d3322 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f4db18bb4f651adeaab5ee8f376e4b217b8734bffe39720f15c938fa512e958 +size 59715 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress_bar.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress_bar.py new file mode 100644 index 0000000..8b43097 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/progress_bar.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f88f0f04e906ffc7e8e13ab2d5864b8c68f9a202114897c8c741b585acab91f +size 8164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/prompt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/prompt.py new file mode 100644 index 0000000..1d9670e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/prompt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1d3a7d97f174c92a72e7970e8fa0c63bc46e2250fa777b3b783b982abe957e1 +size 11304 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/protocol.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/protocol.py new file mode 100644 index 0000000..09482c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/protocol.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e611c70c3347724764f22587e7311b8becee215485e616d4da3228e3b47b9531 +size 1391 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/region.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/region.py new file mode 100644 index 0000000..d8d8ad7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/region.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acd4fdc59ad56536085d90b43589f8d42250c1835b47e29e70f3b14e042f07c6 +size 166 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/repr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/repr.py new file mode 100644 index 0000000..a7d5c6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/repr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4c64966638d802ea4b9df905befe6d68917c0bd9a47abbacbea54714089cf6f +size 4431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/rule.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/rule.py new file mode 100644 index 0000000..54b1f6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/rule.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1f35a4bf68445add43117374f958ca4dfecba6b43c5f6a8af6cb7a1fd5fb419 +size 4602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/scope.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/scope.py new file mode 100644 index 0000000..d0ebb2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/scope.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cc514f2aa35eed872a9008faa30cb62983f514d64e6a55df96c2226f9c955ab +size 2843 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/screen.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/screen.py new file mode 100644 index 0000000..41ff28b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/screen.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:628791784494871ef882ba9bd264926fd960861cac5a6147621b1b3154235cef +size 1591 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/segment.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/segment.py new file mode 100644 index 0000000..7b3c4b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/segment.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:854d6e79e5ea23a61e15ad3c2bd0c08e517640bc5c258f69c19c7b46c5dabe59 +size 24246 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/spinner.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/spinner.py new file mode 100644 index 0000000..a4c42fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/spinner.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d799280a61740d0783f3e936f0ba6de97ff3250525cc4860a3fe80eaecb8ee57 +size 4339 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/status.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/status.py new file mode 100644 index 0000000..316127b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/status.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9243e987761e019068f97fb8c0fa7c813a99c94e3ae8d2f06410383d94d37b0a +size 4424 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/style.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/style.py new file mode 100644 index 0000000..314407b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/style.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de18a8707ff837cbf0466dfef32156ccceed4b08e312f7a7ebd5ea59ab124303 +size 27073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/styled.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/styled.py new file mode 100644 index 0000000..067a55e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/styled.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:799367cc6ac8e248bfe78a606373a3d13fb1de5c5d5d3621e3faf20c1db8c015 +size 1258 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/syntax.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/syntax.py new file mode 100644 index 0000000..6e101cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/syntax.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e7643b8e0f80de1c56e46951008e2d607fcaa0025314f41a1efc692c3060a49 +size 35475 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/table.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/table.py new file mode 100644 index 0000000..492a552 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/table.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c612f0191c5e1dcb5bd3f61f468fd3b9aa14903b738303126fd11635be7201f +size 39680 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/terminal_theme.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/terminal_theme.py new file mode 100644 index 0000000..9e0e870 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/terminal_theme.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d63e7eb9f25f9ef940a3942c8bf0026625c39b0317cea826141c8e6d3f7ec896 +size 3370 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/text.py new file mode 100644 index 0000000..a3699f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6b437cef36b83951928d2de71b87b7e2c3dbf71de16e94d56d458fc20438e31 +size 47312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/theme.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/theme.py new file mode 100644 index 0000000..8beda69 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/theme.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6de9452688330345b41f2b1069b29a1ce7374561f6928ddf400261a0df8015da +size 3777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/themes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/themes.py new file mode 100644 index 0000000..7780d2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/themes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d318132e8cdf69b79b62d709b43742e50917e4855411abe2a83509261e185459 +size 102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/traceback.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/traceback.py new file mode 100644 index 0000000..efd6897 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/traceback.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:094a7160b8d05886fabd043a3bbd97d21bc357a71aaf21aa53a53078780ec826 +size 29601 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/tree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/tree.py new file mode 100644 index 0000000..f3b6fae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/rich/tree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99e00e514eac627a0110e5f620bacf2d8f64e5b5ab58d40a91a88416f1e29d73 +size 9167 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/six.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/six.py new file mode 100644 index 0000000..1d3211a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/six.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ce39f422ee71467ccac8bed76beb05f8c321c7f0ceda9279ae2dfa3670106b3 +size 34549 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/__init__.py new file mode 100644 index 0000000..3f73e1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:643e19bd969b7d95a3943be83590ca922feadb0936c6e13efc370d0c4971acec +size 20518 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py new file mode 100644 index 0000000..953aa99 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_asyncio.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:422eb0810b066bd31089b611cb7397a9c0d0b30219674d1d2cea1250637eea8f +size 3551 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_utils.py new file mode 100644 index 0000000..898cb34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9bb3a6bbb318f72433512960b2094da3e6bd4207bae0c8e360673619aba0ffe +size 2179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/after.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/after.py new file mode 100644 index 0000000..11c4414 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/after.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b934221249c3de22b2b021e5d1c1d265de457d4389ea65f9cd3c3c7a1dffff8 +size 1682 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before.py new file mode 100644 index 0000000..d938f87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:748644f609814df7e2b1fc0d90ad05d7117018f578d6ee462bbd146383e2e4a7 +size 1562 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py new file mode 100644 index 0000000..a71628c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/before_sleep.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:626a6037d63b1c6947f7b536e2fbeafd859be5d79a2b8fc36e20fc66e166cbe1 +size 2372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/nap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/nap.py new file mode 100644 index 0000000..60bcb5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/nap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d15af9f3d5a2336c8abd029de00240198031faa28e73c4cad4e99395072ab42 +size 1383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/retry.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/retry.py new file mode 100644 index 0000000..ee415e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/retry.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ebcc3fe6c40e66493504762601ed21e9c65b6384f4986529d24404dbfa08117 +size 8746 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/stop.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/stop.py new file mode 100644 index 0000000..19225a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/stop.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c26ced98197cd0fae4f44baa5181fda8297c65e57a6c7fe479b83ca9c1aa94 +size 3086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py new file mode 100644 index 0000000..db09dff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/tornadoweb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a68dbdfc5d4cb7ca99a6c1635fb115c004f4c9d0bf35b5626bd8158bb47fc170 +size 2142 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/wait.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/wait.py new file mode 100644 index 0000000..4cfd261 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tenacity/wait.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc57012680838329b5dbf74deb17caf02d6044e6341e7e0d488daef31bf9d2e1 +size 8024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/__init__.py new file mode 100644 index 0000000..4d340d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26153057ae830758381efb7551009531d7c2bbe220015f055e6bc353da27c5de +size 396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_parser.py new file mode 100644 index 0000000..837f153 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83df8435a00b4be07c768918a42bb35056a55a5a20ed3f922183232d9496aed3 +size 22633 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_re.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_re.py new file mode 100644 index 0000000..682d511 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_re.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75b8e0e428594f6dca6bdcfd0c73977ddb52a4fc147dd80c5e78fc34ea25cbec +size 2943 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_types.py new file mode 100644 index 0000000..384e1e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/_types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f864c6d9552a929c7032ace654ee05ef26ca75d21b027b801d77e65907138b74 +size 254 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/py.typed new file mode 100644 index 0000000..17182a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/tomli/py.typed @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0f8f2675695a10a5156fb7bd66bafbaae6a13e8d315990af862c792175e6e67 +size 26 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/__init__.py new file mode 100644 index 0000000..aae9b03 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33e3e1b8b30817b83129793bb69a36303edd93a9ea1b569ef065d674d5db31d4 +size 403 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_api.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_api.py new file mode 100644 index 0000000..543cbee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_api.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07d2481e2a730484bca4c3ff279d3ea350c7559b2f2994145d30741d043f50f8 +size 10461 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_macos.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_macos.py new file mode 100644 index 0000000..aeadb9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_macos.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:549db86afcf968419802cfe45af9c68cc26db883f8c497186b8e7d5103900b73 +size 17608 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_openssl.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_openssl.py new file mode 100644 index 0000000..6cc88a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_openssl.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cb519ed919a8a8fa2e5da4a2a328249e4ae7e69fa4fca62f650dc167bd2caad +size 2324 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py new file mode 100644 index 0000000..379ab4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_ssl_constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3540f87d529d483d36ae2efe75bd2d9ced15a8b3fd687bb3992b5c5bbb40974f +size 1130 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_windows.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_windows.py new file mode 100644 index 0000000..3714e21 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/_windows.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a574d5621cd1de639af77e2068cff245183dfb6ad5c1f52e72691a0f2841800 +size 17891 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/truststore/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/typing_extensions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/typing_extensions.py new file mode 100644 index 0000000..53adad2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/typing_extensions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b776c603cbdf72ff1a9696af0ebf9421e69e85a7c4f205a4049b2a4e664e58bf +size 122341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/__init__.py new file mode 100644 index 0000000..2d5a35b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8972dc6222724a7d0635b58e3990c30298012f52603f8e0467c8b5efad12f0c7 +size 3333 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_collections.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_collections.py new file mode 100644 index 0000000..be5469e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_collections.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a72012249856ef074ea6a263f50240f05c8645fafc13cb94521a94be1174ef6f +size 11372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_version.py new file mode 100644 index 0000000..48a9970 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/_version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72e26f9d2ad6c57198810dfe651a0f330f3ea9a379b69c3bd639c7d6dd7a74b0 +size 64 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connection.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connection.py new file mode 100644 index 0000000..c3d1eaa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connection.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7693db5dff2e0f1224c88cdb9f0946b5373301dc9df0d0b11dca89188179d6f +size 20300 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py new file mode 100644 index 0000000..74e3c72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/connectionpool.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05eeaaeb9491f656a88a483e87f8e673fa7c396b449b082afce9bf5ed8a0fb63 +size 40285 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py new file mode 100644 index 0000000..44fb116 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c36f2384856d8228b25c42a00a032ac41cdf9a925b321c52aaeaf17c645b269 +size 957 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py new file mode 100644 index 0000000..5c7108f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1793ae2a2243c1b74f40e6af9120552e0e135cf665e29556a99bb5a7627cd1c +size 17632 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py new file mode 100644 index 0000000..d28abbd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:076241076fcd44fd36c4ae8309ad4f6bd22ec6b3f0c730f365b8b14246fb53d3 +size 13922 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py new file mode 100644 index 0000000..513b6da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/appengine.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:551ebc780544d77ee5c53823043c029dae5488165338a6b4d408fffb905a0b3e +size 11036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py new file mode 100644 index 0000000..368e6ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3657e45bb58c756f338aab9da298c7a16dbdf688350535a2d0878889baae1709 +size 4528 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py new file mode 100644 index 0000000..44bbf9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:843261e0c87263fa7ea0a9457187106954110efe86326046b96f728f1c9e7a33 +size 17081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py new file mode 100644 index 0000000..78cbe93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/securetransport.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e7f5208514147aa97afcd78833db20690329c858d8554a79578b191d50ab78 +size 34446 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py new file mode 100644 index 0000000..a3f4e66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/contrib/socks.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6918bd7965e8f5911bf795d4c5e7f8676d421659e78db122028f473ac7a832de +size 7097 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/exceptions.py new file mode 100644 index 0000000..b12dd41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0c9e7a372874cd7d745f63beb7f0db9f38f9146fa9973a6f8baa3fb8c76c3c0 +size 8217 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/fields.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/fields.py new file mode 100644 index 0000000..0ca81fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/fields.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92f2c30a0fc9987d652e3514118fc52d2f14858ee106f0cfb951136d8f2676b3 +size 8579 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/filepost.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/filepost.py new file mode 100644 index 0000000..8a9be7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/filepost.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5bfeaaa04475652fbb8bb5d018073061f861e653901f255b7fd8dd174b73de6 +size 2440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py new file mode 100644 index 0000000..a640e6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dbcedde2d1a80f54fd3b8eaaa08e16988cc9ae022fd6e44d04cb0662bd53bc1 +size 1417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py new file mode 100644 index 0000000..2e77e15 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5109a97938084d491c9bd03847a7edfc02d2250ac44ff01c45dcd5feeaba880 +size 5343 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/six.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/six.py new file mode 100644 index 0000000..bf0a329 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/packages/six.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd2ccd30057bfb13b4ab6c28c09b8c3037e86b1fe88dc6fd7c2e058d30c28fa +size 34665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py new file mode 100644 index 0000000..4d5ae00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/poolmanager.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:696ca15d1b4d3b82549c249556a29329077c1174ef526d5537da60b366dc38da +size 19990 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/request.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/request.py new file mode 100644 index 0000000..ea7c0c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/request.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61358536bed023087b1355bd75d7bd2ccefbbf65564c9e55efc5ee4d3c3b0f50 +size 6691 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/response.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/response.py new file mode 100644 index 0000000..507c1d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/response.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e60c9005906ef5b854e7fac5524e1d88c345a6717418aa46d18e286fc018d4f +size 30641 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py new file mode 100644 index 0000000..f7033d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2449929a6aaa2f26b0f0fe75814226661f06c20f62d7349ef83a2a022b67da77 +size 1155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/connection.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/connection.py new file mode 100644 index 0000000..149ce89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/connection.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4bc760753d6dbd2b1067d93d3190dd420604416b780654904aa10a11a201159 +size 4901 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py new file mode 100644 index 0000000..32a552d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/proxy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd4bcf3c226ba7a74e17437818055b39c97aa3ee2e5ca4ab1a24e492be6f512e +size 1605 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/queue.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/queue.py new file mode 100644 index 0000000..fa08ddd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/queue.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1817f3f797fbf564bf1a17d3de905a8cfc3ecd101d4004c482c263fecf9dc3 +size 498 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/request.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/request.py new file mode 100644 index 0000000..32dcf71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/request.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b4394b76b5c53a2d189027b61834ff46bcfad2be5ef388805e910fb99e50599 +size 3997 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/response.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/response.py new file mode 100644 index 0000000..068d1f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/response.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:189a60dc4822f6a6895d1c01879c2ff8c36e4566a7e4122ee34a117a8c563f6f +size 3510 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/retry.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/retry.py new file mode 100644 index 0000000..8dfe612 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/retry.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a5847f9d7c7933973f98ebe50490f60a892340d562ddd7b3710a9d86939aeb +size 22013 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py new file mode 100644 index 0000000..31d9d14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f8f80a96f756983e13f1ebec5b7faeb21c540a6eaa9f0bfe59b785a42d7d477 +size 17177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py new file mode 100644 index 0000000..65a1a87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22be1c65512398093c8140081d64a2ef0b4e3bcdd4098001636c450f5425fd60 +size 5758 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py new file mode 100644 index 0000000..4900bc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/ssltransport.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340faee6b313ac3143142f10cd129410a306d39eb584e0f8a814ebdd9e29bfa1 +size 6895 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py new file mode 100644 index 0000000..7db1763 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/timeout.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:730ab874c93cee624748192d2b59a2609fbce46fb74f74664f6d2fed2142a67a +size 10168 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/url.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/url.py new file mode 100644 index 0000000..cb64cdf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/url.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942004ecce66c80f040dd5b4b09bb2c9985507d2bf8f7f258d684702715a5a81 +size 14296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/wait.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/wait.py new file mode 100644 index 0000000..3129acb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/urllib3/util/wait.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ce5f4fdf6a8cc6d8fee25688d0a04d666f277078dc93726fa15c47c5ad3b4b2 +size 5403 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/vendor.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/vendor.txt new file mode 100644 index 0000000..ba9e3bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/vendor.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a26149221d1537e6779d2fb63f1627c3b83155bc292d16b4782d0ce842997b9 +size 346 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/__init__.py new file mode 100644 index 0000000..60f3ed9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8e04922e3f2ff8072607e96fdb360245faa610d83a14f9d2ac0eee724560978 +size 10579 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/labels.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/labels.py new file mode 100644 index 0000000..facd92f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/labels.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e003bf2b14dd76a1adacbf67b3b9003e36f409c37ac6c088c5b2b7ec763daf71 +size 8979 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/mklabels.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/mklabels.py new file mode 100644 index 0000000..cedd825 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/mklabels.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19821ecb09e968b9cfd064a273c2c55a0774515bcefe5d4d73a62817ef3b47fe +size 1305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/tests.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/tests.py new file mode 100644 index 0000000..98e8e11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/tests.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ad18bca384d6357ef916d46bcb27f155f59a2a0bd027ca3afbab79314dbccdb +size 6563 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py new file mode 100644 index 0000000..ecb8a6e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/_vendor/webencodings/x_user_defined.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8ea9649d9a9cad19f52087f67a258803361a1cf81007cb279e4f5e45af8dad3 +size 4307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/py.typed new file mode 100644 index 0000000..1d77955 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pip/py.typed @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10156fbcf4539ff788a73e5ee50ced48276b317ed0c1ded53fddd14a82256762 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/__init__.py new file mode 100644 index 0000000..28c49e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed69ccfe08f451bb8c374927be4b9d68f788f888566e3b21231f097b03a20de3 +size 108932 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/backports/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/backports/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/backports/tarfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/backports/tarfile.py new file mode 100644 index 0000000..5aba256 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/backports/tarfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20edd85ff658aa7d7754e8bedd02ccd259e4b67d74d94e1df7052b1dcdb7d0b6 +size 106920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py new file mode 100644 index 0000000..875fb3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af3e6d7690b818a939bea5bce6eb46cebae9ae993f08a41356169d2e332af31 +size 506 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py new file mode 100644 index 0000000..8c8d26c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a39d6d3f686956da213f7de0498c809063692df60306ac7162c69dca24598b51 +size 4504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_common.py new file mode 100644 index 0000000..a1fe780 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d20b8c5f2dd70c35bb5b587b69cdb16435ad16ee4bdffff9ec627d780bf0045 +size 5457 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py new file mode 100644 index 0000000..6fcd707 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc1d35b2002fcc20abb1599bb0d33bd3ab9aa6500d2db6bbcaf78d4ecc3294f +size 2925 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py new file mode 100644 index 0000000..8ac5f5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582749d46b3f90d170284372206ed33b4638df82160aed338d5552b126d9c14f +size 884 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py new file mode 100644 index 0000000..35cbf6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1329d662c712d603ec70b40670e07729a899a3e17a6bc7566472dcb48134596 +size 3481 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/abc.py new file mode 100644 index 0000000..7db9315 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21caf6209d90b47eefbc007dbc2e56449f4a068683c896bb294b3c31cb913b3a +size 5140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/readers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/readers.py new file mode 100644 index 0000000..b328bfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/readers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9b22e6a69caf6427dca1f0e2ac371a6d4cceb05b94f1e84dd8ea8c7ec4296c +size 3581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/simple.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/simple.py new file mode 100644 index 0000000..d0700be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/importlib_resources/simple.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3fff64d0053428aa46a362634fb751f11117117804fa6e854a240df6f29af4e +size 2576 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/context.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/context.py new file mode 100644 index 0000000..de734e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/context.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91270772d928845cb09211be0614173e8e9d447d168f5d85c716ad0dcfdae526 +size 9573 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.py new file mode 100644 index 0000000..8721d8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c17e67d5b02d64615f0295daaf33d1a9501c368395cc6560f522cac8af326190 +size 16705 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.pyi new file mode 100644 index 0000000..a4ad344 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/__init__.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37894b6dd84cb6b9b088add4b8c1a162c88e2cb671ebd09434e76614f49587a4 +size 3982 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/functools/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py new file mode 100644 index 0000000..5372c68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/jaraco/text/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70de796c571c796e304c71b9aeebf922e10345aacffb8841617f3397de3f737d +size 15526 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.py new file mode 100644 index 0000000..5bdda55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:568760172449be99c76c0320b1e61188feebf76f0514e01a92642b97a27cf28b +size 149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.pyi new file mode 100644 index 0000000..06411be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/__init__.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e41dde4f338dd4106e38ba1bd6f09f97211bda549deaeb17410f82bfe85791e0 +size 43 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.py new file mode 100644 index 0000000..e96706e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6788f295415b8669f881264d154d8fd01823cc3ffab8e715f1d7c4998dc96736 +size 143053 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.pyi new file mode 100644 index 0000000..e7d8006 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/more.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2931d87aaaf4ac56e7d465919efd2363ae0944d9ca293d24037926b1a87c0d84 +size 21044 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.py new file mode 100644 index 0000000..3f5b94b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45bdce8732530a7d9b8aeb4311448899bb98fbc3434b59641edd0ccbeb8239fe +size 27548 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.pyi new file mode 100644 index 0000000..7ec9608 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/more_itertools/recipes.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f522e1155c2ab0d8d78924d5b4dfa32d5a2f0155f47c225a5fedc066be105a4 +size 4436 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py new file mode 100644 index 0000000..d3cb9a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:533a2d715d3ba7cbdc27377cd12f96d2cae1818f0d3150ff5ef25c67b24dfad0 +size 496 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_elffile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_elffile.py new file mode 100644 index 0000000..13d13e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_elffile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85b98af0e0fa67b7d8ea1c229c7114703d5bcbb73390688d62eed28671449369 +size 3266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_manylinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_manylinux.py new file mode 100644 index 0000000..7b885b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_manylinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6783f4eac87e3d858eacdd6ff3547ca82486a881b26a6c81758c9d1f01e85ce +size 9590 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_musllinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_musllinux.py new file mode 100644 index 0000000..8b5c5a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_musllinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92098118b1726e9cbceb4f7e293bf39addb30a108f598be1a790563f8257edd1 +size 2676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_parser.py new file mode 100644 index 0000000..fde9d25 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce5b050751693118e451d41be962eaef138de76aee41a77116962c0d75a12dbe +size 10347 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py new file mode 100644 index 0000000..5a59a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab77953666d62461bf4b40e2b7f4b7028f2a42acffe4f6135c500a0597b9cabe +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py new file mode 100644 index 0000000..018e380 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/_tokenizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a50ad6f05e138502614667a050fb0093485a11009db3fb2b087fbfff31327f9 +size 5292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py new file mode 100644 index 0000000..f1b512d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787fadc52db3ab51dd3694ddf4b71951c548c1ec0088d53482b9aae708ca9ce9 +size 8208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/metadata.py new file mode 100644 index 0000000..0236cdc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3b8cf120ea60dfd454d9327efd685c45ba4e122adca7509b71af62274f1955e +size 33036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py new file mode 100644 index 0000000..47c7c1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:760a01795a6b3eed9813a43c9c67f038f4e30131db45afd918bc978451259fa4 +size 2933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py new file mode 100644 index 0000000..edd9836 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/specifiers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741d83c1b9af49b12e562944ca2210dfcd987d6e497f0cd74df4513d5b5a10d6 +size 39784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py new file mode 100644 index 0000000..3dce55b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de7475e2387901c4d6535e8b57bfcb973e630553d69ef93281ba38181e281c0 +size 18950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py new file mode 100644 index 0000000..7d7300d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e07663f7cb1f7ec101058ceecebcc8fd46311fe49951e4714547af6fed243d1 +size 5268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/version.py new file mode 100644 index 0000000..3115ce0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/packaging/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e34412cd2b5ed430380b78ff141e7ab0898dd37528b4df1150511b5e736d750 +size 16236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__init__.py new file mode 100644 index 0000000..09f81c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79d8b62522a92c26a9aa2af4016fc28e91ed8a7444de17fa683939f951e080b9 +size 12806 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__main__.py new file mode 100644 index 0000000..9dfec7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56c0b4b799bee9fd1856bf7a3d592cf771b710317c312358e0aa5432f3da8430 +size 1164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/android.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/android.py new file mode 100644 index 0000000..f3a0d9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/android.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18a8b38724bb11246253aeeef149c124b9b8ea0a1abbdf77ec47215d66cf0659 +size 4068 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/api.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/api.py new file mode 100644 index 0000000..f0a64a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/api.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3172875ce2f77a1ffeb6b4a893e2544e3011ff38e698a177ae34445400633fcb +size 4910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/macos.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/macos.py new file mode 100644 index 0000000..12cf651 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/macos.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb751741ec1b4f4c8c84c764cd15df5c6027b662c81fb42de1af4795ff08e7f6 +size 2655 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/unix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/unix.py new file mode 100644 index 0000000..e65baf0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/unix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe5908d24a2784dfc0d78cc0dad6de171e728943989d11a293d0fc97c26f0a4 +size 6911 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/version.py new file mode 100644 index 0000000..24c774e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9a37e7f0fe1b4880a5155e802e0045602b142eded67da84d9e88a916212ecb0 +size 160 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/windows.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/windows.py new file mode 100644 index 0000000..49f2608 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/platformdirs/windows.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cead72e02340a3425743a36ce1399606619ea0e1efdc24e081fe917d68c4564 +size 6596 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/typing_extensions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/typing_extensions.py new file mode 100644 index 0000000..809588b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/typing_extensions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9a968aae401f3af0733b7a736e803f4e4b961e9ae7f19a5d1a4e06a6e88070 +size 80078 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/zipp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/zipp.py new file mode 100644 index 0000000..699dfd1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/_vendor/zipp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a3ced387fbd23b280ff8c2a0d8ca0b476bac54055660169999f0513be071c72 +size 8425 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/extern/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/extern/__init__.py new file mode 100644 index 0000000..3a5d462 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pkg_resources/extern/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5971fab3f34a4434e529821c15c0b946aecbad61e613bddff2e5b6f1ab12c64 +size 2459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/LICENSE new file mode 100644 index 0000000..547c0ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a97ac230e5f33ef10a5367a850eb01f91f1a0b064e34742c7794d2294557f524 +size 1605 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/METADATA new file mode 100644 index 0000000..bc75d99 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5e3ce33667feab59f4d6a7ce7cede724953f74739beecfdc99d58e1e68c0044 +size 7403 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/RECORD new file mode 100644 index 0000000..97eab42 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01f2eb01eb586e976d895a5756bd927944a9c26276d626c52c3d3559bee6c019 +size 7674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.0.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/LICENSE new file mode 100644 index 0000000..547c0ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a97ac230e5f33ef10a5367a850eb01f91f1a0b064e34742c7794d2294557f524 +size 1605 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/METADATA new file mode 100644 index 0000000..822510b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d45c6ef6deb1c2bd0c680f12d615602c4525817964326aeff362ed8f71c965ea +size 7403 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/RECORD new file mode 100644 index 0000000..89ce351 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e32b9478e022e7fc2fd453f8269cc1e320c4c74409b122e1554e7df6c501903 +size 7674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf-4.3.1.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/__init__.py new file mode 100644 index 0000000..7728d47 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72112f8ff0dbb94f773d61e48e1fab464f406b82e22fe79c8ea4e80990121685 +size 1316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_cmap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_cmap.py new file mode 100644 index 0000000..6f0ff8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_cmap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6e2cb941da94625245b89a8af18b8fb54cc784bfbe9b3533eadbfc0521d82f +size 18138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/__init__.py new file mode 100644 index 0000000..ae9fb0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d79165b34173976357289c8634ee28cd6bde6026ceb4391d162512529c475464 +size 1674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/adobe_glyphs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/adobe_glyphs.py new file mode 100644 index 0000000..7630fb3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/adobe_glyphs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb3194f318513c68c12ec1f349e09661fc6672a4f060e922c4d68682f434535 +size 447237 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/pdfdoc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/pdfdoc.py new file mode 100644 index 0000000..30e4fe8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/pdfdoc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5f4af30562cbf1b9a490d14bbdbd90ca681d16bbce61d6e0a20758bdac07145 +size 4269 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/std.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/std.py new file mode 100644 index 0000000..91460bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/std.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f240cb84a40184a52f6ecb58d67f87278fe92a4a13ce0228f9b08ed0d580fc1 +size 2630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/symbol.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/symbol.py new file mode 100644 index 0000000..0463849 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/symbol.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c86864089615822623cc1ebc149661871fefdf397c842af82e466b8a5dc1809 +size 3734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/zapfding.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/zapfding.py new file mode 100644 index 0000000..977475f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_codecs/zapfding.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d0c63c510bad7a778d711777b15713f55bc9cce10ad97e33b7966b4bc6913fb +size 3742 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/__init__.py new file mode 100644 index 0000000..5e74f35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ba70e43541871ad74215fd80e8d5113a3f30acfabc4bf6934698ffff9d11a41 +size 3054 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_base.py new file mode 100644 index 0000000..e1df514 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdfe77323eaf8af84464c438bcdc4de46d083a0158fa7e7f95e91ed1cfea88d5 +size 1711 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_cryptography.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_cryptography.py new file mode 100644 index 0000000..b07ade8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_cryptography.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd3dd699b3f37acbe01d190670a02576a276e0c6370706558956d2739e59c61c +size 4557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_fallback.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_fallback.py new file mode 100644 index 0000000..3348eb6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_fallback.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d50d042bab7f3d55b681a8e1f15dfa320a4f5b2d8805aeb0ca569357cd3771f +size 3345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_pycryptodome.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_pycryptodome.py new file mode 100644 index 0000000..d24aa32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_crypt_providers/_pycryptodome.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53569067d89806b668fa12828c952118e3e1c04153a228ada30437d7a4cdaeb0 +size 3381 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_doc_common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_doc_common.py new file mode 100644 index 0000000..0561ae5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_doc_common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb868d433c98d14a565ac6c03803c235b90e6c26321427ddbfa9f64822e7f2d6 +size 49183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_encryption.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_encryption.py new file mode 100644 index 0000000..43e3deb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_encryption.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f107998b72e2069cf1e98d36435c31b9261f53dc8f7db0da8cf1d19edab37f4f +size 48914 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_merger.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_merger.py new file mode 100644 index 0000000..dd346ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_merger.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f32f74962821472fc313a4184b5a6b54c83360d689272ed5f2f70a1045012daa +size 24468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page.py new file mode 100644 index 0000000..3e2df77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb4d054e81a8b7cedf55f06dd8921146cd53b943c434b75317eb02db1628a123 +size 94354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page_labels.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page_labels.py new file mode 100644 index 0000000..b62756e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_page_labels.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb3ac393f435a0939476422d36fc6d84dfa8f5cbedb602117959e034f2f487bf +size 8451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_protocols.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_protocols.py new file mode 100644 index 0000000..5d25054 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_protocols.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:674cca697be39eb90a9a8fd1aa8da1ac892375dd2d5b01159265c29a1bbbd3ff +size 2260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_reader.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_reader.py new file mode 100644 index 0000000..22538cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_reader.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d84778dc540dbb11158ed6bd544e0c4195467d923946eff0266cfa6f5179f3c +size 46738 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/__init__.py new file mode 100644 index 0000000..c513c0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62649121327856a75695b4d8f5d279ece5937c1d5b52675c409084c9d641f017 +size 10373 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/__init__.py new file mode 100644 index 0000000..1c0ac7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04f5aaaa8d208122907feda8c2c68dfef56fcaab276999692166373756f37a07 +size 338 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_fixed_width_page.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_fixed_width_page.py new file mode 100644 index 0000000..7e69212 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_fixed_width_page.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b40abe4281d8c6476ec9e04ac06a1db179e2abab5ed568f650f4be296ea9a67 +size 14782 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font.py new file mode 100644 index 0000000..f34a58c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08c54eb4773d025d74ceab2bdcbd77aa65f66a72a9f329c82f260a3ee5673aad +size 5099 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font_widths.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font_widths.py new file mode 100644 index 0000000..209d7b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_font_widths.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f843569c582fe288b8732a3c9fa05f3f145cfbc254652ed5c4d55b3a21fb1ba +size 4264 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_manager.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_manager.py new file mode 100644 index 0000000..23a14b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_manager.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ef6224f5e000f5167ecdf9c6452c111678bfebc57b0921b5cb65fada08d1b9d +size 8012 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_params.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_params.py new file mode 100644 index 0000000..c1e29ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_text_extraction/_layout_mode/_text_state_params.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a56029f53f75ca03250afc93fcaa41aa1746a163c9a77b202f49a16e12d057 +size 5316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_utils.py new file mode 100644 index 0000000..ec75423 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6c9678f66818fa064381f8ba5816a12ef41a9cb7132db500e3ae4a65a89fe40 +size 22393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_version.py new file mode 100644 index 0000000..dd948b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a869d38f0c74ffb7709fde57e3f56321de9c5d8abccdabf26f4cd6f2cc0750 +size 22 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_writer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_writer.py new file mode 100644 index 0000000..a1f4d5d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_writer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2322befcbbb13c27dbe29bc7a1522820be6a44c3a2c91c2e4104fd64c6039d0 +size 117452 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_xobj_image_helpers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_xobj_image_helpers.py new file mode 100644 index 0000000..c0ec702 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/_xobj_image_helpers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a5045487f61d9bfe32ff5c48dbbb8d5f37d77fb1a607bd023b88701209cfae +size 11474 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/__init__.py new file mode 100644 index 0000000..947ea77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fd4fa4a47c5cc0e9a5d64e6f4c39f3a64a2575269b713507491ce37cbb8283f +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_base.py new file mode 100644 index 0000000..2ea8327 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b1754b1b36b843d5b1c2268592282b2980d19eeb568ad95ce7f6395a12adf37 +size 910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_markup_annotations.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_markup_annotations.py new file mode 100644 index 0000000..1bea01d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_markup_annotations.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277ed6e6c4d4474c1a8a8429ad2b48295c2a3af689141dcefef61a9115349a7c +size 9842 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_non_markup_annotations.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_non_markup_annotations.py new file mode 100644 index 0000000..c472508 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/annotations/_non_markup_annotations.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d0925d9d5d5ecef8718ae10310b9bae52d416cb07c3a1508698b4e9408995e0 +size 3710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/constants.py new file mode 100644 index 0000000..86970bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56ed792783e144d86d1fa44c25729b0a9f41e37daf298f548b4a580d45f40f27 +size 22624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/errors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/errors.py new file mode 100644 index 0000000..e84026e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/errors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b6fdfa8f6899de351e10e68f042de9bbeea5b4d31771f5db4f739456c061892 +size 1632 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/filters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/filters.py new file mode 100644 index 0000000..42244b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/filters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aef0832a80ce106767974baeedfab9c668c892fa7e7747aa7a567490d66d3e2 +size 31451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/__init__.py new file mode 100644 index 0000000..6a81b53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:024ff80918c39abab34445f2a22e33f7ce54db8fcc4785181f4c1b1af078cd2e +size 15256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_base.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_base.py new file mode 100644 index 0000000..0c3bfb2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_base.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a8e869a3a7e3e8f12125cda671785f7f3654bcd9ac89fad3323eb80ba0e81f5 +size 25892 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_data_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_data_structures.py new file mode 100644 index 0000000..a59075f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_data_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f7605722e52ffe2dbcb6c0376e3dbb7f1ffaae2b0a0b5f918cb6f04fe239bff +size 58868 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_fit.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_fit.py new file mode 100644 index 0000000..eda71fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_fit.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ce350cd5a848aaac9c42b640b475e577b8e6b96564cca4045fd142393844a6 +size 5422 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_image_inline.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_image_inline.py new file mode 100644 index 0000000..dcb2199 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_image_inline.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cfed2ef6bdbcae35446b55db43e579b7eb7f49f337a36c91195cacc91de171 +size 8514 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_outline.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_outline.py new file mode 100644 index 0000000..87c4cd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_outline.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc36c3d978368efecd594482f02853c46a87c0861c9f0c6392d3a726e18c519 +size 1090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_rectangle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_rectangle.py new file mode 100644 index 0000000..684879c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_rectangle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed971359f037a5c8de2dc579c890207c9d28350f9bab5cee6aa8ae20f7759a8a +size 3808 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_utils.py new file mode 100644 index 0000000..d49aa80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c97db2255a96f6f4fbe34a94f806d3ff1e26f22e0f1d27a0166e495c421394c4 +size 6469 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_viewerpref.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_viewerpref.py new file mode 100644 index 0000000..de8bc3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/generic/_viewerpref.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97f5701a41e4c18454f736a910633d7a7fa1c27c2c556ce6fb9edc28034ff7a5 +size 6642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/pagerange.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/pagerange.py new file mode 100644 index 0000000..42f57e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/pagerange.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1247c70cd36c17a774498548e5fb6add08db12a0755250161e0ca1e9c62328a8 +size 6881 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/papersizes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/papersizes.py new file mode 100644 index 0000000..3ddb620 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/papersizes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2770e8595db0445e28d3e794feba5415acf5c5a4a0675e48fcb6637e1ce8a2ce +size 1366 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/types.py new file mode 100644 index 0000000..9461bed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef38e5af7e7d8a79bce4f75f3fac2abc0e9443909d8ec137fcd4aa05b426e2bd +size 2121 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/xmp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/xmp.py new file mode 100644 index 0000000..07dd3cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pypdf/xmp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5d9af025a15b4c01bbba3e1e29f29b1bcb1cccb873d25e381d0ec331481da90 +size 14244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/METADATA new file mode 100644 index 0000000..53a9362 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:185b629001d11bb2231a05addb79f3ea8ae299b765318fcae4ce53ab5152bbda +size 1288 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/RECORD new file mode 100644 index 0000000..97ea113 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7ec17c2a01e0c442fbc087c8fd7f3a6ccccc55e98aef232c58bfa85334d8010 +size 1020 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks-1.1.0.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/__init__.py new file mode 100644 index 0000000..cb6d153 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:953661dc4954058abdb038abd638cff1ec4d4fb1b10f4287c93b1b3fbf82e2ea +size 691 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_impl.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_impl.py new file mode 100644 index 0000000..0b9c15e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_impl.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d8fab6b19e6c91c81e7baee022b6b25153311ec6e021193a6033282ac7aed9e +size 14936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/__init__.py new file mode 100644 index 0000000..ff91949 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30934fa5f23170ef85821c6905bc641b5ac58907fa1ce51b5785399aad07167b +size 557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/_in_process.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/_in_process.py new file mode 100644 index 0000000..eb434a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/_in_process/_in_process.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ff293c22a67b25b39756b49af5266da1d7cbb95390ff395b9b2aab44bb650d4 +size 11603 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/pyproject_hooks/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/LICENSE new file mode 100644 index 0000000..e9a7658 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86da0f01aeae46348a3c3d465195dc1ceccde79f79e87769a64b8da04b2a4741 +size 1023 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/METADATA new file mode 100644 index 0000000..3da6ef6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd1e1121e3fe31f74445b21f8c56ca37c259c8a2e215fae8910870f2f102cc66 +size 6176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/RECORD new file mode 100644 index 0000000..de2b1f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b38ec3932fc218aca6dbf2ef34eeef133ac087e6a17e6a54705ddec3eae15d0d +size 40808 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/WHEEL new file mode 100644 index 0000000..523d741 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:189eedfe4581172c1b6a02b97a8f48a14c0b5baa3239e4ca990fbd8871553714 +size 92 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/entry_points.txt new file mode 100644 index 0000000..bc270d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15ef94664ce02d351940e1fde216cb4f23f81f13359f194cb8467fad2eb33671 +size 2676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/top_level.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/top_level.txt new file mode 100644 index 0000000..66bf87c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools-69.5.1.dist-info/top_level.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77dc8bdfdbff5bbaa62830d21fab13e1b1348ff2ecd4cdcfd7ad4e1a076c9b88 +size 41 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/__init__.py new file mode 100644 index 0000000..c0cfc8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f99f028791ce2c9619cdc28fd1dc7a2ca3daf38516bf906ff7ee52e350e88627 +size 9545 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_core_metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_core_metadata.py new file mode 100644 index 0000000..d262150 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_core_metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7104f56d0489b0dfbe5789eb5a0c0e935b2dacf1baf8511475beb0db5c3a291 +size 9206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/__init__.py new file mode 100644 index 0000000..c010217 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4662e856c0b1b4ec9d10e3d0559c48cfcbac320dc77abde24c0c95fb9639723 +size 359 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_collections.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_collections.py new file mode 100644 index 0000000..31b157e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_collections.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b2ce3e34e50695072bb5ab92aa354eb8dea39b09f8e3512a9588cdf5334b42 +size 5440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_functools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_functools.py new file mode 100644 index 0000000..8003c1f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_functools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f485bdd75cd97353428d985d6850eeab3297808b5db0c43e6d4896625dddd97 +size 1771 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_itertools.py new file mode 100644 index 0000000..b149ae7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76105422dae92531705de0be45d7e453f60ff095d1a1497a565b91576a29f246 +size 1453 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_log.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_log.py new file mode 100644 index 0000000..49c2459 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_log.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8be94d4d37174bc4e65884c9e833831afb56e73e6d31ab6d250efa87cad9c505 +size 42 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_macos_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_macos_compat.py new file mode 100644 index 0000000..d61e283 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_macos_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:273506845e04e722084c76d468fa1b6445a318776badc355eb7cfce92e118c17 +size 239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_modified.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_modified.py new file mode 100644 index 0000000..4be904a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_modified.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8da10681c63b6e4aa4de8940e5c0c8f4ed7abac040cfcd1d6a3379a14764700a +size 2411 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_msvccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_msvccompiler.py new file mode 100644 index 0000000..1c605f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/_msvccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99b8fe227a443940fd4774d3f0e3dc37eb35f6755ced2c4da1eabc734729c5f6 +size 19613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/archive_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/archive_util.py new file mode 100644 index 0000000..4d0ca15 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/archive_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84dc1e117d32470481bcaa3527228e7ea3f2404368ea8f7c847f7d8de5c66cac +size 8572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/bcppcompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/bcppcompiler.py new file mode 100644 index 0000000..1dc3ad4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/bcppcompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72230d1546ef72894553b0f9782d45847819e06e3ef5b859677a03e9b84066ae +size 14662 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/ccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/ccompiler.py new file mode 100644 index 0000000..20087e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/ccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9186fcc3d663a93a60b174047e8442f6d599161f03d18c244281921d89146e8e +size 48645 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cmd.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cmd.py new file mode 100644 index 0000000..270dc42 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cmd.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e33faad4207151e137712b1d4f4aaf222aa645bc8ad950dabd68a8f7a9fc5b78 +size 17801 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/__init__.py new file mode 100644 index 0000000..108bf1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d5529b380c986f4a1300a1dd32ef1974da6e3a6ddeebdf58ab1213687cfaebb +size 430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py new file mode 100644 index 0000000..4c2c2eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/_framework_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2265d4896331915820afcd10ca13e474fbfc9a018bc531dd729576f67985ee8 +size 1609 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist.py new file mode 100644 index 0000000..d176f9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5127472bcc6eab7f34feae1504e8011147fdb1e6e9210ab510269c1a941280e +size 5353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py new file mode 100644 index 0000000..aee5709 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_dumb.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0941ea4885e64498c6adff98707b4621a9fbcaa9a3a036a4166c30ef82f5bd8c +size 4596 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py new file mode 100644 index 0000000..99104a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/bdist_rpm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5736605a4a52cfd226bb879e42fbd95a0b0b4abafc87b6ab463c9911980ee80c +size 21717 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build.py new file mode 100644 index 0000000..36f2fb2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad5cc9c1071d6e813de49c02d74f7c47d641efc44f83926a76a248f19d6a6e1 +size 5575 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_clib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_clib.py new file mode 100644 index 0000000..67b5326 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_clib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:298f780afe9da56c8e8d72ead70888a621a090cfc96a36d09659bfbe82f484db +size 7686 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_ext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_ext.py new file mode 100644 index 0000000..63e7a97 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_ext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b376f70ecb09cf54a71266c058fa540660618362b7906cbd5b37a91a4443e3 +size 31793 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_py.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_py.py new file mode 100644 index 0000000..1cd5d93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_py.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c8d9f4853658504a2d2730a89308961617a5442b1f1a4ef88fdefcf38a90c99 +size 16539 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_scripts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_scripts.py new file mode 100644 index 0000000..47b4c23 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/build_scripts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:098bc7df49cf62cd21154201b125e2e33b16e59699c5955a5a8749763cd6243a +size 5536 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/check.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/check.py new file mode 100644 index 0000000..ba9b989 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/check.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79ea2aeb45e139f97b1fc7f2d1aab41fa4c2c99bcbf898675ed5c09ec6124204 +size 4912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/clean.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/clean.py new file mode 100644 index 0000000..b721cd7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/clean.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44575f130365259f92c3f50f3d8adcc6a6b45885fd347404f29bde4b805c4bc0 +size 2595 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/config.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/config.py new file mode 100644 index 0000000..81c6e55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/config.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:061924e0a803f791d5eef88b0cf42a245ea460215b3257bedaa6414d35a53ead +size 13007 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install.py new file mode 100644 index 0000000..9e426c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15443364bffd763f06bae8c0e25df88d98901e77b0fa9ec1b5f7ba15373a3a13 +size 30128 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_data.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_data.py new file mode 100644 index 0000000..77ee5da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_data.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:825da1ddc3f0378877f3c04a0dacd3b4db7427c28ff525db6e007730d54b2d78 +size 2757 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py new file mode 100644 index 0000000..ece371f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_egg_info.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b2d9fb81aaf08695056125c52d7866dd1b4282c7604137b8c0cd610c03dae9f +size 2788 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_headers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_headers.py new file mode 100644 index 0000000..2ccf819 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_headers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfe41c5648da597e727f4c5aba9f7f2b249a9d596677a2e1bb31211a99938935 +size 1180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_lib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_lib.py new file mode 100644 index 0000000..477efc1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_lib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7fe942f37294d85cd10caca7b6e61ef8b4a96c68c7bb7b1bb65021cbe6d9689 +size 8408 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_scripts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_scripts.py new file mode 100644 index 0000000..389bc26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/install_scripts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84260a2761b37ee64aed1812343715239ddcd68e14eeb1c314307de8def56741 +size 1933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/register.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/register.py new file mode 100644 index 0000000..5dd6ae2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/register.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1886de75a3c4b9525ab1a27a2cede2f4f275b648d00162859f6d28f49ce76b34 +size 11805 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/sdist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/sdist.py new file mode 100644 index 0000000..db2d8a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/sdist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc3c16e70f5ebf8ce72b46b238a606cac4b31d62e12f3ebf8da54a59dcc71847 +size 19188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/upload.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/upload.py new file mode 100644 index 0000000..6754490 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/command/upload.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb9ce1bc7eb61bb43731d3b9217b4c5ad14d2cd49855e9e0921fcb3431a20678 +size 7497 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/__init__.py new file mode 100644 index 0000000..6fefb40 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dd2f38cefc291fcc11703895fd5c87d76c191e60accc8950017794f874b64e5 +size 417 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/py38.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/py38.py new file mode 100644 index 0000000..225a24e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/compat/py38.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da181ef7f1772e2bd6e11e29b45aac1b9b1be96aec41cf55df4970316bfcea18 +size 567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/config.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/config.py new file mode 100644 index 0000000..8381506 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/config.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70274bec101abdd87fdad0d6d04669d6ba35bd37968456732d73753fa1c097a5 +size 5226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/core.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/core.py new file mode 100644 index 0000000..3385749 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/core.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58f66badfda66ccf553e0e28fe38c044f5602f340d61dfdab4c4df36bd8fd6f2 +size 9372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py new file mode 100644 index 0000000..383da9c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/cygwinccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4813feddc00c5e99604e862675e621eab88adc9320ad93cd6bd76a3aa282899d +size 11945 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/debug.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/debug.py new file mode 100644 index 0000000..c55498f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/debug.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37a32b4c0a8aea5f52564ead5b0791d74f0f33c3a5eea3657f257e9c770b86c6 +size 139 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dep_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dep_util.py new file mode 100644 index 0000000..8380a35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dep_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4def9a7a6691e13221c473eae92f65e29494329c79c336269f1ed79a678b635 +size 349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dir_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dir_util.py new file mode 100644 index 0000000..1c6e30d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dir_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68ef7930b0eadbf070ecf221781f887a8605db173dc9fa3e08c9498363a5c106 +size 7965 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dist.py new file mode 100644 index 0000000..bec726e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/dist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44649f18c283ac82c6c2eca50dbc7b30bafe736f7c233c8224acf03b6cb5b4f6 +size 50116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/errors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/errors.py new file mode 100644 index 0000000..b5c1e44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/errors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66d0709e10e9400d9bc486b33d7343436e6e371338a76a26b1a491369577ae91 +size 3589 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/extension.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/extension.py new file mode 100644 index 0000000..a36efd3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/extension.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab083508d2603761aaedb1457d0cf62696fc2df2fe11cd854e58bc439aa1683e +size 10197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/fancy_getopt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/fancy_getopt.py new file mode 100644 index 0000000..1d347ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/fancy_getopt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:571c071edc898bc429f19c0ab89873c52917f71c2a0aaa80c6ae1df156e40166 +size 17831 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/file_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/file_util.py new file mode 100644 index 0000000..a123785 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/file_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc0ffd832901047167d107fc13390961aa98ce641bf3e92a947421b1a9000af9 +size 7926 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/filelist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/filelist.py new file mode 100644 index 0000000..8055a42 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/filelist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0443c6d5f71dd7016f1d6ba088c8c1f9feaa3615fd052451f256988f60558c3 +size 13635 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/log.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/log.py new file mode 100644 index 0000000..0c604cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/log.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57206ce63ef3e3e2ba5d310405385473d1f2329a0f2c6b50a4446a6f3e72970c +size 1200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvc9compiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvc9compiler.py new file mode 100644 index 0000000..7650407 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvc9compiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f985ea4abdbe393ca09ba49c1e6291ac8fe02d995464a128587b2e70d06d78bd +size 30108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvccompiler.py new file mode 100644 index 0000000..5fa7d5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/msvccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b84a7236e3c86fdfb970f10ba3b472ad1176d3756749c10e48cdaac2416f179 +size 23443 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py38compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py38compat.py new file mode 100644 index 0000000..0171e53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py38compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9d2a768146dfed5d2794ac2e049a669c9c3a3a60e58fe89fb6edb0f0d2f24c +size 205 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py39compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py39compat.py new file mode 100644 index 0000000..7e5c128 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/py39compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84eb03ea5c192ea66832769c349dcfea7500f8b250844a55b584f3547d28f7a3 +size 1964 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/spawn.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/spawn.py new file mode 100644 index 0000000..5253c4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/spawn.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4b5306c9b1973056b331efcca764878e15f7864d5e35f9b7fd1a0b0482e474e +size 3431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/sysconfig.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/sysconfig.py new file mode 100644 index 0000000..046e140 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/sysconfig.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03acf4c597e4335659de580e126807ff01e4c8644fa9cad5a7c467d11ea0483 +size 18485 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/text_file.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/text_file.py new file mode 100644 index 0000000..038f7a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/text_file.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:312ccfd649a31593b09eb750b2ac06dd958d6b6c10e0e5caef9277496397d398 +size 12100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/unixccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/unixccompiler.py new file mode 100644 index 0000000..18c5cde --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/unixccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a60996779d229957c4b2126ecbe7cd5aa7115c37edfc2f3f504ad6ebc73f9f62 +size 15572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/util.py new file mode 100644 index 0000000..0b0b0a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f0bec94cda212722f1136cf7fa344735442c6861f447f8f7eee4a5f309fe481 +size 18120 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/version.py new file mode 100644 index 0000000..6dfbfc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5215886e2a3c689b990e34d07780e4cd7f9d9b391ab399437ae0bc454f94285 +size 12648 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/versionpredicate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/versionpredicate.py new file mode 100644 index 0000000..93be6ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/versionpredicate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9bdea574226c33551f887beb3d3ad37a410f87bc350fc217ec8895873c053b5 +size 5205 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/zosccompiler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/zosccompiler.py new file mode 100644 index 0000000..7433d52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_distutils/zosccompiler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98ec93617988c2ae5f13ad5eb5b8fd4260f6baede23c37ed04aa7d73539ab96d +size 6573 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_entry_points.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_entry_points.py new file mode 100644 index 0000000..465ddad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_entry_points.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe52db7c86f30692425dc3b54fcd9d34ba28de03d76885408c4dc0db6de4245 +size 2235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_imp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_imp.py new file mode 100644 index 0000000..b7a4f6b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_imp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d58d601f434ea695789dbaf57a2743e62190f1454f7e25598baad3aab7c2d3a7 +size 2433 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_importlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_importlib.py new file mode 100644 index 0000000..8199529 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_importlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6569586c61e36fe4304691f7490f6ebb19ff5fe1768a1710092e47b53fd6f659 +size 1468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_itertools.py new file mode 100644 index 0000000..88a7868 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a590205cdcfab513d41671c068a27dd310200f480b3de99c135dfde99833ef7a +size 675 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_normalization.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_normalization.py new file mode 100644 index 0000000..7bd13e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_normalization.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4719795020f4c3929e8fc5ee1a2a3445c06d0a3a34b886db5f1ccda1ce42c44 +size 4567 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_path.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_path.py new file mode 100644 index 0000000..6f036ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_path.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6db7a1859cd8053c33086eea44624f0488e5fd9365a3f61a5d90aea46f51de6 +size 1178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_reqs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_reqs.py new file mode 100644 index 0000000..8dce2fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_reqs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8548cff0c87a0fa05b2c486515ad3392c74b9cb176b4cc6014fb9048902911de +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/backports/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/backports/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/backports/tarfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/backports/tarfile.py new file mode 100644 index 0000000..5aba256 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/backports/tarfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20edd85ff658aa7d7754e8bedd02ccd259e4b67d74d94e1df7052b1dcdb7d0b6 +size 106920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py new file mode 100644 index 0000000..c31d0d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d012c25bec6b3ff55abd574c47202074105c4d446cb1b9baf8c386459867316 +size 26498 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py new file mode 100644 index 0000000..e04cb3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bc4ba21bd4e4237082c0fa5e2093392d3197b5f1369e50d238f4f2d1a7a3815 +size 2454 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py new file mode 100644 index 0000000..8d7af48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_collections.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:089d0e4c21c88d6034648552e2fa0e440b27d91e11d9c40112d3ec6442690126 +size 743 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py new file mode 100644 index 0000000..d0245fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad76a985cbfca45524e4cfa31d18bda0dd5e64c6f40a1d35b12990a4e50e7d4 +size 1859 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py new file mode 100644 index 0000000..7f4e72c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_functools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ec636fb8aeb297e1155e442d681a9d65075a660bd78a37cf3f7fe6c3f6e3a80 +size 2895 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py new file mode 100644 index 0000000..d4af8f2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72faffdaff0145bc5c225e71e6575fa9d1e3848f188bcb3cca4e741bf9e6ea34 +size 2068 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py new file mode 100644 index 0000000..3a4bce6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_meta.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf97b56431bbc994c7de1ed38db4b96cce69f001b330f54ebbcb240ccbf887a9 +size 1165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_py39compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_py39compat.py new file mode 100644 index 0000000..b7a4b76 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_py39compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d93939b706ff5602c263ed4d100423759a7f4bd385302fa95333f68acb9a3ec4 +size 1098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py new file mode 100644 index 0000000..940d387 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/_text.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c2b0592c66924b7933f734493f9e0ac079755146d4ebb7287d78e001a113f80 +size 2166 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_metadata/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py new file mode 100644 index 0000000..875fb3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7af3e6d7690b818a939bea5bce6eb46cebae9ae993f08a41356169d2e332af31 +size 506 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py new file mode 100644 index 0000000..8c8d26c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_adapters.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a39d6d3f686956da213f7de0498c809063692df60306ac7162c69dca24598b51 +size 4504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py new file mode 100644 index 0000000..a1fe780 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d20b8c5f2dd70c35bb5b587b69cdb16435ad16ee4bdffff9ec627d780bf0045 +size 5457 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_compat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_compat.py new file mode 100644 index 0000000..6fcd707 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_compat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fc1d35b2002fcc20abb1599bb0d33bd3ab9aa6500d2db6bbcaf78d4ecc3294f +size 2925 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py new file mode 100644 index 0000000..8ac5f5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_itertools.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:582749d46b3f90d170284372206ed33b4638df82160aed338d5552b126d9c14f +size 884 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_legacy.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_legacy.py new file mode 100644 index 0000000..35cbf6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/_legacy.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1329d662c712d603ec70b40670e07729a899a3e17a6bc7566472dcb48134596 +size 3481 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py new file mode 100644 index 0000000..7db9315 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/abc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21caf6209d90b47eefbc007dbc2e56449f4a068683c896bb294b3c31cb913b3a +size 5140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py new file mode 100644 index 0000000..b328bfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/readers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9b22e6a69caf6427dca1f0e2ac371a6d4cceb05b94f1e84dd8ea8c7ec4296c +size 3581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py new file mode 100644 index 0000000..d0700be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/importlib_resources/simple.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3fff64d0053428aa46a362634fb751f11117117804fa6e854a240df6f29af4e +size 2576 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/context.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/context.py new file mode 100644 index 0000000..01b8556 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/context.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7127980005104bf98f5000545af93e1511f0d6759c0d812077a4b2b0bc6f1d3c +size 9570 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py new file mode 100644 index 0000000..81e1692 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c504c608cce349e99fee46e8d81c508e4c99cef85b260f6af8ed9b14404c7d +size 16696 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi new file mode 100644 index 0000000..a4ad344 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/__init__.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37894b6dd84cb6b9b088add4b8c1a162c88e2cb671ebd09434e76614f49587a4 +size 3982 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/functools/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py new file mode 100644 index 0000000..5c4dc39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/jaraco/text/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29f14631eaeb90dff4574ae0b49571fbd747b77b56ee2fee272a63c0470bb42d +size 15517 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py new file mode 100644 index 0000000..2a52993 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bbb177df1d35ccdcffa268b3cf7ea7e60e8c4e7e540c24b70cede77da778da9 +size 82 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi new file mode 100644 index 0000000..06411be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/__init__.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e41dde4f338dd4106e38ba1bd6f09f97211bda549deaeb17410f82bfe85791e0 +size 43 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.py new file mode 100644 index 0000000..8b13725 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2b07f9a26c5479d6cab7dd494023f6d67da35db1836726bd6fe92d02696ed00 +size 117959 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi new file mode 100644 index 0000000..ec5b912 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/more.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af7da91f6ada042d738a1ddebcae1fcaf017beb51a989a9ce9d815ed00912ff3 +size 14977 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py new file mode 100644 index 0000000..d604574 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:524364aec672aa2c202c700d0539af3210af68d4af48d621c8ea73fc9739e436 +size 16256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi new file mode 100644 index 0000000..14ece89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/more_itertools/recipes.pyi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f41a5e29de7fa9a9585529ee1dfa8f4827e81a0aa7418d97bbda4dc2b0e51d4f +size 3551 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/ordered_set.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/ordered_set.py new file mode 100644 index 0000000..1e26bd3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/ordered_set.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75b68272cdbb77237d827316185e6703f06b567e90f8dae329826957dfdf801b +size 15130 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/__init__.py new file mode 100644 index 0000000..d3cb9a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:533a2d715d3ba7cbdc27377cd12f96d2cae1818f0d3150ff5ef25c67b24dfad0 +size 496 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py new file mode 100644 index 0000000..13d13e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_elffile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85b98af0e0fa67b7d8ea1c229c7114703d5bcbb73390688d62eed28671449369 +size 3266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py new file mode 100644 index 0000000..7b885b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_manylinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6783f4eac87e3d858eacdd6ff3547ca82486a881b26a6c81758c9d1f01e85ce +size 9590 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py new file mode 100644 index 0000000..8b5c5a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_musllinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92098118b1726e9cbceb4f7e293bf39addb30a108f598be1a790563f8257edd1 +size 2676 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_parser.py new file mode 100644 index 0000000..fde9d25 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce5b050751693118e451d41be962eaef138de76aee41a77116962c0d75a12dbe +size 10347 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_structures.py new file mode 100644 index 0000000..5a59a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab77953666d62461bf4b40e2b7f4b7028f2a42acffe4f6135c500a0597b9cabe +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py new file mode 100644 index 0000000..018e380 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/_tokenizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a50ad6f05e138502614667a050fb0093485a11009db3fb2b087fbfff31327f9 +size 5292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/markers.py new file mode 100644 index 0000000..f1b512d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787fadc52db3ab51dd3694ddf4b71951c548c1ec0088d53482b9aae708ca9ce9 +size 8208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/metadata.py new file mode 100644 index 0000000..0236cdc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3b8cf120ea60dfd454d9327efd685c45ba4e122adca7509b71af62274f1955e +size 33036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/requirements.py new file mode 100644 index 0000000..47c7c1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:760a01795a6b3eed9813a43c9c67f038f4e30131db45afd918bc978451259fa4 +size 2933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py new file mode 100644 index 0000000..edd9836 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/specifiers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741d83c1b9af49b12e562944ca2210dfcd987d6e497f0cd74df4513d5b5a10d6 +size 39784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/tags.py new file mode 100644 index 0000000..3dce55b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de7475e2387901c4d6535e8b57bfcb973e630553d69ef93281ba38181e281c0 +size 18950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/utils.py new file mode 100644 index 0000000..7d7300d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e07663f7cb1f7ec101058ceecebcc8fd46311fe49951e4714547af6fed243d1 +size 5268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/version.py new file mode 100644 index 0000000..3115ce0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/packaging/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e34412cd2b5ed430380b78ff141e7ab0898dd37528b4df1150511b5e736d750 +size 16236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/__init__.py new file mode 100644 index 0000000..4d340d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26153057ae830758381efb7551009531d7c2bbe220015f055e6bc353da27c5de +size 396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_parser.py new file mode 100644 index 0000000..837f153 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83df8435a00b4be07c768918a42bb35056a55a5a20ed3f922183232d9496aed3 +size 22633 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_re.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_re.py new file mode 100644 index 0000000..682d511 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_re.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75b8e0e428594f6dca6bdcfd0c73977ddb52a4fc147dd80c5e78fc34ea25cbec +size 2943 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_types.py new file mode 100644 index 0000000..384e1e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/_types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f864c6d9552a929c7032ace654ee05ef26ca75d21b027b801d77e65907138b74 +size 254 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/py.typed b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/py.typed new file mode 100644 index 0000000..17182a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/tomli/py.typed @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0f8f2675695a10a5156fb7bd66bafbaae6a13e8d315990af862c792175e6e67 +size 26 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/typing_extensions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/typing_extensions.py new file mode 100644 index 0000000..0961d7f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/typing_extensions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6eaa2fd14a523b828b3878907f344577779c10c334d4407777fe3ae46d3a3c4 +size 87149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/zipp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/zipp.py new file mode 100644 index 0000000..699dfd1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/_vendor/zipp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a3ced387fbd23b280ff8c2a0d8ca0b476bac54055660169999f0513be071c72 +size 8425 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/archive_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/archive_util.py new file mode 100644 index 0000000..eeac1ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/archive_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9512bb97b1a4a4b25e36a9c44895947c3adee2ae3047dc7a67c583ddc21a8177 +size 7331 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/build_meta.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/build_meta.py new file mode 100644 index 0000000..8760c4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/build_meta.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74e70349fb39d67ffacce00a42565ae0b9e8375d849a13e2d9c65edf5bc060f +size 18740 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-32.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-32.exe new file mode 100644 index 0000000..46d273c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-32.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32acc1bc543116cbe2cff10cb867772df2f254ff2634c870aef0b46c4b696fdb +size 11776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-64.exe new file mode 100644 index 0000000..6f9d7b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbb3de5707629e6a60a0c238cd477b28f07f0066982fda953fa6fcec39073a4a +size 14336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-arm64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-arm64.exe new file mode 100644 index 0000000..70f9b1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli-arm64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9a7d08da880dfac8bcf548eba4b06fb59b6f09b17d33148a0f6618328926c61 +size 13824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli.exe new file mode 100644 index 0000000..46d273c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/cli.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32acc1bc543116cbe2cff10cb867772df2f254ff2634c870aef0b46c4b696fdb +size 11776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/__init__.py new file mode 100644 index 0000000..bb5400b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9952a69381f15ae8ef77dfbcffb1ace46e32b8781a75643aa26ca45446f0f8 +size 396 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/_requirestxt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/_requirestxt.py new file mode 100644 index 0000000..f5b83fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/_requirestxt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d91b66f70836cbff21a9365ed42fb7f991731bf4ea7342a7f19069e8964c92b +size 4222 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/alias.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/alias.py new file mode 100644 index 0000000..5c46967 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/alias.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d61a25ad2b1d631a7512ca1adb27d11cb8e26250918b78d8672db25a6eb66155 +size 2383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_egg.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_egg.py new file mode 100644 index 0000000..12aeb24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_egg.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fb2870396d63b6edcb24f3983801d0061d4b3057cb5fa447d169d24d981cebb +size 16433 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_rpm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_rpm.py new file mode 100644 index 0000000..fa0e61e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/bdist_rpm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a541cd5754d071bf53bef14443de2493aacce7750d92581a59566ad1d9ac0ed +size 1289 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build.py new file mode 100644 index 0000000..abc3464 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8edf3046cdb84c18ec9ed63d8ceb22e150ae640f7ae990584d2e79c5f80917b +size 6598 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_clib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_clib.py new file mode 100644 index 0000000..f6d8874 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_clib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d006f42a9a738b0e2783fe753837d0c45f07c54e9e6bcf44132042f24587b677 +size 4539 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_ext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_ext.py new file mode 100644 index 0000000..322aca4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_ext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb2c32e640dc09488e04ee8d5f7158597dcc99517532f3bdd1cff8c894d3131d +size 17724 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_py.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_py.py new file mode 100644 index 0000000..d799fda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/build_py.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7e58af11228a2a740e0723d570a656f433bf94374537415617234c0082f03fe +size 15127 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/develop.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/develop.py new file mode 100644 index 0000000..23bb83c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/develop.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d122354998d07dee4fd97a1614fc4051f3f720c01e1c4e3528b22a0c383ab6e +size 6834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/dist_info.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/dist_info.py new file mode 100644 index 0000000..620e872 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/dist_info.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f76e574a3b6cefad93eef5e9862e77ca243752a8bcc875516a803c37ffe2562 +size 3507 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/easy_install.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/easy_install.py new file mode 100644 index 0000000..83d28f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/easy_install.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a876a2a6999bd6eb7d6554f6a8348f56b736007b77c72fc7951b93121def8bdb +size 87138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/editable_wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/editable_wheel.py new file mode 100644 index 0000000..a3dda18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/editable_wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18a3d447a9e4e35be16de4238992b69fe0dbecadd0788824cbc069d707d3a977 +size 34488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/egg_info.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/egg_info.py new file mode 100644 index 0000000..614a8a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/egg_info.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9adc691babf1d75bd5e0f75afdd149e4e1accda696d3d2a46a54ead2fe8c243e +size 26516 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install.py new file mode 100644 index 0000000..8f4aaa6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5749033f4f707805d18043b93f01e943700f74e906deb0ab0003fe32d70032f9 +size 5815 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_egg_info.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_egg_info.py new file mode 100644 index 0000000..ad19b18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_egg_info.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce90c30a6389b297e411e91438def053400114d5bed2e5d4669ce91d16147622 +size 2066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_lib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_lib.py new file mode 100644 index 0000000..599e5eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_lib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:814116d400ab0dc2bf32aeff46217761494a03ef5ef93abd01c42ceca03e8259 +size 3870 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_scripts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_scripts.py new file mode 100644 index 0000000..c8187d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/install_scripts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f6b68a270571d8159727db0919ede365d7973cd7a928b8c88da4db938c8292a +size 2359 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/launcher manifest.xml b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/launcher manifest.xml new file mode 100644 index 0000000..7d98c58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/launcher manifest.xml @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c652db8d6ac1d35b4a0b4fa195590e2a48923dbccc9a5d9e38fb49fee7029db1 +size 628 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/register.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/register.py new file mode 100644 index 0000000..32bb5b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/register.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:924dc3c5709be655d3bea9e17f0c7683aabb8b06d49a04f25d409a068a013949 +size 468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/rotate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/rotate.py new file mode 100644 index 0000000..8908c15 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/rotate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fdab1edd744a37884c6e6a068380cd59dabfb1ed177cec89e05cd90296ed488 +size 2132 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/saveopts.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/saveopts.py new file mode 100644 index 0000000..6b78ab2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/saveopts.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99500f31120613df2097a7974370b65a8faa3ce825f656c7f90fd8b1b2eea9e8 +size 657 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/sdist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/sdist.py new file mode 100644 index 0000000..1bf8a44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/sdist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ea7e362ad3641076b7074c07c6f1554893def134aa3c9906ce31c000eb544c +size 6811 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/setopt.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/setopt.py new file mode 100644 index 0000000..4a928b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/setopt.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:093360564826db257d7356cef707a6f3afccf17e931b2b84b62b548c1cc6c017 +size 4927 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/test.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/test.py new file mode 100644 index 0000000..a29d150 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/test.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ee0c60ac069d888f1088f0d1d0fbbd4ab1e68dea59f5cbe9c8c016cbaf146ed +size 8101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload.py new file mode 100644 index 0000000..7ed278f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d3dd81557d83c0980e6a8468347ae96e53df1fb714545be3f329c38330bc54b +size 462 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload_docs.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload_docs.py new file mode 100644 index 0000000..d4ca477 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/command/upload_docs.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7323a76a0dd1a5d9e912b8cab521c4516e1fbd97e8af7dbe0cabe516334ae3e +size 7821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py310.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py310.py new file mode 100644 index 0000000..611f492 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py310.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:252a1e2c78a83b67f1d4b5466432fc20053fed20e9454df75c19cf5cb4cc7723 +size 165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py311.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py311.py new file mode 100644 index 0000000..f9fb103 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py311.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaa7d12f9eefd8358105076abfec3f4fbd0ac4ad22a3066208b5611127e3dfa6 +size 330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py39.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py39.py new file mode 100644 index 0000000..5453981 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/compat/py39.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04932d9e47dcab24df71caa3610c5fa11b54da74e759a104481564b214e25ea6 +size 493 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/__init__.py new file mode 100644 index 0000000..0c3a389 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a23e72fd0499f53ba31f9ae357ca7f16d8ba7cbbdaa2cd156ac0f88e74f2236 +size 1499 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py new file mode 100644 index 0000000..0594609 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_apply_pyprojecttoml.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:460e080d8adde91ab62ed8bcaf69da86a1fd71837e44cb4a5ffddf3801161cea +size 14791 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py new file mode 100644 index 0000000..c8ad026 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e585cf5b5b1a6d59f98e9676e6c523785ea28f7ff8a1d262c145a2e27443d837 +size 1038 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py new file mode 100644 index 0000000..010b019 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/error_reporting.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa74e1cef2b2a637930dcf8b713ce8caded135e633deb5d60832c9b7a16a8984 +size 11266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py new file mode 100644 index 0000000..3bc1a14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/extra_validations.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c07ceb81f75950c44f051d647b5960e6686a46c0526e311838cb2e157407f636 +size 1153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py new file mode 100644 index 0000000..cdcc2fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3be3d260a8a8bc72504570e6dd71b655aac985e2827f401ca16754866d414dc +size 1612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py new file mode 100644 index 0000000..a3003dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/fastjsonschema_validations.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:455e2f2f80ba5fcdcadb43e977397194177ef4fcca856de063a6bb66fd4ff4e3 +size 274893 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py new file mode 100644 index 0000000..8932321 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/_validate_pyproject/formats.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb77ff56d22b72063de7220b0b9fa8fa3879d56a23f50d1184bddb99b3a327e1 +size 9160 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/expand.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/expand.py new file mode 100644 index 0000000..a06705d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/expand.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b3867b852c819240fde7d61a074c0d29d17d9d851c75195d708031d66d49fa +size 16456 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/pyprojecttoml.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/pyprojecttoml.py new file mode 100644 index 0000000..e84c9cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/pyprojecttoml.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:114c52b1d450f88330eea9578fa5c9553bd85d0dc377da1b766b9dad232c0a2a +size 17383 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/setupcfg.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/setupcfg.py new file mode 100644 index 0000000..1e64e4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/config/setupcfg.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f667df8da688f0e331bbe3cb522ce861ec1b3ec91eced8dcf3ca1dc8a4f38246 +size 25630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dep_util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dep_util.py new file mode 100644 index 0000000..a9ce2d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dep_util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:830bc4f02aed3917ac5021681914896103cf336fa594b61fd625b25cfb2027c1 +size 659 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/depends.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/depends.py new file mode 100644 index 0000000..54ddadf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/depends.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7edcba02b6cead4d102713c89dea98348bd70759c62f535a8e3c5cbd63f3b6a4 +size 5599 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/discovery.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/discovery.py new file mode 100644 index 0000000..f5699b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/discovery.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd69b61641e81f96bcb85fc405ab9017f32ab46c442b358b11ed06ee99723ab5 +size 21152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dist.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dist.py new file mode 100644 index 0000000..31e5801 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/dist.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21fe78e6bec171895478ecfb3901ade163f0bc4fb3567a500dfc3df722a6959 +size 37504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/errors.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/errors.py new file mode 100644 index 0000000..b9c02ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/errors.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:152fb731323382fedc8acc0eacaef528cb8451c621f649165185ddf3de466dec +size 2669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extension.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extension.py new file mode 100644 index 0000000..e5ccc28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extension.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5a6c3ea8cc4759cb71f83be4cb3ba7cfe165be4530cc67be964d26dd9a22154 +size 5807 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extern/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extern/__init__.py new file mode 100644 index 0000000..3384a34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/extern/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66a83bb08a99ba27ef191713f581a267e0efe13def61835661d124bd70c66d22 +size 2556 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/glob.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/glob.py new file mode 100644 index 0000000..910d1a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/glob.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05887257bb3920d8eff8932ccf848db905864f363895954b0f9fdeb9362c1717 +size 4852 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-32.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-32.exe new file mode 100644 index 0000000..a071389 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-32.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85dae1e95d77845f2cb59bcac3d4afe74bbe4c91a9bcc5bf4a71cd43104dbe7c +size 11776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-64.exe new file mode 100644 index 0000000..3920084 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3471b6140eadc6412277dbbefe3fef8c345a0f1a59776086b80a3618c3a83e3b +size 14336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-arm64.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-arm64.exe new file mode 100644 index 0000000..44d0f39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui-arm64.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e694f4743405c8b5926ff457db6fe7f1a12dec7c16a9c3864784d3f4e07ae097 +size 13824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui.exe new file mode 100644 index 0000000..a071389 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/gui.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85dae1e95d77845f2cb59bcac3d4afe74bbe4c91a9bcc5bf4a71cd43104dbe7c +size 11776 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/installer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/installer.py new file mode 100644 index 0000000..bbca7af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/installer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d94db11d26f29704bc971cb2e8fbcba5224698a6a20f33774a34c1f9ed282f82 +size 4969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/launch.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/launch.py new file mode 100644 index 0000000..abe0b07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/launch.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f23d3f887354f612762f18edba81f3513f8cac065ae1a5b4634315ac88ee35e +size 812 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/logging.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/logging.py new file mode 100644 index 0000000..bcff917 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/logging.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:240ec356d2e50b782c932b20b4e46d9bdfb851687d916afd1636d76dd42c211a +size 1239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/modified.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/modified.py new file mode 100644 index 0000000..75b6424 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/modified.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9436ebeddb34669c5837c8bc6f80e6c2e189843103e509af40a11de3d8196c06 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/monkey.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/monkey.py new file mode 100644 index 0000000..c7b87b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/monkey.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:591df9b3df07e8809f98989d8095a1cae21163530b9c2ea262b2cada6415ea2f +size 4303 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/msvc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/msvc.py new file mode 100644 index 0000000..0030925 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/msvc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4e7943cf82544f59c09066f27ae9c2ce56ec1e5ade8503d37cdc1e48cdbda5d +size 47476 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/namespaces.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/namespaces.py new file mode 100644 index 0000000..cdcc33f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/namespaces.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:865adff1110e2912bd5edb6935b7e8be4e16c0640b07b2843ad7ef11e1c2d98b +size 3131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/package_index.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/package_index.py new file mode 100644 index 0000000..18f1ef4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/package_index.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d76eafa82c85c39244fd666edbc557310309ad07ddacaf57bd832df7fae35a6 +size 38376 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/sandbox.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/sandbox.py new file mode 100644 index 0000000..99f970a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/sandbox.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5e998649f92fa5e663a38db69bb69dc7147cb1a80ee644235f63987e9e64280 +size 14699 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script (dev).tmpl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script (dev).tmpl new file mode 100644 index 0000000..c618912 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script (dev).tmpl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:454cd0cc2414697b7074bb581d661b21098e6844b906baaad45bd403fb6efb92 +size 218 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script.tmpl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script.tmpl new file mode 100644 index 0000000..99e2590 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/script.tmpl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5864ede6989eccedbb73e0dbc7a9794384f715fdb4039cfbf3bda1bf76808586 +size 138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/unicode_utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/unicode_utils.py new file mode 100644 index 0000000..14ecee9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/unicode_utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14fae76a7c956619c2b3f88fe394318a0ee1259252ee6e58af8adea36e3e5cb4 +size 962 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/version.py new file mode 100644 index 0000000..90913e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58909e52ecaaef80289364de2bdf8e7b164ebbc5eb950cbbfb2d0112e58da2f4 +size 161 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/warnings.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/warnings.py new file mode 100644 index 0000000..57c324d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/warnings.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7be47f93c4f71d8202d8349c0389f38dcc2282c5c5f2b9f6942b29dca52b600a +size 3697 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/wheel.py new file mode 100644 index 0000000..9aca71d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f123e349ec60310f8583132da6114b756f44a1531bfad1fe2730bd5cc709e309 +size 8628 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/windows_support.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/windows_support.py new file mode 100644 index 0000000..ef2f211 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/setuptools/windows_support.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2a2c4153604065cb9aae4d5d44722a8ac2bbd2e19b54e281d63f4677f813982 +size 720 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/LICENSE new file mode 100644 index 0000000..2dabe1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6326fa2539fd15cb2a308bad553903cc3a3e332ae20a76631871765f343fe95 +size 1094 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/METADATA new file mode 100644 index 0000000..03bdf28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da7099f97ff86d98869ecd4ff32ac8077154ace386e4adabd6d27e4ec338c6f7 +size 2524 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/RECORD new file mode 100644 index 0000000..4acad82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8ab9c819386de6788650f2de74dde5debc348e9c9c2dd893113db12480a3ac9 +size 1242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/entry_points.txt new file mode 100644 index 0000000..554ed34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro-0.13.1.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc8ef4bfd0a40fd1e70a8e53d7b1fda456342825f0c9a8642cfdcba88e9ce8b7 +size 58 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/__init__.py new file mode 100644 index 0000000..33b314c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d901f22e5d1e0236551d9fedb2cee7f256fbd566ac9a23b4cf42cf993a22ad76 +size 22 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/sqlite_bro.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/sqlite_bro.py new file mode 100644 index 0000000..f086927 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/sqlite_bro.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a7cd80985ff381b31c70aca22f064daae98d3f9451bd8d3e2905f00f8619085 +size 99816 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/tests/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/tests/test_general.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/tests/test_general.py new file mode 100644 index 0000000..be901d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/sqlite_bro/tests/test_general.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d9c8160f76afe5e28f5b76a00a6e4a489818196d458bb3a7bcee6d545b379b +size 2329 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/LICENSE.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..4497995 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/LICENSE.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30c23618679108f3e8ea1d2a658c7ca417bdfc891c98ef1a89fa4ff0c9828654 +size 1107 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/METADATA new file mode 100644 index 0000000..c2b5f69 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59bac22b00a59d3e5608a56b8cf8efc43831a36b72792ee4389c9cd4669c7841 +size 2153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/RECORD new file mode 100644 index 0000000..bf18d39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc4d6d8fa3fa5d8fe37ec1adc8dfe51c65f75449c1a373fde235e9e66573528e +size 4568 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/entry_points.txt new file mode 100644 index 0000000..7c6e1f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel-0.43.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad363505b90f1e1906326e10dc5d29233241cd6da4331a06d68ae27dfbc6740d +size 104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__init__.py new file mode 100644 index 0000000..3236dce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fa8e11f4d1e3336e0ad718078ec157c3e62fa508030cc9cb86d4bd2eb1e0e5a +size 59 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__main__.py new file mode 100644 index 0000000..c4bf74f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3643149ee4c219c3a4818d0804b8010950bf04619c58e471d8af236064b5d941 +size 455 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/_setuptools_logging.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/_setuptools_logging.py new file mode 100644 index 0000000..a8b1977 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/_setuptools_logging.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3680a78c9e03144678e44a3ed817572ec5890b01a46a2b75b69ff5ee96a5795c +size 746 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/bdist_wheel.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/bdist_wheel.py new file mode 100644 index 0000000..53a1ebf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/bdist_wheel.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38a272a7d13cdf5cc9af1a117e633d0203a30721b5081fa9cc5e645d016668a9 +size 20938 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/__init__.py new file mode 100644 index 0000000..6a849c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7813619cfc164ed74a0091f2efb96fcfb80e43912edc66af1ae817c614ac9fe5 +size 4264 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/convert.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/convert.py new file mode 100644 index 0000000..db5e64f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/convert.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a897296062aa75fc353fa05e9603751e7fecb8d80ce9bbf211616565eb925b1d +size 9439 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/pack.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/pack.py new file mode 100644 index 0000000..feb6430 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/pack.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08015c1dd055ba5bec1d82659dd2953bb28c23d26a053673e628b43cac7108eb +size 3103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/tags.py new file mode 100644 index 0000000..7f413e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:947c3e2da5ab912e49cbfa96730fbaa528de34ceb20230e7a8a2371392534c25 +size 4760 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/unpack.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/unpack.py new file mode 100644 index 0000000..d5597b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/cli/unpack.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63f27bca7c4f4a81454d3ec7d1f3206c195512bc320c670e6e099ee4c06ecf9f +size 1021 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/macosx_libfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/macosx_libfile.py new file mode 100644 index 0000000..b97d51a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/macosx_libfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e75ba38f74df7dde9b12b6fc25e3dc6dc76930ee1a156deea7bf099ff16b0a2 +size 16103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/metadata.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/metadata.py new file mode 100644 index 0000000..64b4627 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/metadata.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abec420aa4802bb1f3c99c4af40ebf1c05a686a4b5a01e01170d7eac74310624 +size 5884 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/util.py new file mode 100644 index 0000000..da3c587 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b48e99ec6db33d42169a312c9aa7efd9814c5cc70a722c393a44772b76e3cb8 +size 621 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_elffile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_elffile.py new file mode 100644 index 0000000..13d13e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_elffile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85b98af0e0fa67b7d8ea1c229c7114703d5bcbb73390688d62eed28671449369 +size 3266 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_manylinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_manylinux.py new file mode 100644 index 0000000..8d7c55d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_manylinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fbb1d479ffb5c1634f4b55860f8479b274c2482303d75ac878a2593be14ba3e +size 9588 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_musllinux.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_musllinux.py new file mode 100644 index 0000000..c30f292 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_musllinux.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf5b3c4e8da1434be99ff77e3b68b9ab11b010af1698694bb7777fdba57b35e6 +size 2674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_parser.py new file mode 100644 index 0000000..43119ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d4f87a64a5daa4da53b553404d576bda358cc3c2b017b3b18071c8d31437eb +size 10347 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_structures.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_structures.py new file mode 100644 index 0000000..5a59a02 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_structures.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab77953666d62461bf4b40e2b7f4b7028f2a42acffe4f6135c500a0597b9cabe +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py new file mode 100644 index 0000000..018e380 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/_tokenizer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a50ad6f05e138502614667a050fb0093485a11009db3fb2b087fbfff31327f9 +size 5292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/markers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/markers.py new file mode 100644 index 0000000..e4a702c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/markers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd348f2350612583bb069f40cd398743122a1c45576938e60e1f46fb0f2accf0 +size 8232 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/requirements.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/requirements.py new file mode 100644 index 0000000..47c7c1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/requirements.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:760a01795a6b3eed9813a43c9c67f038f4e30131db45afd918bc978451259fa4 +size 2933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/specifiers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/specifiers.py new file mode 100644 index 0000000..4c3d47c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/specifiers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2164add12acb48fef685e5a1002f142f4786bdab3b5c84078ea8958957e63ca1 +size 39778 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/tags.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/tags.py new file mode 100644 index 0000000..3dce55b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/tags.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de7475e2387901c4d6535e8b57bfcb973e630553d69ef93281ba38181e281c0 +size 18950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/utils.py new file mode 100644 index 0000000..7d7300d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e07663f7cb1f7ec101058ceecebcc8fd46311fe49951e4714547af6fed243d1 +size 5268 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/version.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/version.py new file mode 100644 index 0000000..1917061 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/packaging/version.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c525a6190f1060cb191f6211f7490c38a9f13d202096ad39a2b6fab5e32ddbb +size 16234 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/vendor.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/vendor.txt new file mode 100644 index 0000000..fc26906 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/vendored/vendor.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67610d8c1d62e69adf7b3f0274cd5276bddce99c6fdab451a253292e60677001 +size 16 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/wheelfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/wheelfile.py new file mode 100644 index 0000000..bda00a3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/wheel/wheelfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ed2435a864cbe7061e2578d3033c63a9ad053d77f769eaaf8c995d14fbee317 +size 7694 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/INSTALLER b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/INSTALLER new file mode 100644 index 0000000..a7e5a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/INSTALLER @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceebae7b8927a3227e5303cf5e0f1f7b34bb542ad7250ac03fbcde36ec2f1508 +size 4 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/LICENSE b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/LICENSE new file mode 100644 index 0000000..7ca186d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/LICENSE @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41cebbc12b721a1adaeeb22b1a0d1a97e66734ed5c8a9337350ae84b46c44cd6 +size 1206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/METADATA b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/METADATA new file mode 100644 index 0000000..7439cce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/METADATA @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ca95095be65c909a67d4c305d5c9fedfa49e673c97391ae90cec51a56605f3b +size 2449 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/RECORD b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/RECORD new file mode 100644 index 0000000..84ff044 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/RECORD @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c132103aa500c490cdee44c8a1aae23163def3caf99b33c75d368ff109cd378 +size 1809 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/REQUESTED b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/WHEEL b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/WHEEL new file mode 100644 index 0000000..619874e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/WHEEL @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1196c6921ec87b83e865f450f08d19b8ff5592537f4ef719e83484e546abe33e +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/entry_points.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/entry_points.txt new file mode 100644 index 0000000..cbc1f60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython-8.2.20240618.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee6f755b3943fd7f08e0b0048ac86fd7961f4b148012f50b27f1ff08c0be3cee +size 44 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/__init__.py new file mode 100644 index 0000000..db52057 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a569342eea972f735129520f24ac0a19ff62b1eb79a5d2ad76c21ba96dabb784 +size 1400 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/associate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/associate.py new file mode 100644 index 0000000..12f7dbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/associate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2126a0300e57622420ebcd9ad0d9ea0fc06af072c2856dc1e2d01b5fc112262 +size 12491 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/packages.ini b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/packages.ini new file mode 100644 index 0000000..1935d4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/packages.ini @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a902d0dd3d9cd8e9bcb68cb2e0aa62ddd532b3c02647eabc7b4242b05ab3561e +size 103942 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/tools.ini b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/tools.ini new file mode 100644 index 0000000..d8f6bc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/data/tools.ini @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d2a3ee814c7671a90635bf9e94212643cf7ef35856438bebbd644a752b416f8 +size 1498 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/piptree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/piptree.py new file mode 100644 index 0000000..2ede410 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/piptree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d6d265d1d7d3cf2cc7ae0c085b70f48915955f46e92e25927d9137a4ce14887 +size 16742 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/register_python.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/register_python.py new file mode 100644 index 0000000..bc65038 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/register_python.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9090ee99768f611c9d71a7fda5a3d009489569f2996d1dfd5c9d2c9186cd337d +size 1059 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/unregister_python.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/unregister_python.py new file mode 100644 index 0000000..86d3106 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/unregister_python.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cbc23fb2f71d3381816c81438e6633e4698986ad43b10533ade833a3550ad0d +size 1065 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/utils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/utils.py new file mode 100644 index 0000000..bda2b77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/utils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc55d8705daa3dd994d085e37e63074c8b3c932e396a03e5533d0dc5f9be5ee +size 29553 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/wppm.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/wppm.py new file mode 100644 index 0000000..4b6ca11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site-packages/winpython/wppm.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:599a2ec568740cc3432d5c888f4508a9f69a4ff365846045194d9b4d47988293 +size 29145 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site.py new file mode 100644 index 0000000..6488427 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/site.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a83090fcf80eaa424c39500fce8db615a1210516c92671ab27c6794f190af8 +size 23857 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/smtplib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/smtplib.py new file mode 100644 index 0000000..a5d6298 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/smtplib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfb22b1d9f0bc1a193572b92cadfb2c10d831f443d682cde90cdfaa548a0dd05 +size 44641 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sndhdr.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sndhdr.py new file mode 100644 index 0000000..048ac7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sndhdr.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa81b19f637ed3294f7c535cdf959c4ae2e370d7f3aedcec9a810f8b9558a22d +size 7719 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socket.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socket.py new file mode 100644 index 0000000..a3df335 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socket.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deec963c9e256c49efbee6cab1989071a3245922a6a53299b1399e4b9eecd25c +size 38412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socketserver.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socketserver.py new file mode 100644 index 0000000..c5c20f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/socketserver.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c886a4880d38df2d036bc6df23399fd5660ea970df0deffd988f6f92db70a88 +size 28709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__init__.py new file mode 100644 index 0000000..3a9ac9d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c2cf6c0598d0d4f96f28ee6b4e2abc17c1dd2021f601301d958789635bbf2c8 +size 2571 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__main__.py new file mode 100644 index 0000000..b6ed863 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb222aec2cd77d0ee30e9a12d343cf3321f0956733f27b37492df598b36c7ac3 +size 3982 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dbapi2.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dbapi2.py new file mode 100644 index 0000000..cf49498 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dbapi2.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4595e60f0893cd6d8c6937c8ba5f7d9beb232e33a5548579b6598a46853a5c13 +size 3739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dump.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dump.py new file mode 100644 index 0000000..c556fc6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sqlite3/dump.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3050031f7baf69659c202ed64c82cef67583ca6830f18a178a30db669b21b0f +size 3627 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_compile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_compile.py new file mode 100644 index 0000000..70cc0b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_compile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4c466ee8901119b467141dcc30d2bd512b3ec384911b8e33842e169fdaf19f4 +size 238 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_constants.py new file mode 100644 index 0000000..090d92b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a74070fd00e873127617bee90a9fe54d2a710dfce80cc57678992b2d1b22500b +size 239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_parse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_parse.py new file mode 100644 index 0000000..04c89f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sre_parse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cfd6e20250e3fe0a4de263f99ade8b584109ce4dc5d198a26f0e1c2eb6780ca +size 236 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ssl.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ssl.py new file mode 100644 index 0000000..2906b05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/ssl.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5daeaa2407f01e2bb5871acfb4d94444142666e2cb40feaa02907739273d54c7 +size 52299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stat.py new file mode 100644 index 0000000..085da16 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e514fd41e2933dd1f06be315fb42a62e67b33d04571435a4815a18f490e0f6ce +size 5680 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/statistics.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/statistics.py new file mode 100644 index 0000000..647d7e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/statistics.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf12baab12537f999c15bb903eda896ce761b8b5edbb663dbe024ceef0914749 +size 51681 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/string.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/string.py new file mode 100644 index 0000000..392f891 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/string.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5f415046d856b81bf227a605a410e7a9f250f477a8ba2418689159e2ef4d70b +size 12095 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stringprep.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stringprep.py new file mode 100644 index 0000000..7f799c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/stringprep.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe08a5c09b78e5037f7ccb95b9014c5f4cc2b3968c9001f321d4788e0adb45eb +size 13189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/struct.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/struct.py new file mode 100644 index 0000000..25e47d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/struct.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eadbcc540c3b6496e52449e712eca3694e31e1d935af0f1e26cff0e3cc370945 +size 272 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/subprocess.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/subprocess.py new file mode 100644 index 0000000..1c3d3be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/subprocess.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f08d583a95b415762d888fff499c19103040d4b7027e25a73d46c7e3d777d04 +size 90941 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sunau.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sunau.py new file mode 100644 index 0000000..0cfb5cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sunau.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebaed7e3e5ab1492cf3c124ba5a3fd1fbef2ea2a89fefd8b754c51bad8e7aa75 +size 19011 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/symtable.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/symtable.py new file mode 100644 index 0000000..2a81223 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/symtable.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe0b15c5761d2ea3738b0aae6bd4a7fa2d0420d0bfd55320cc3671eb549d515 +size 11086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sysconfig.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sysconfig.py new file mode 100644 index 0000000..ba2b338 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/sysconfig.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a9061b83efa404314afbfb5be243d684c20ea796f238f48cd83a6d5b1e647c +size 31875 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tabnanny.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tabnanny.py new file mode 100644 index 0000000..d38d4ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tabnanny.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59f3489376f6b7d84f88ce5263eac0a2cfdb401f37cf5cd18538cad7b89bb9a4 +size 11871 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tarfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tarfile.py new file mode 100644 index 0000000..dd2332b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tarfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:672d9d43a02166f0be0d64841511daa03262c060b0a6c204a7a4ca394a2416bc +size 109797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/telnetlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/telnetlib.py new file mode 100644 index 0000000..2753a31 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/telnetlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92e0e3bb8bc62ff9ce27a3da75f8ba9f6ab7d8320c50a73c16a7822fb66d5e0e +size 24014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tempfile.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tempfile.py new file mode 100644 index 0000000..c5f26e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tempfile.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:325262b226e4d8ec1ef92b825f603e54b767b5add31792acfc3ab6f2b8be73ce +size 33188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/textwrap.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/textwrap.py new file mode 100644 index 0000000..aed90fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/textwrap.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cad00069b2a25a585604d2fa774c288cf5ed70d4464afac16edf821f3a4afd5f +size 20209 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/this.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/this.py new file mode 100644 index 0000000..024eb71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/this.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a89b1a1f22384960e69c554633a98558231f11a48260952ebfc21ca10f0625c +size 1031 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/threading.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/threading.py new file mode 100644 index 0000000..ad70d4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/threading.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e15f4e0500260a756868ac0609c4702b10634a5dee5d89926f9e3bd642089f1 +size 61829 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/timeit.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/timeit.py new file mode 100644 index 0000000..7ce3147 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/timeit.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:892ee637aa0c91999882be4a25984f5b33e8fc1c577cab32ade8f13b7dae212d +size 13845 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__init__.py new file mode 100644 index 0000000..6c4dabf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:078c8cc9533f4d21b624d4c5de118e3b3d52fa9dc60f52031982c16595defce3 +size 177723 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__main__.py new file mode 100644 index 0000000..c14e795 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a535e36b6f3eb57ee9b7f9633ab082e41ca0bb8c3dd701521240757468ef5151 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/colorchooser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/colorchooser.py new file mode 100644 index 0000000..daf579b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/colorchooser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c18048b86214c5c7a30115a89d1553f64c21455c2bfb6f08f8c88657777eb5bd +size 2746 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/commondialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/commondialog.py new file mode 100644 index 0000000..0d9aed3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/commondialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:051f370511e07ae6d05c894991b4aa44cc671098149953453cc14b219c96e4d4 +size 1342 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/constants.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/constants.py new file mode 100644 index 0000000..1018a99 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/constants.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ffd883463f20255fbd458d8abd15a6842190f2f5cc182416cb9a15ffb1e1052 +size 1603 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dialog.py new file mode 100644 index 0000000..669d0ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:562643a670ae4ac6319b34f93776d0fc4636765c320b3067d2f5164c5fc4e5b5 +size 1584 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dnd.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dnd.py new file mode 100644 index 0000000..535b284 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/dnd.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec28874fbdf05b2e53d8785bfd86579ce3a90d600a80af4890e7d39df4bee90a +size 11968 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/filedialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/filedialog.py new file mode 100644 index 0000000..e93d9f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/filedialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:296c216a2bb76d3415605c1d523daee4937d240e01f2dc201b0f0732017c8c6e +size 15431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/font.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/font.py new file mode 100644 index 0000000..e108368 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/font.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9aa2df909024b1f27ca46affe796c8f1771cf627b10494789d5fb808421d8fe +size 7239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/messagebox.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/messagebox.py new file mode 100644 index 0000000..9cfe599 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/messagebox.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57e037eaa580d6c4453c2e5fa907a23961385a656ead1901b73281adf8f5986e +size 4007 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/scrolledtext.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/scrolledtext.py new file mode 100644 index 0000000..6a4fc26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/scrolledtext.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:022186757915906f5b36f2fc885a047ab0a2af3c5b837c29fcf4649262f838af +size 1872 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/simpledialog.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/simpledialog.py new file mode 100644 index 0000000..dae1738 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/simpledialog.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d8d289977c2c326ae924c948cf0784f58d57c9764f6c9e7e9e67cbbb80e4bcc +size 12194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/tix.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/tix.py new file mode 100644 index 0000000..abd3bf5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/tix.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9865e7ec287482496fe58089ae8e137c9ac2a11a5a8e41890a3663fac2399025 +size 78980 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/ttk.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/ttk.py new file mode 100644 index 0000000..a89d97f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tkinter/ttk.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ab063a894403c552e2fd1dbfc7a07091b9d978896fb666fbc597b9b0cb3693b +size 57879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/token.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/token.py new file mode 100644 index 0000000..a6a7b20 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/token.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c62135333e0eebc05c84027fe51fcf5c43898606d76dbb9522e602941228ef76 +size 2621 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tokenize.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tokenize.py new file mode 100644 index 0000000..ac8dcc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tokenize.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b392482136e453ac329dfdfd99c54d939dcbf925a3e4d0e2bfffcc5be8a57598 +size 21800 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/__init__.py new file mode 100644 index 0000000..ec0ee00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340e8ae1914e9e9e83e354bf9bcd2e96c4a4ebbc5cbddaa4ae90037671d48cb9 +size 318 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_parser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_parser.py new file mode 100644 index 0000000..124557f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_parser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d50b4129e51b82dc56104b75533b71216a85f681750f21c59290a97d0811086 +size 23322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_re.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_re.py new file mode 100644 index 0000000..f66b1ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_re.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4842e6e992d2d9ffb07b47be52c62a016582305e7071c2748877ed60a51d13a6 +size 3050 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_types.py new file mode 100644 index 0000000..76da8f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tomllib/_types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff8f42662b5b3275150639b2c20f72c08d1dd27e9f3c646b968c5a67b86be9fe +size 264 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/trace.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/trace.py new file mode 100644 index 0000000..01fbf4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/trace.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c79e0040f5920e07588c8f4a5990683991e600bbd402314c3120b7c7869ecf7 +size 30100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/traceback.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/traceback.py new file mode 100644 index 0000000..56d018d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/traceback.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac90749fa2692e4bf6f39ac85de077c53291bae5d577be99b3f23c1e7078ad95 +size 47512 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tracemalloc.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tracemalloc.py new file mode 100644 index 0000000..52cbc07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tracemalloc.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:488c28ad5fd084dd715986ea235928894f1b140ac880a5872655a99c97054dc2 +size 18607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tty.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tty.py new file mode 100644 index 0000000..15f7f2f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/tty.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e03ca6cc422b36186ec1fcc3686b5eddec2c1f8fb26f1f9e3db74a6b800c6b3c +size 2108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtle.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtle.py new file mode 100644 index 0000000..45c9819 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtle.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3a33f54aa95b8b674268ef4d07869421bf729e098308db0558f17709e036b05 +size 150568 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__init__.py new file mode 100644 index 0000000..1669485 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f97ea361e2359a1338cc38a2d0fb9ab55899d4e4184ffa008fb227f0a44cd8c +size 328 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__main__.py new file mode 100644 index 0000000..c19ff54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43eb6065c5578146553702ccfb96c6b0a7dd16e715aaa9aefe46168b59bc685d +size 15779 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/bytedesign.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/bytedesign.py new file mode 100644 index 0000000..a22131f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/bytedesign.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f87bfd89a92c6b77c46b10accc6df266a25ce0d2589f02c5c9284603777cc7be +size 4409 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/chaos.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/chaos.py new file mode 100644 index 0000000..c695b00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/chaos.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3745ae9704f9cadab1069dac2291d330f7423f6ac5006878fc5a92ed812d2717 +size 1010 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/clock.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/clock.py new file mode 100644 index 0000000..1eed156 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/clock.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee9c1b445f1e05550764413250b2384c4e04a7f36ca8cb28a18c22b90cb09a48 +size 3311 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/colormixer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/colormixer.py new file mode 100644 index 0000000..2f778da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/colormixer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f65b057c8697dde9ec4200f8baf0e383388e8b7367f41eaac50708127981610 +size 1397 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/forest.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/forest.py new file mode 100644 index 0000000..5356314 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/forest.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b5f67104ac4de6db1fa425c41383b402c1a49b530323ec1fbee39b04b74f25a +size 3074 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/fractalcurves.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/fractalcurves.py new file mode 100644 index 0000000..a1e794f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/fractalcurves.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64ef4ac4eb23e645c17e8699168c3132e130351592db797a34d57cf742b41717 +size 3611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/lindenmayer.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/lindenmayer.py new file mode 100644 index 0000000..5f29811 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/lindenmayer.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af4e1ba8102f30f049caf1c4657df7ee1a0b79dd016ca78698a1cfe4067a7df7 +size 2553 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/minimal_hanoi.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/minimal_hanoi.py new file mode 100644 index 0000000..7edf6ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/minimal_hanoi.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce48822989371c84b283efb5b2604b097ebdcf0129681294c5507ed052c5dabb +size 2130 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/nim.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/nim.py new file mode 100644 index 0000000..0a0d6b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/nim.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7281b8c20b88e601b3127abe6e696f1c3e570320d51b5a1a701f59d990aa71b8 +size 6739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/paint.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/paint.py new file mode 100644 index 0000000..7a3c3cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/paint.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d23a637c397c9ac0d7a91a4812e42ba362b7cdfde9c7e9d13b7c37b799931741 +size 1345 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/peace.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/peace.py new file mode 100644 index 0000000..0ebc88f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/peace.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2bc372e6bd79214ff3c2feba886fb94b034c06c1020d805846955da72b5fcab +size 1127 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/penrose.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/penrose.py new file mode 100644 index 0000000..54eee29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/penrose.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d0ed4c343e83ad91315b6f4cd36b50c2b8c5f775ccc11e4366da3024cc76234 +size 3555 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/planet_and_moon.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/planet_and_moon.py new file mode 100644 index 0000000..3c1b94f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/planet_and_moon.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7406348dc407147f1da75234b3e2a3c955a2466e911e2927c065e5a14250f7d5 +size 2936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/rosette.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/rosette.py new file mode 100644 index 0000000..66e40b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/rosette.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a6c7e1bd4382dfcce32563991ff20926221e3908032b5a8dda8c7ac3939886 +size 1426 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/round_dance.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/round_dance.py new file mode 100644 index 0000000..5b81a50 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/round_dance.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bafc72e609cbddc8d311c2cc4639d07ea7ebf2e63013bdbc18042bc094900495 +size 1890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/sorting_animate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/sorting_animate.py new file mode 100644 index 0000000..ddc8f7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/sorting_animate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ec5ccaaf6f0f9e123911a95ecf7b2e7f2b482e06627e881fd5c983763f7c9b3 +size 5256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/tree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/tree.py new file mode 100644 index 0000000..5f33025 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/tree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:832ec4c83bc340eb4e046c29ec2f5379bee806cf555915b6391ba89de39766d4 +size 1463 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/turtle.cfg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/turtle.cfg new file mode 100644 index 0000000..0681b13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/turtle.cfg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:837255b74c11f1066c66658fbdf5b2e9e5290c0f1a76239031488a8a80e4da6f +size 170 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/two_canvases.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/two_canvases.py new file mode 100644 index 0000000..36feae4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/two_canvases.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd3b6549e8d586797653263b22462b36c66304aecd60105fbd21523a2637f003 +size 1173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/yinyang.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/yinyang.py new file mode 100644 index 0000000..632ca2f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/turtledemo/yinyang.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4c9507c3717ddab7e424feb08982fab4acc279e8661328073b88be652d58b7a +size 870 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/types.py new file mode 100644 index 0000000..0756dea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7ce485ecd8d4d1531d8f710e538b4d1a49378afacb6ff9231e48c645a9fa95e +size 11326 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/typing.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/typing.py new file mode 100644 index 0000000..8855ae2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/typing.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94fd20d90ce0e21a2173e9705adb0dc1819d524bc659ca405bdf937ac4bce15e +size 121780 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__init__.py new file mode 100644 index 0000000..150e910 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9f5034dee11af8558c36dab6f2de6a443296a927af64a729f7ea65b87f3d4bb +size 3572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__main__.py new file mode 100644 index 0000000..68f6d11 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14c0c71b35519473106ea65b3f22a9128f1c4b87d98aaff0a7b7b770ff2780dd +size 490 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/_log.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/_log.py new file mode 100644 index 0000000..ead3e34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/_log.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c9bf421ec62fbb42c9eaa95c24b5e93f64abb46c5487900be40300762a4ad3a +size 2832 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/async_case.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/async_case.py new file mode 100644 index 0000000..bfc0ccb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/async_case.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3967be1e55c489d42e1b316f5db2ef0bae16fe3a2d31eeda474dbbb504d4ddf2 +size 5607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/case.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/case.py new file mode 100644 index 0000000..3c74fdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/case.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11f61a50154773384dda271c8a5abe7fa38698b07d7025f27707a84b27626c29 +size 58987 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/loader.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/loader.py new file mode 100644 index 0000000..fdf90c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/loader.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37f92ad96ce6511f49754915ecfb362efa7b509afeef99479c4182c7f6203208 +size 21613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/main.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/main.py new file mode 100644 index 0000000..6ed6f57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/main.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d486405df1226fa8ff7b392f150afc6e1239fb186033c28348627c04d9eeedb +size 12282 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/mock.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/mock.py new file mode 100644 index 0000000..854199b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/mock.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8b6f7c4709dbab781b7954a6ad7c084480fb1e035be409eb95f679346b3a95 +size 108366 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/result.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/result.py new file mode 100644 index 0000000..27e9e90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/result.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76456254dcf4a5d1d882ebe8d5c00a3714d1059842d2995a570c60c59fc31fc3 +size 9386 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/runner.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/runner.py new file mode 100644 index 0000000..33ead19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/runner.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b05822336de459dd5ed917417a9e2f903d35a24b715acbb149359d820932a083 +size 10660 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/signals.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/signals.py new file mode 100644 index 0000000..c0a3f85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/signals.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ed7cf1cbe0cab769746b3b344f65a659d912c56cd63d1a4280f9b09a77b778f +size 2474 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/suite.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/suite.py new file mode 100644 index 0000000..baa9814 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/suite.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26acd439bc5828fcba41c1dc7d2495ce05ed4f9073375e7fbfac05fafdd82e64 +size 13891 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/util.py new file mode 100644 index 0000000..f1a778b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/unittest/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1218413dca8c641db891ed05fab47f02404320bea183e9063e511d3660f61db +size 5385 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/error.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/error.py new file mode 100644 index 0000000..f0b64d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/error.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17e896a26ff42405f58189de81a531b17630398cfbc7c9e2b72ed1ac472acf01 +size 2489 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/parse.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/parse.py new file mode 100644 index 0000000..b829b44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/parse.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50829d13abc6be8c4a6d53f3d21faf9cbb04026c4f77ea97bd81a93d72dc7e81 +size 46164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/request.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/request.py new file mode 100644 index 0000000..f505736 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/request.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb01f6caccb71d38bf174ab9d183219745d8ee25a62429a28df55990da2e8b1f +size 105600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/response.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/response.py new file mode 100644 index 0000000..468b77d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/response.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b79834fb777bcc3601b05c8a2bbfab1a72bf99b10e5a5d2c20a7c3a4583d0cf +size 2445 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/robotparser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/robotparser.py new file mode 100644 index 0000000..fe23055 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/urllib/robotparser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05ced87a4f681014f6a5bf7370680cdce02b392a559832cb6d2aa2f910f7d5eb +size 9697 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uu.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uu.py new file mode 100644 index 0000000..b09729c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uu.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07a806a3327e5df84bca976ea10f0c72d30c36d6169e3815935c5d9c7c67f4f +size 7581 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uuid.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uuid.py new file mode 100644 index 0000000..ae9228d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/uuid.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:328e41c4eed0877be1dd3af10bc93ca54ff6d9a49b4fcbcb27dab47a7c3ae424 +size 30449 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__init__.py new file mode 100644 index 0000000..d146c8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a810d144edfd3c67139f9cf38721b15be4404e4802c5b786ee9fa768091bfe7a +size 26152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__main__.py new file mode 100644 index 0000000..a02698b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8996339f7f40ee973ac404f514792180f26cb2afba22afce53f82b842c487fe0 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/Activate.ps1 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/Activate.ps1 new file mode 100644 index 0000000..ecb87b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/Activate.ps1 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80f829e1c4f02707129635600349e476a6cfa1477107ce6b5a27616c50bdf083 +size 26199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/activate b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/activate new file mode 100644 index 0000000..cba5cb4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/common/activate @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b3d2a782a6b9871ba5b0fe6096a7e315b06c9095be1618ebf5087e9ba1f73b +size 2042 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/activate.bat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/activate.bat new file mode 100644 index 0000000..dab2f8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/activate.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:107f9ae6646d42ec3e7da7d40266699c76a6a1fb6837ff824d47114406da5345 +size 1007 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/deactivate.bat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/deactivate.bat new file mode 100644 index 0000000..edf84d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/deactivate.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb53ed45866fee40f01c907c1f67555a399f98361722d89120d05a2580e9e563 +size 393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/python.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/python.exe new file mode 100644 index 0000000..ec65402 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/python.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41123879d2e991377997acadf5f0cf8f34fa10d86362eded8c69b6041e2893b5 +size 270104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/pythonw.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/pythonw.exe new file mode 100644 index 0000000..8b3f3fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/nt/pythonw.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf904d0e6099883c63663d8ca6a7d10f7ea9558ec3892efea4e5f637548d59f +size 258840 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.csh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.csh new file mode 100644 index 0000000..9e3e5c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.csh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd8a01bb9c221836bfa4470d52c9fb5acbce2de6454df71efdae3adc342441e +size 936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.fish b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.fish new file mode 100644 index 0000000..a8d7ac0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/venv/scripts/posix/activate.fish @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a100a3f99289828886d7a4bfab657751aea2b4313ffcb5b95bc643d63469448d +size 2215 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/warnings.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/warnings.py new file mode 100644 index 0000000..4c3da17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/warnings.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35a18ed9056c5aadc9ea700ba3a03e79393abc43f631a2e5ccc042fe37b82e6e +size 22500 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wave.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wave.py new file mode 100644 index 0000000..c534358 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wave.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf03c1d6bbc7e4f5aff854e17f387ae40b880be7b64a004f21eea8ac6775906b +size 23422 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/weakref.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/weakref.py new file mode 100644 index 0000000..f07ca80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/weakref.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6721c34ba3c404bf4a443890ed374b546a870c958935a6aa4fdf634876a5a980 +size 22187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/webbrowser.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/webbrowser.py new file mode 100644 index 0000000..c55f7a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/webbrowser.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5435615025abaee5e23afa7dd33b59feb069613e568cc5eecd8414d52d73220c +size 24314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/__init__.py new file mode 100644 index 0000000..ce6f7cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:978228ae9db30bd59e31ab960bfca45d15411267f0c5bfc449bfea84284da118 +size 682 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/handlers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/handlers.py new file mode 100644 index 0000000..0c18d65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/handlers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f63a3bef6bd407f93e7667668266eaf27b5057aa8d7a95255ea97ad1c70081c0 +size 22237 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/headers.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/headers.py new file mode 100644 index 0000000..85ef0ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/headers.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b96d1dd47e97b5aab695fe4062d53744e0b7c058bb1565c6e65caf4dac9ebcb +size 6950 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/simple_server.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/simple_server.py new file mode 100644 index 0000000..810ec85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/simple_server.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a6c322349214ca18159541ea763eadea4da2a1998c002b8ca5dc3396d0e0d2 +size 5336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/types.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/types.py new file mode 100644 index 0000000..2388eb7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/types.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f56851d14f5008804bb8220a23b5963d55ba08139f9ea4f22ba2773ade85a34b +size 1771 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/util.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/util.py new file mode 100644 index 0000000..e7bd644 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/util.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0a1004776dffffd3073e39100ce6fcfdd03d7a3eef7a856c9a946e031477154 +size 5631 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/validate.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/validate.py new file mode 100644 index 0000000..0e568d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/wsgiref/validate.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72cf19f76f8abefc07e3ea3e1401cd643b883ad461ae1090dff869ed35cdb66a +size 15474 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xdrlib.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xdrlib.py new file mode 100644 index 0000000..357c4f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xdrlib.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85e61f3ba94820c09bd53aa9e9228d642bda513ef4be7ac41ed37edebb59d115 +size 6184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/__init__.py new file mode 100644 index 0000000..5c2672d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e7bc2b8a9974751e0bf0be8e8fd3c116fb0ed2ff2e372f693a7e3659a46f8dc +size 577 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/NodeFilter.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/NodeFilter.py new file mode 100644 index 0000000..05be15a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/NodeFilter.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:125b3733259b454a33b339e5b20ab0b814dc4fba6337db0bf92c3e8b35f38dc6 +size 963 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/__init__.py new file mode 100644 index 0000000..19028de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205d03f2e27639a136047a7dc21c37fd3ac7ce593899f8bfc482b33274c090ab +size 4159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/domreg.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/domreg.py new file mode 100644 index 0000000..6131465 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/domreg.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:174faca21d253fb4ac50624823614b5b3b41e7b8bdf64d59ef75e901ad43b0a9 +size 3550 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/expatbuilder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/expatbuilder.py new file mode 100644 index 0000000..e685215 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/expatbuilder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:841eb1a04f902f3be7ab58241dd7a0672a415a13005ef18b7031b3e1e81a6737 +size 36655 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minicompat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minicompat.py new file mode 100644 index 0000000..d4253c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minicompat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99ae261e514de6d47a11ff572d7139eb9dbcc70696e3f6710bb17543f321f4ae +size 3476 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minidom.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minidom.py new file mode 100644 index 0000000..30195af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/minidom.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf34c3b98ee710c14eb5d550991bb4ddf133187a4e339d655cfaa6e4ba98fb20 +size 70153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/pulldom.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/pulldom.py new file mode 100644 index 0000000..55a13d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/pulldom.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9be4d62e6a7472357148685d34f462f2042cbea5c2a14d54298fa35b62aee91 +size 11973 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/xmlbuilder.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/xmlbuilder.py new file mode 100644 index 0000000..fe2f66e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/dom/xmlbuilder.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b02d7acad7e45931dcae85209134b345ae94e4845af40dcc06311a5948eb157f +size 12774 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementInclude.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementInclude.py new file mode 100644 index 0000000..1e0bf57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementInclude.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb8968de41c03343c39f9974028aa21343d1de58dd9cd0fd4798a0fcf837ca4 +size 7138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementPath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementPath.py new file mode 100644 index 0000000..caa6332 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementPath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cf2c5248524016c9044bdfe5f81ac1c9ad6edc0a04ac8433a33ead7f7d52413 +size 14420 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementTree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementTree.py new file mode 100644 index 0000000..bcefcf2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/ElementTree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e073cbd156ecfb55226cab5e03634ad1c95ced3209ab0e8b17b950f5f0acf5f +size 76102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/__init__.py new file mode 100644 index 0000000..9be240c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2006c512205ba0e5c96b2a4bdcff89bfdd02f18ef076f3e1fc70f11ced93423 +size 1638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/cElementTree.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/cElementTree.py new file mode 100644 index 0000000..e25f263 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/etree/cElementTree.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a42c14e24d69c79d1a1462486dc28ced30875787cb9407bd56a62cce83c349a1 +size 85 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/__init__.py new file mode 100644 index 0000000..96c476b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d78a708d6cfdccd02037debb3e65d5815c82a0ba66eec2aabac29ac730b5d230 +size 175 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/expat.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/expat.py new file mode 100644 index 0000000..f79d0d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/parsers/expat.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fccb4bc00f1ba7baac14413b180c87a34a77d49a854f1ad9fbca199dfc2ddeb +size 256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/__init__.py new file mode 100644 index 0000000..81d00b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8c694673344011ffb22d500e91c21a5ec28a8ab1d2b30381d5911249d08d98e +size 3332 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/_exceptions.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/_exceptions.py new file mode 100644 index 0000000..3a35aac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/_exceptions.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3f900e4e9921dddad72c56c8d8c9e68c2afe32e369415133a2a5589606185a7 +size 4826 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/expatreader.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/expatreader.py new file mode 100644 index 0000000..2324a54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/expatreader.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:827531b805706eaa19983f96ede39fbc89db80604f1ffbd9a9db9ab25c1d51cd +size 16488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/handler.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/handler.py new file mode 100644 index 0000000..8df2ac1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/handler.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:788a465af38efb19485a4e27389d5de072aea2f9bc20e5dc1bedc7e9708b4340 +size 16004 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/saxutils.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/saxutils.py new file mode 100644 index 0000000..4b69eff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/saxutils.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ec6d8e4a1414ee7c52e23a58dbcece9653021705a4d0c0aba0e96961258c5f3 +size 12624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/xmlreader.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/xmlreader.py new file mode 100644 index 0000000..2b99b74 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xml/sax/xmlreader.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f36e3810c9a4986f22a94617bc6bdaac9c7cf51fa8afc11246795c20aeb4c68 +size 13002 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/__init__.py new file mode 100644 index 0000000..70ddc65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52069aeefb58dad898781d8bde183ffda18faae11f17ace8ce83368cab863fb1 +size 39 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/client.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/client.py new file mode 100644 index 0000000..1682c1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/client.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6eeb71d0b26cf4181e64f22e1a0e857a622f9164533053157d4c7e945a4f0d1 +size 50860 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/server.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/server.py new file mode 100644 index 0000000..100c115 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/xmlrpc/server.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:686b525906d692111209de643bfefd8115c36cdeecdfb7049b94e4284fb3419c +size 37824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipapp.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipapp.py new file mode 100644 index 0000000..a71796f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipapp.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d3af6c857c14aa8f228d40f8dc5ab90e776b883060525775b001397286a854b +size 7749 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__init__.py new file mode 100644 index 0000000..70bc90b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:269f55652b6c6e7815a5f719ceec19f8ad5c85e9df613642332eee57b681f362 +size 90020 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__main__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__main__.py new file mode 100644 index 0000000..351902a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/__main__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f6b9bba7c75478e8181b3b8b0017215e313d47cdea34971bf64f7041b054ba4 +size 62 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/__init__.py new file mode 100644 index 0000000..2c0bb3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e13354e9fe20df7bd6d5e9226219837e7234e61ed02d8774871fbf239d2e4347 +size 10804 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/glob.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/glob.py new file mode 100644 index 0000000..b75464f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipfile/_path/glob.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33d2eddd02c714c2d2ccc538a213bfb2ab41d2e7759bec1704faac4b501be0cc +size 933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipimport.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipimport.py new file mode 100644 index 0000000..10c0158 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zipimport.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1e64f2678e00be1afc59c1b791978e609906668d31d8c2f4ab3fde160a0cc8 +size 28852 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/__init__.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/__init__.py new file mode 100644 index 0000000..72cc993 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/__init__.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f4740a1da3cfb5b3e09c537119058b4a8b1ba7a9b90fb90fca15527c61e585 +size 734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_common.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_common.py new file mode 100644 index 0000000..9ae96a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_common.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1a50c19eb0dda4996706cf5180c287303ea98e9da93b1d9140a71bc8dcba6c5 +size 5458 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_tzpath.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_tzpath.py new file mode 100644 index 0000000..6f324a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_tzpath.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca110e529697ed3755effacbf805775148500481a3adda678bfde315f4f7633f +size 5569 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_zoneinfo.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_zoneinfo.py new file mode 100644 index 0000000..67d0eb7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Lib/zoneinfo/_zoneinfo.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:936864de92beffbc7e53980b2f11690583e0fb18ac73c4ad448dd12edd9c1ad3 +size 25446 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/NEWS.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/NEWS.txt new file mode 100644 index 0000000..12c0732 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/NEWS.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b984b7e08be4176dc53663bc5508ff29ba49b9f94922c11d7ed259ba1fcbb0f1 +size 1742183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/concrt140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/concrt140.dll new file mode 100644 index 0000000..964fb73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/concrt140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f500992a53c41a0ba44a11c33c481d8763505a7453be12d85107856ab8fb332 +size 322560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/mdbook-pdf-outline.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/mdbook-pdf-outline.exe new file mode 100644 index 0000000..1c84b53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/mdbook-pdf-outline.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5452bfd273a549a81c5a2f5e2bb5211979e5f77f05637b64d22c39d07ffa899d +size 108488 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140.dll new file mode 100644 index 0000000..e71a456 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4c2229bdc2a2a630acdc095b4d86008e5c3e3bc7773174354f3da4f5beb9cde +size 575056 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_1.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_1.dll new file mode 100644 index 0000000..f004c44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91cd05c16c61c39788c47434602a59c17f5b08dbb3eee04ce85f8d5b70e8e604 +size 35808 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_2.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_2.dll new file mode 100644 index 0000000..64b1b55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:713f17b253d802d283d306ce75647e37d83a546aeb1a881e5d9e529e856c007e +size 268880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_atomic_wait.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_atomic_wait.dll new file mode 100644 index 0000000..0d61f6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_atomic_wait.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aede4ec454a82f146eb4a721e616e2086870107d88aabc6b0bd1eea0a505d935 +size 50664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_codecvt_ids.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_codecvt_ids.dll new file mode 100644 index 0000000..7e77499 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/msvcp140_codecvt_ids.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d52d349fbbe6abc61965c07e04cc82d8ee0cea1de7faf90a838964e3f40acedd +size 31744 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip.exe new file mode 100644 index 0000000..120e10d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b55b856bc0e193aaedcfbb7c48793ea22fc8a3216cb55a080142af913d358c1 +size 108369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.12.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.12.exe new file mode 100644 index 0000000..120e10d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.12.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b55b856bc0e193aaedcfbb7c48793ea22fc8a3216cb55a080142af913d358c1 +size 108369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.exe new file mode 100644 index 0000000..120e10d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pip3.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b55b856bc0e193aaedcfbb7c48793ea22fc8a3216cb55a080142af913d358c1 +size 108369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pyproject-build.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pyproject-build.exe new file mode 100644 index 0000000..5faa63d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/pyproject-build.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50df34f809dbe6accb68d132961834a38c154b63aa5df36e6c94ec0f8a051c86 +size 108373 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/sqlite_bro.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/sqlite_bro.exe new file mode 100644 index 0000000..2340a14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/sqlite_bro.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:460f6261c8653f58d803da811fb59b94729af98a94932be9718fcacb2dbfa1af +size 108370 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcamp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcamp140.dll new file mode 100644 index 0000000..ae6054f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcamp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb7bdd33bb74948c14c388ffcdfcda2cde63a357f1e9dcd01d5912b1008627c8 +size 408144 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vccorlib140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vccorlib140.dll new file mode 100644 index 0000000..f2de61b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vccorlib140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:086fab8accce357da499e6024e4290aa89dfc219867c90d90c62f8247591b95b +size 351824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcomp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcomp140.dll new file mode 100644 index 0000000..e1806cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcomp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48b2cffa42a5064ba299eff1733753f4fa042d9d452c49c11d4fad27360f78ae +size 192104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140.dll new file mode 100644 index 0000000..2fe0bc6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02c6aa0e6e624411a9f19b0360a7865ab15908e26024510e5c38a9c08362c35a +size 119888 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_1.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_1.dll new file mode 100644 index 0000000..bf6d607 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dd9aa02e271c68ca6d5f18d651d23a15d7259715af43326578f7dde27f37637 +size 49640 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_threads.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_threads.dll new file mode 100644 index 0000000..a984ebd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/vcruntime140_threads.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f3540ebe0876c1b173821d2669987c088c3f6db985305d160460f476536a89 +size 38504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wheel.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wheel.exe new file mode 100644 index 0000000..5ff14b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wheel.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73fc88f9857d95848306325e660bcba785140869bb40a540d50f62706dc9fb8f +size 108356 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wppm.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wppm.exe new file mode 100644 index 0000000..0f61902 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/Scripts/wppm.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50fd0d785abe339f10aeba8d3bc37050900893d2264578f14ad4bd2246623c66 +size 108361 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/concrt140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/concrt140.dll new file mode 100644 index 0000000..964fb73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/concrt140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f500992a53c41a0ba44a11c33c481d8763505a7453be12d85107856ab8fb332 +size 322560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/Python.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/Python.h new file mode 100644 index 0000000..cf62b5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/Python.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6831c7fd01fff4553e50322422a1a09a0de2757caf3a6e883861d3433cfa6512 +size 2963 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/abstract.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/abstract.h new file mode 100644 index 0000000..c24de8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/abstract.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45fa29126fa9b3c887505d1165a8f2a0a3e1b94189574f6279d49e4edc940a57 +size 33515 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bltinmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bltinmodule.h new file mode 100644 index 0000000..88c956b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bltinmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bc7d4f6546ad38715880208ebe004616ccb76413009b664bd8fe1d3eba06f59 +size 278 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/boolobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/boolobject.h new file mode 100644 index 0000000..0ba52b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/boolobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f64d91178208312d80d5d46be9426ff23c951b91a5315c888ac76aab2d700c17 +size 1178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytearrayobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytearrayobject.h new file mode 100644 index 0000000..09a0290 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytearrayobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cebcd3142f4a89f5d8e16a91a353b4b0fa1efd156c41f0f7667b08502348dbc4 +size 1510 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytesobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytesobject.h new file mode 100644 index 0000000..b820106 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/bytesobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f940e738abcd25e611f2e37321ae34ff15726f97af3525e87847a56b8910b4f0 +size 2688 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/ceval.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/ceval.h new file mode 100644 index 0000000..cc55674 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/ceval.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d3f6d9dda30ebe2d4679e60d2ef39822f692f202e5062f2ef08634fd5f8155 +size 6435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/codecs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/codecs.h new file mode 100644 index 0000000..57c8715 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/codecs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5efdbae68e530ccd2bd918c1b0de68570397ece9c5acd453058e2dcaa35126db +size 7319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/compile.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/compile.h new file mode 100644 index 0000000..d8559e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/compile.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:233e46abc04b0cef0169f0108695287dcde0c31468e734d4afa8d2c228cad76a +size 470 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/complexobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/complexobject.h new file mode 100644 index 0000000..874807b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/complexobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c3db293a8b3921b7c9c2adee62b0cc0ffed5d7d1d388084605b76970d029a5b +size 758 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/abstract.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/abstract.h new file mode 100644 index 0000000..2038938 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/abstract.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc038177a6eb3ab4b4131dad020e3b805e95fb337d25c1da37d7b4b5d921fc19 +size 8076 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytearrayobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytearrayobject.h new file mode 100644 index 0000000..4ae43d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytearrayobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30a61ff55514c0b0955a0954cd130fe6878c64d79c1a3034c0f54a5d3cad2e52 +size 1197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytesobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytesobject.h new file mode 100644 index 0000000..4a0e54b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/bytesobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38dd20136824048fded9c197c1a7d07ff5aada86700d21e0599994b38bf00b8a +size 4555 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/cellobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/cellobject.h new file mode 100644 index 0000000..c6118a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/cellobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b60e8da674956162f886d3b6a005cc16f1551171ae8329cbd8fcaee08c1f52 +size 1120 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/ceval.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/ceval.h new file mode 100644 index 0000000..6300706 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/ceval.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:545146542650c0b962e523d4c83cd2d3a9f5943b5ad75ea3f22aff15111a25ed +size 1685 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/classobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/classobject.h new file mode 100644 index 0000000..a28338a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/classobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67036807d38844ce2bb25d7bb68d77d82ee27c256e87e6c12e8eb309f8d7b726 +size 2316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/code.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/code.h new file mode 100644 index 0000000..a542a78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/code.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee6ba880bb3ac361882494cfdf63de445ef05587d08173799fe7bc204454e5e1 +size 16577 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/compile.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/compile.h new file mode 100644 index 0000000..5470987 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/compile.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc10c4b043e72cfd684d28f3a2227dd29d50ae5632b76f08a1bc73b74814f78 +size 2729 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/complexobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/complexobject.h new file mode 100644 index 0000000..9b79094 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/complexobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd2bab68ec67777d71d1e7ec4d33a2d29f96c5145e33d49e101ccda692934bae +size 1292 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/context.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/context.h new file mode 100644 index 0000000..dc3fd5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/context.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dae99cc7f7327ef3e797d5e016b957c6fa3ce4880f4478ac97b206dce4568259 +size 2043 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/descrobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/descrobject.h new file mode 100644 index 0000000..ec6a1de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/descrobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f00ca429993329a665c9cd2de348321712b950b4efed2e9c05de6c16eb2e0ddb +size 1706 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/dictobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/dictobject.h new file mode 100644 index 0000000..e4f45e7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/dictobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7ce4dda5c84fc6c5da636f2fdda42c21b458859e87b8cf6205544a893097d03 +size 4804 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileobject.h new file mode 100644 index 0000000..c1ff20d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8314b7d514f96fb7212c8de48443c440d017f25071a81e2de8734fd354138814 +size 837 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileutils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileutils.h new file mode 100644 index 0000000..161b84a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/fileutils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfd7f53cba3c135801c129087bc84866312dd998ed7e1ec13b30cb2a800f3704 +size 240 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/floatobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/floatobject.h new file mode 100644 index 0000000..3e426ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/floatobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dce978016fa9d32ad9f3679c9b1b6e614b727b323b2527e0298f23331dac804b +size 927 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/frameobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/frameobject.h new file mode 100644 index 0000000..43326c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/frameobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:833c2ca6c489103c63daa9701d2a3bd11e2ea14baeb537a61d4cab5d50493a7c +size 1137 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/funcobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/funcobject.h new file mode 100644 index 0000000..b5a3c2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/funcobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d032311b2d3b0609c29e5457a637ffcd6f48023eaea1b79fad96833681a25a +size 7378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/genobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/genobject.h new file mode 100644 index 0000000..40e7ba0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/genobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64be4324f7f9a09e46dbc9997085b04b0b32537a08837073a95beb2ff4abcdba +size 3405 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/import.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/import.h new file mode 100644 index 0000000..933e1dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/import.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2233cc06d149a194c2185d5c3db82256833459c51902ae0df5cd237a6973cb97 +size 1669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/initconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/initconfig.h new file mode 100644 index 0000000..81a4198 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/initconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b77b3c209f8d212d75416338b7e519ecd37d33cc8ef11f4564d64662d59efe1 +size 8076 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/interpreteridobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/interpreteridobject.h new file mode 100644 index 0000000..e666a7a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/interpreteridobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07d04990ae07fbefcdf0db99adfd8c1781eae324a10ce946a837482aa588a679 +size 398 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/listobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/listobject.h new file mode 100644 index 0000000..e8ee567 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/listobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64ec47c66671fe2b216fd49010d149df3103a6c8be0d442e429b1dda6001f5b +size 1680 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longintrepr.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longintrepr.h new file mode 100644 index 0000000..81af324 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longintrepr.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:053452993bf183144becb9ef4cd0293d51f022182cef83c41bb0089dc2b0563d +size 5022 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longobject.h new file mode 100644 index 0000000..456f215 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/longobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e098266a6abb52079966d12f04e34b419ccca2d5e121f62abcb523f867a7d972 +size 4779 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/memoryobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/memoryobject.h new file mode 100644 index 0000000..2d1cfec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/memoryobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9feece501d4cd48e8f3a233db4c46bb822a80376361bd5753e76b493ca3a78b8 +size 2324 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/methodobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/methodobject.h new file mode 100644 index 0000000..35069f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/methodobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38293361cbdfd45df12e1893bf033c25f2ffe3d9dad13b0fd3fcbc98c7997c49 +size 2342 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/modsupport.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/modsupport.h new file mode 100644 index 0000000..3cf6398 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/modsupport.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dc42d6f9801aff80bbf0cbf847211a480e78cf4dfa49eca3ce6a7a784daf692 +size 4445 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/object.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/object.h new file mode 100644 index 0000000..f7c5dc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/object.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ec2077cd103254a2d366cd857e4c734dd261fd750fa39940a3e4975cf8d616 +size 21787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/objimpl.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/objimpl.h new file mode 100644 index 0000000..ae7fb8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/objimpl.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a6fe8dd3e89b288de512cb87dd6bd583d8b5aa4b985bfc0567c6bda983c4554 +size 3411 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/odictobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/odictobject.h new file mode 100644 index 0000000..3e42e72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/odictobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c53b02fce72611a21a403ce367903ddb21f523965179ae5c77d3281eec1d696 +size 1354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/picklebufobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/picklebufobject.h new file mode 100644 index 0000000..f13e925 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/picklebufobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecb05c81e6ec87a0442dd01faa6dea7ff10c81555cb43a8d9d5a0a2ea7e3be92 +size 879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pthread_stubs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pthread_stubs.h new file mode 100644 index 0000000..d84c527 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pthread_stubs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:125515bd49c0bbefbe7b9a4219ee0f671c70e5e8052277dd1bbb00e08da76f8f +size 3593 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyctype.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyctype.h new file mode 100644 index 0000000..44a0c61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyctype.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b0cf2697e86e054d0a0721670d0a8e0318ed9acb05ea0e93cd543e263f2f97a +size 1426 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pydebug.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pydebug.h new file mode 100644 index 0000000..e87d97b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pydebug.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a12471fff6dc26957cc4c8a540d291b1dbb4d1ca1e2181538272520cbbc5077 +size 1451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyerrors.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyerrors.h new file mode 100644 index 0000000..fd65f52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyerrors.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51f18cc3db616dd36af97d54471d31557bfad155cfcf65875cb8f4954cf1566e +size 4454 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyfpe.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyfpe.h new file mode 100644 index 0000000..7e31f60 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyfpe.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8b42e4f39dbc5f267e8e1ff0c4a52b431a422e6cb58c2380826a0c478334316 +size 459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyframe.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyframe.h new file mode 100644 index 0000000..4181d8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pyframe.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7135a048a548202b90582d5f39ff7bcb4456861d4c69640f844a86284f31031 +size 1514 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pylifecycle.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pylifecycle.h new file mode 100644 index 0000000..a145b96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pylifecycle.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3d38d7856b32348f7dffedddf1ba9b65749d7c71bbb931877c33559636b32b2 +size 3534 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pymem.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pymem.h new file mode 100644 index 0000000..1848738 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pymem.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4471ee830a01532450d95b83003dc2a8319267fb5abbfbdea20133db0e640831 +size 3477 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pystate.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pystate.h new file mode 100644 index 0000000..ec75905 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pystate.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2ce906e386c4896a862e4b2ed53733de4e3c3c71923b50066e7a98aa099aea0 +size 17684 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythonrun.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythonrun.h new file mode 100644 index 0000000..822e708 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythonrun.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c415bc5dfcb585dbef4034c8f74f8ffae2844cb7864e67a155c5f9923d3613c +size 5024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythread.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythread.h new file mode 100644 index 0000000..a84e85a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pythread.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5cba29ac2a11a7d31296bd43e5262d28919c91fc1bdedf9d60fecfdc7e100f0 +size 1468 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pytime.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pytime.h new file mode 100644 index 0000000..f606fb1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/pytime.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e525d1bbd1dd162d834b691f4083d1bfd55288971ccb7bae2f3adf460abbc8 +size 12706 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/setobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/setobject.h new file mode 100644 index 0000000..c182389 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/setobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:daea0d49fd15250859f20387b5be4a6c85b6d01d810984d6b6e88263f328c069 +size 2218 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/sysmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/sysmodule.h new file mode 100644 index 0000000..1c22581 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/sysmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de1277a0d20f6c4258ad7b63c6af9377d8eb2a66667cd1c5709616a1e466cb6 +size 505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/traceback.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/traceback.h new file mode 100644 index 0000000..ffdb6e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/traceback.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c8306bdd6f4d5ece7db4f798024f8b59527c314fabb12add093becd41e9f687 +size 460 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/tupleobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/tupleobject.h new file mode 100644 index 0000000..41a9aaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/tupleobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71f4c54d1176f413217f0fc6041b3cfa86e76d692249e685dae51427efdc5818 +size 1416 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/unicodeobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/unicodeobject.h new file mode 100644 index 0000000..48b12ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/unicodeobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e30309cef3121311c2909f98cac72c681c9cd5d01289e10e86cd8f2172abe8fe +size 35430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/warnings.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/warnings.h new file mode 100644 index 0000000..328ec98 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/warnings.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed804f27a16bd31574f523d2539a6efc97164af32589dbe8363df556e05754f2 +size 584 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/weakrefobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/weakrefobject.h new file mode 100644 index 0000000..54d04c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/cpython/weakrefobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f970fdf00aeffc1ef6bc757118540b60fdca99406fc9a7a844409a0d845e7a3f +size 2088 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/datetime.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/datetime.h new file mode 100644 index 0000000..99ec8c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/datetime.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19c1ea449f85e317ba55c23c95732a68f6203c777d8cf17f85c94d0c136eb9a2 +size 10036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/descrobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/descrobject.h new file mode 100644 index 0000000..e375532 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/descrobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4f09c249040a11c26428eaaa0619960a658dfddc20ed34d3d4cf818f2a4867 +size 3180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dictobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dictobject.h new file mode 100644 index 0000000..a083686 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dictobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf8d61d4b6c0ccbd3e25cbcf2c4c90cb59898a9b483b61f38049010c64464f5 +size 3957 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dynamic_annotations.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dynamic_annotations.h new file mode 100644 index 0000000..54f8ab9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/dynamic_annotations.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf89a0c7bf40cf5c97bed63bb8c9c25ed93544833bf4cff483fafac8245c9b0f +size 22970 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/enumobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/enumobject.h new file mode 100644 index 0000000..591f2ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/enumobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:469c8a7bbca8a67fd17bc728a1d6d4225c4c0566475774b5deb655462f058659 +size 270 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/errcode.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/errcode.h new file mode 100644 index 0000000..144ac4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/errcode.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:737d53f8259e5b46765d48c154669a6eece8177cb7b0702039d6c24792c7201e +size 1817 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/exports.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/exports.h new file mode 100644 index 0000000..5f4debc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/exports.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0fb5200d025bb849a1b0d9da5c9d9cb7d3e8634cd1521aae9fc5fc76ff5b623 +size 1303 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileobject.h new file mode 100644 index 0000000..1bfb48f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e912f70d933b6a5c1df1584799671d10b984dab9b940b37eee0e6e1b94378b +size 1699 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileutils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileutils.h new file mode 100644 index 0000000..c021163 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/fileutils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b07ea9c8c3975a1ff9d289b8ddaae2a3bdda2d4b3ad28615950ede52b325f591 +size 533 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/floatobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/floatobject.h new file mode 100644 index 0000000..de27ce9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/floatobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:143630ccf4e2445581db09f8adba2c86d5380eee68d8a752f7f9b9017f109dca +size 1586 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/frameobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/frameobject.h new file mode 100644 index 0000000..5e31caa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/frameobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52e7b1f56da8f7e78a2567fe9af98c6f97250f0bbb81951df4215c8bd1c468f7 +size 356 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/genericaliasobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/genericaliasobject.h new file mode 100644 index 0000000..7e84d89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/genericaliasobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ebd563f70f3d317558774e74916af1c294852fd943e041a79dc46c8fbcc458e +size 348 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/import.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/import.h new file mode 100644 index 0000000..4614123 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/import.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebcedc84109d94b9a1525055bbc5e33997f51a92597525aba037372fdee83065 +size 3131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_abstract.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_abstract.h new file mode 100644 index 0000000..c3ee2a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_abstract.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6543df7069f341cf7e02e74848ba5d8ddcbec7417ff246c774dc53cc2ef6ec09 +size 636 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_asdl.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_asdl.h new file mode 100644 index 0000000..f910cbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_asdl.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:528062fc59b7d04054cf23d05998bbb265681c6c25f192a75f31a91b9c9c061e +size 3147 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast.h new file mode 100644 index 0000000..76b6179 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41bc1cad10a1c5ab356f755564e66bba103bc69299dde37a08e0f2c13bac0968 +size 32210 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast_state.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast_state.h new file mode 100644 index 0000000..14cb9d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ast_state.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f68f3d75b9ce0d2b10484d5a55f432a3253e425f91e22d92699d9a95bb0e4382 +size 7014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atexit.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atexit.h new file mode 100644 index 0000000..44cca1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atexit.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbbcd4a2c8ffe806e232a4ea3f73fc4df5e58e912d5264a6a9b26bf9abd7da72 +size 1206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic.h new file mode 100644 index 0000000..848c0bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f5bf76b7aacc3bdd0b305de42947bce33e20b32a31bd0e7f827756ef45aea07 +size 17536 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic_funcs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic_funcs.h new file mode 100644 index 0000000..ec63d1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_atomic_funcs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e01a0c8ea3e54b1d939c8752539dac42f7c3628d8de7d80837a714616095887 +size 2532 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bitutils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bitutils.h new file mode 100644 index 0000000..231c6dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bitutils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:599354e65503e1fe76fd1d7edf75ba1b0acb2151ca12c541e5de4df207695d5e +size 6248 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_blocks_output_buffer.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_blocks_output_buffer.h new file mode 100644 index 0000000..0f07b40 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_blocks_output_buffer.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d9640645019c4bd889530f95811cbb4e6d85cca8de21744406e117b0f82887c +size 9004 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytes_methods.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytes_methods.h new file mode 100644 index 0000000..22c335d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytes_methods.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f0e14a0e97255a066600ef715824bb4446a7b0951b00d9562aead25db49743a +size 3457 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytesobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytesobject.h new file mode 100644 index 0000000..bcdb7d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_bytesobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2679408bd10568b48680d0ea417cb63e229cfdae02b4345bb42be3b2ebb83a9e +size 1386 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_call.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_call.h new file mode 100644 index 0000000..1c20a8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_call.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0549399b619a2c07617d574056feebac29d15f67df81dfb1febf76b7c418475c +size 4053 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval.h new file mode 100644 index 0000000..07a8a5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc81da71b01275abe5f411dfeac02fe5c01c42e99f8870f7a449ee4d5d674286 +size 5429 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval_state.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval_state.h new file mode 100644 index 0000000..940cd30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ceval_state.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed5ace313d68ca9f1a49ec50f69f2b8b4d39932f7ecc96d59581094718d17a7f +size 2847 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_code.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_code.h new file mode 100644 index 0000000..a9d5e2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_code.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5913280fc2aacede588e7efbb9c861016cba29ca8a286e65b085ea45d94ffaa +size 16331 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_compile.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_compile.h new file mode 100644 index 0000000..0908195 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_compile.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc5862d6f6e585d9a3626a904110eface4b589c53c6fe8cadd3158e1cac5422d +size 3571 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_condvar.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_condvar.h new file mode 100644 index 0000000..b573ac4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_condvar.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b257b9b1c3a0dfa548e2c7e780f9fc8ad388fd640abf55f7501298b8ff07328c +size 2936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_context.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_context.h new file mode 100644 index 0000000..415d095 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_context.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8291e5b2000f38bc725f57a274da271dd39c6dd23fc9081a06704aaa5398b761 +size 1372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_descrobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_descrobject.h new file mode 100644 index 0000000..7761d03 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_descrobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf5838541a43209c9de99d7e2f71fe598b67afc221e669198ebed95b3de4bd9b +size 525 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict.h new file mode 100644 index 0000000..c11e409 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15ab5bb9939e5e9f9691b0c76e4502e8d804b090972bc80b19bc95b167030052 +size 6583 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict_state.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict_state.h new file mode 100644 index 0000000..fc8b533 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dict_state.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aab4cfdbebf00cb44fa58eb33c08084f814c715e00f2e41f3a7da4c95b974b7c +size 1145 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dtoa.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dtoa.h new file mode 100644 index 0000000..fd42099 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_dtoa.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f983ad0f8ea586ddf004cb082c1a4c40b4c6ce497853b3de56b5303bc8d72aec +size 1699 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_emscripten_signal.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_emscripten_signal.h new file mode 100644 index 0000000..829eaaa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_emscripten_signal.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a9789da02c3ff76c175567b3e842009903f800fe4ab65d008d9b9bef4d157e +size 587 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_exceptions.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_exceptions.h new file mode 100644 index 0000000..ccc404d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_exceptions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74e2b1374ff5a4e98774fc0f089914dbba738f32c6ae338336ae97ab03e96436 +size 879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_faulthandler.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_faulthandler.h new file mode 100644 index 0000000..a85d797 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_faulthandler.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65d654ac930664d2586b95094f2d2a142c7a5fc9089481f526d97bafeea1a827 +size 2319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils.h new file mode 100644 index 0000000..98470fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c71b2b4e16ce156d1570f966d607ebd07ad67d9004ef36b74c264ae1f2a2227 +size 8202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils_windows.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils_windows.h new file mode 100644 index 0000000..dfc39f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_fileutils_windows.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2685077f48974f021900d7d324c61291e5c847755b96b548d0667a2a744ff95b +size 2822 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_floatobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_floatobject.h new file mode 100644 index 0000000..204b4b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_floatobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf0271ab04f88d82546808e35afc87ded98fe784c509f29bf8baf201fdadc95e +size 1649 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_flowgraph.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_flowgraph.h new file mode 100644 index 0000000..b9e81e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_flowgraph.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9d349fddb088e4b21b21ade9d7a0588a307ae5ec2c242bb1564cf46f680b74f +size 4750 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_format.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_format.h new file mode 100644 index 0000000..7425714 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_format.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0e56d87f2c63f609632ee20d1208bed13cf0ea445118ebb1d9a7773750195cb +size 507 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_frame.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_frame.h new file mode 100644 index 0000000..9e02f34 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_frame.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:483ac6d2b694c0ab0281166f94fc79fdd9911f2db75cf06241929c6a02883f04 +size 9598 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_function.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_function.h new file mode 100644 index 0000000..40d1c2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_function.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b16a8596049f9b95e4c8a83969e4122b39a88c993ab1c795290d277fecbd533 +size 637 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gc.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gc.h new file mode 100644 index 0000000..8668523 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2848963cb124d322ed0dbe3bf96754c8733e111de51f775bd8573c362bcd6c51 +size 7869 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_genobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_genobject.h new file mode 100644 index 0000000..46a0776 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_genobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31e006a8128f94efea40d2bddfd1477a1277f5e3c351749a3bdb0a325ed54127 +size 1235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_getopt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_getopt.h new file mode 100644 index 0000000..c4514b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_getopt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4592e97f536c2ab2392057abe08caaa0e0e755750f2998d31637e427ec95a05c +size 512 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gil.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gil.h new file mode 100644 index 0000000..b1c7eca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_gil.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6f1e407c086a487b896debe164c7d22678062cafedc8b248e4b5ca9b51d4eab +size 1615 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects.h new file mode 100644 index 0000000..9e56dbe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a9f4ca099649aff8ab3aa9c98ca8c26c161eb6afd50dc216727d6197558307 +size 3140 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects_fini_generated.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects_fini_generated.h new file mode 100644 index 0000000..c04ade0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_objects_fini_generated.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c191af5ef879732e74f138a83574f4c21d48ea44ff1325692f76bca1c992660 +size 117767 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_strings.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_strings.h new file mode 100644 index 0000000..ddeceff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_global_strings.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d17e15e78722d40188cd06420e43cc7d5d05b3a22760ac2aa40f4febd10717e0 +size 26481 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hamt.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hamt.h new file mode 100644 index 0000000..f5d2f87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hamt.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b064c93d0e36cc1ab8ae298c88eb8c2a9d6467224741baa9b946d9088286803 +size 3876 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hashtable.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hashtable.h new file mode 100644 index 0000000..a5123d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_hashtable.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e2b5ed21ce78ab482fe64135530a137084563ff8656e86b4dc7b3167f97accb +size 4435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_import.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_import.h new file mode 100644 index 0000000..356f920 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_import.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e75c974fd3baac69dce401addb733bf39ab222be384c46b3c8c65bc7ee611b24 +size 6541 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_initconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_initconfig.h new file mode 100644 index 0000000..8e9dd92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_initconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e232a772e7a1c71df2738860666dab4203be95e2b0279835d41ffd3f88399f4 +size 5885 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_instruments.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_instruments.h new file mode 100644 index 0000000..ef3aace --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_instruments.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c480ae0cf7acc08ec61062835c8fff2c3cebbe4c684f736263363da7e458710f +size 3104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_interp.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_interp.h new file mode 100644 index 0000000..1701914 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_interp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b6fcf9465d26cc541905b9385c65b08dd04b92a20b2d49311a5194e73cceebe +size 9361 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_intrinsics.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_intrinsics.h new file mode 100644 index 0000000..412edf7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_intrinsics.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae37a5b354f7095315b90d9d6532d87e330057ca015ea6a5630ae2e216b82e11 +size 1429 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_list.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_list.h new file mode 100644 index 0000000..db73fb7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_list.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8880829f9c9304d6a4ad4a4ba953bddc32d80fbaaa9d3b3c8b08ec30647b4cf5 +size 2063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_long.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_long.h new file mode 100644 index 0000000..1eabb05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_long.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9067afa2ca0ce6a989eea17aa6b72dfbe157148725190e7907d88199f4374a45 +size 8063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_memoryobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_memoryobject.h new file mode 100644 index 0000000..f45e5d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_memoryobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df19377f51fe67281cf38d9af9df83a7ad0f7bb2379e7abf763addb1edab0884 +size 401 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_moduleobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_moduleobject.h new file mode 100644 index 0000000..1b4ef46 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_moduleobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:802ace0436705813fddc5a4dbceee466d6ef81b21ad82c4331fd637b1a9d6278 +size 1237 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_namespace.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_namespace.h new file mode 100644 index 0000000..d99e0a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_namespace.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baf192c63b21a85248dd57a16096919451ab2e102a8176e1b22f72b417e8e011 +size 412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object.h new file mode 100644 index 0000000..f44a0d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ab97ee13ac2c1ba3ca23eb18cc9706ccdb04d2ca3255260c28a1bde73a4158d +size 14854 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object_state.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object_state.h new file mode 100644 index 0000000..f05343a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_object_state.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53abd5b87f87db23473394d9b56f82bfc20f959d074b5c90000c1f86adffe344 +size 773 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc.h new file mode 100644 index 0000000..a36ddc9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7721ec80abc9b3961021fd50cd8bf07507a494fdb731fbdd246bca2f36ad2efc +size 27984 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc_init.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc_init.h new file mode 100644 index 0000000..6bd2c68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_obmalloc_init.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1381021c39a84fc45de052692857170e35e3cbc0b2dac4eb236aedc62c3981 +size 2158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode.h new file mode 100644 index 0000000..065152f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:309227c639025bdb3f5d8c912e4cec0a980d05d3deb9c6c7de4c295eefc0ae09 +size 20668 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode_utils.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode_utils.h new file mode 100644 index 0000000..ab4b2c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_opcode_utils.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6b2501da85571202c5748dfb0c7b42aa90ad53c7a2f81827d8208d29f5958f9 +size 2778 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_parser.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_parser.h new file mode 100644 index 0000000..ea3dfe4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_parser.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80ce6400c4b780faf60b3d0c276a44ed97a29772b6143d15beaeabc90325bc90 +size 1424 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pathconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pathconfig.h new file mode 100644 index 0000000..e05d00d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pathconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d1f56de591aa1dd4096f697d6ca8bb15ef3f74c4813779629b923bd584efad4 +size 630 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyarena.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyarena.h new file mode 100644 index 0000000..111fbae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyarena.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a43a0c6d97213d42e810454ad9d82ecc8ae899c53d26a60aaf90d31ee54faf05 +size 2797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyerrors.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyerrors.h new file mode 100644 index 0000000..a7435b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyerrors.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c1a105d56a340ebef77827ead9fe2b54931a005fd54a3e69e20cedc07f3d091 +size 2900 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyhash.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyhash.h new file mode 100644 index 0000000..92a3716 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pyhash.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2958a3e13bef4015d2b40e9e088e0289718f9e539b221b1ae7f2ed4835fe98d +size 749 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pylifecycle.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pylifecycle.h new file mode 100644 index 0000000..4c25d6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pylifecycle.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceb30923ff67a97ed996f0449144acaa988d08784cde0e4a4cbb057994b4c4fd +size 3464 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymath.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymath.h new file mode 100644 index 0000000..6bc0bcc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymath.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42fd1528b6df8484b7c64308f399f11c806c497ee32bf2d94e0cbf407bd7fb0d +size 8805 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem.h new file mode 100644 index 0000000..0ba17ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eda5669c9ffff1cc6232ebb3f5f858a4a0045e8f4b4d09c6ef7ab057ba74dcba +size 3138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem_init.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem_init.h new file mode 100644 index 0000000..1f5a16b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pymem_init.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcaa175ca734a34412e8b064eabeda357699d147c72df6ed0a6333b3947b2a41 +size 2739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pystate.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pystate.h new file mode 100644 index 0000000..fb6e8d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pystate.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8103199535d13cdb918ad257106623b69ca94efba9fc23c7fb71185084a7d7f2 +size 5162 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pythread.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pythread.h new file mode 100644 index 0000000..ac1a819 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_pythread.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:430f9915130cdea46c7aa3c4fb14d699cf2ce0ada1391917ebc739a2ab834128 +size 2156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_range.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_range.h new file mode 100644 index 0000000..4bd7c4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_range.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5eb6ba5f8698c73a2c7ed116473f70de41373afdb011dc9efdc4fb4ccf9a466 +size 367 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime.h new file mode 100644 index 0000000..5d1c434 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da06d3a2035a1744222bc95cb2822aea59415443c2b95e78ab18fa61327e5265 +size 8664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init.h new file mode 100644 index 0000000..b80838a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da712d16e1d76de44a59c6be4be4deed1eb04aceee3426288bb341370682e1d1 +size 6282 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init_generated.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init_generated.h new file mode 100644 index 0000000..2d4f4ff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_runtime_init_generated.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8f5eacd984725770b981c8cb77be78f5381699523a184efe7db2e7ba723c265 +size 47592 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_signal.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_signal.h new file mode 100644 index 0000000..136509f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_signal.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e296ed1763c2f083913f7817441f214f5ee2ebf611f741a72ab90107fc5fb07b +size 2709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sliceobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sliceobject.h new file mode 100644 index 0000000..22a9c72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sliceobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:344790e9461fee92f52359685c00b1b8b781f0b11ee12621f6a8bed320e03965 +size 436 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_strhex.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_strhex.h new file mode 100644 index 0000000..432a0ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_strhex.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57ead535e7f16a387ce14c7b4ffa1c9086a03d53ebce25fa3c6d7aff06413eda +size 973 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_structseq.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_structseq.h new file mode 100644 index 0000000..508b3d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_structseq.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3dedc26e3ccd9829e256ade405ea71b92ba4947e39c8366d06ddfc2f9966c98 +size 962 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_symtable.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_symtable.h new file mode 100644 index 0000000..cb78ad1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_symtable.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17ec1d858791ede6a89d9bd0383996dd0452400088c32d3a0d4d39e773d3d7cd +size 7195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sysmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sysmodule.h new file mode 100644 index 0000000..18452fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_sysmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d2c253c17453e4178747221ee27bd1a9a7b0c894ed76c7b578aefd7ea29fd04 +size 763 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_time.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_time.h new file mode 100644 index 0000000..0df472c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_time.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cbf892a21b2d86179bcf5d590604ccd3c9d02b90f6506f0b4291181ea00313e +size 413 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_token.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_token.h new file mode 100644 index 0000000..e21dd14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_token.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0add32ae018b32ba99e24313450c488111ad3cb259f3f7c329f6b99742502bed +size 3158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_traceback.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_traceback.h new file mode 100644 index 0000000..9f853eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_traceback.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a74237545502b63f687aff160c9858746a215b0e94903250631f3bb257842d5 +size 3602 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tracemalloc.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tracemalloc.h new file mode 100644 index 0000000..afb504c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tracemalloc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b984a5a5b332215fa7d6fe93fe6e3805132d13448d09922f109d7d358ee32e6e +size 3198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tuple.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tuple.h new file mode 100644 index 0000000..eb47554 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_tuple.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e031a72a510a2d6c77b0f00019c80f7b580a54aa05121e8e8da840c4b9ba245e +size 2276 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typeobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typeobject.h new file mode 100644 index 0000000..7a821d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typeobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:900f820bd0943198d88aa04c9d03d727d3cec4d6a9ff342338809f19a1053d16 +size 4818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typevarobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typevarobject.h new file mode 100644 index 0000000..8fd800e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_typevarobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c678d5bc7dac629e8d659bdcf3dfa4fab2911f33bb215bc442dfc9a134757563 +size 787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ucnhash.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ucnhash.h new file mode 100644 index 0000000..052f38b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_ucnhash.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13ff6a5688e724b4b560ea4e3b3bd787f0edbb8b0ddeb5028a77d5f094b25a77 +size 932 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject.h new file mode 100644 index 0000000..469cac9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8813c57a05f9fb21998bee8a23fdaad993c9a4217354ce078cfda05883c4386c +size 2036 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject_generated.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject_generated.h new file mode 100644 index 0000000..f886664 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unicodeobject_generated.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3eabe600eedae5dc305f1fdb83d8082a4c1d1d147e05d280c488ed00c4591b59 +size 93678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unionobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unionobject.h new file mode 100644 index 0000000..7f9d9f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_unionobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bc8d52b0338b64f754ba21d7ca71f0ef2925dc022766a1d1dc8071ebb5cf88b +size 705 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_warnings.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_warnings.h new file mode 100644 index 0000000..dc2bb2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/internal/pycore_warnings.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75293776d2b802a9ed353467d386db8b0fe897f7e23bd64de97ea951f2c84890 +size 769 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/interpreteridobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/interpreteridobject.h new file mode 100644 index 0000000..9595f48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/interpreteridobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f6df60c006d873772426d42e4a18b0a7a303ce43fe1b2fe06104f02ce38b629 +size 350 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/intrcheck.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/intrcheck.h new file mode 100644 index 0000000..048d488 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/intrcheck.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16492246bf15a2d1fa3e53b2d3bb7d7651ef4ccaa46bb4089cac8f3c84f6df7f +size 802 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/iterobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/iterobject.h new file mode 100644 index 0000000..6e94f8b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/iterobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2c2ab0eedc2b48cb982b51bf43352ea63cbacc2bcab9cb5f00fa247f5d95819 +size 624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/listobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/listobject.h new file mode 100644 index 0000000..b4941d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/listobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00899f5ed695a936a387cbaa122cc21959566fd6c36a2b886459c5d1c5959de5 +size 1834 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/longobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/longobject.h new file mode 100644 index 0000000..3e06021 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/longobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4f8bcf10f4dbed58ec7d6d04bd92a1852e951a270fefaf5d191f91b5c84226e +size 3847 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/marshal.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/marshal.h new file mode 100644 index 0000000..e55238f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/marshal.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f8d8b4453b83b023176fc156435330e25bcbf0b36e18106429824abc69269d5 +size 858 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/memoryobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/memoryobject.h new file mode 100644 index 0000000..7984bb3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/memoryobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76a9031fa94c7d9a8681fab065f9cee0bbd9c91f4355b91bc407bf992c100796 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/methodobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/methodobject.h new file mode 100644 index 0000000..3bedb32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/methodobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1c4e87ed7d30ddc56f04614b3b389fa5565818e575eeb761eb1691463e0292a +size 5208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/modsupport.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/modsupport.h new file mode 100644 index 0000000..34968fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/modsupport.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3de44c07d6a002d320b680854019675ad9d4610517f48b4187a4e8f5bc100ad +size 6683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/moduleobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/moduleobject.h new file mode 100644 index 0000000..5c8651e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/moduleobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8b1d556783b6bd0eaaa1e7a670df6a1f217666c6b80130049db6ddb8554d95f +size 3678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/object.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/object.h new file mode 100644 index 0000000..af52e5d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/object.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9485a0379172b12de69e52aaf3ad061babf3db4d67ea80027a1f5fcb40eeae6e +size 38148 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/objimpl.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/objimpl.h new file mode 100644 index 0000000..bf4ebc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/objimpl.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91c4377012c9610217614939bd045819a6dc92ec7bf7aa590b730a65c9577bcc +size 9472 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/opcode.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/opcode.h new file mode 100644 index 0000000..6723039 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/opcode.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8363339abfe2a87fe3936ce3c35175d3f7d5db37463922540a0f8401b1c097f6 +size 13079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osdefs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osdefs.h new file mode 100644 index 0000000..3e55e1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osdefs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a32fd8d498c342b0263917a1ccadff7a8d7cadc9b7dc711c822bfa3ec756893b +size 788 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osmodule.h new file mode 100644 index 0000000..19f816b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/osmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3cf9eb8d709f9032e86e9ecefdf2a26fdfcf5f3a0afb6c3a1b470e8e97d6a0b +size 308 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/patchlevel.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/patchlevel.h new file mode 100644 index 0000000..b530bfb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/patchlevel.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f24a0e8dda724726c6dc101db3489a99698152fce4fb74480f974ec5733c4db3 +size 1334 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/py_curses.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/py_curses.h new file mode 100644 index 0000000..6bc3c7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/py_curses.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b6edb73fd01255585ea69f7ee2e088e59b9928ae808153559a463b245f21389 +size 2572 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pybuffer.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pybuffer.h new file mode 100644 index 0000000..8648cd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pybuffer.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d147574d7beea4f959763520bb1aac472f1b9e3392e2de07d230ce21a3b7ed2 +size 5427 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pycapsule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pycapsule.h new file mode 100644 index 0000000..4b44a41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pycapsule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4672d7eca787b0de64f733f11a6937260440b668869090a310d7aac35dcd678 +size 1786 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyconfig.h new file mode 100644 index 0000000..bbe84cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d3b0e35fd3511a9b6a7312941b1f20dd26f06c18574aa53a5923d86bd39b919 +size 22770 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pydtrace.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pydtrace.h new file mode 100644 index 0000000..61d97d1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pydtrace.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab4304567d6f16e04159ada9734d05b3f3c12c48de39ec1386f38adb3c5012bd +size 2463 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyerrors.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyerrors.h new file mode 100644 index 0000000..d17c548 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyerrors.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5e3d3a24ae4e35c694373c5af52431f615a5b8da1050c8cc0d0eaec743cbe8e +size 13354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyexpat.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyexpat.h new file mode 100644 index 0000000..964d184 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyexpat.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3184380d037e557f3ea5080028dfbffdd57b25074f0f7772491a24ebae404ab6 +size 2629 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyframe.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyframe.h new file mode 100644 index 0000000..a27819d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyframe.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9bf8550e78682111c980dbe556b7337fd6c23cf99c2b604180a59161b1ace6a +size 577 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyhash.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyhash.h new file mode 100644 index 0000000..d3c86dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyhash.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12e61f600b74a9ed310684aeee1d90fc18acbda7996e5c33942e2cd610491e8b +size 4298 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pylifecycle.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pylifecycle.h new file mode 100644 index 0000000..ff1072c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pylifecycle.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dae21f8fa25d4b71d195ef2f0a4e079b523bace866025883158bb6cf2a765e37 +size 2327 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacconfig.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacconfig.h new file mode 100644 index 0000000..4354f6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacconfig.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24e1ad823600b4977d07834fb397fadc4c9e011649be25eb6bb77d9a24287fbe +size 2909 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacro.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacro.h new file mode 100644 index 0000000..2ded63e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymacro.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53fd1cb57064c35fc586583f2d61b277342c992c305762575f459406a17f1b6f +size 6481 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymath.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymath.h new file mode 100644 index 0000000..67dd048 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymath.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:935d36ed3717ce1240b36e4a9b1124d40c17d907071b564571ed97a6e83156ba +size 1750 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymem.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymem.h new file mode 100644 index 0000000..3a0c054 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pymem.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00f511d0272b15fa197250f069d943a1fae72d644e567a608c880232d7522337 +size 4018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyport.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyport.h new file mode 100644 index 0000000..1a37832 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pyport.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:332ac78d8264c99073ee06efaac3eea46053b46c42eb48deb953c6baeec1f623 +size 26375 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystate.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystate.h new file mode 100644 index 0000000..b21e56e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystate.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:811143ade21a7c02de7aeadf524fa06f31b5babf8344ce32f657546a3cf93825 +size 4767 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystats.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystats.h new file mode 100644 index 0000000..14b9139 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystats.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adac35bf8ec736a70939ff6e8c22ae726d26b0681916bc7848dfdae73676fc0d +size 2851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrcmp.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrcmp.h new file mode 100644 index 0000000..e9b9ca8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrcmp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dd23b6fb3b7a7fef62b33170a7215f0b68f2cdd6edba5548d0d563c5b124055 +size 459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrtod.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrtod.h new file mode 100644 index 0000000..2f69782 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pystrtod.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc01db06c999e075bf5a2e4db6ddaceb1bb5bafe201dcbd39c6969a37c29213c +size 1603 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythonrun.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythonrun.h new file mode 100644 index 0000000..112deb1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythonrun.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2d57b6e0a1c7409a6564d9c8bbf2ff4123952fc8b995c20c222845f76139db9 +size 1362 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythread.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythread.h new file mode 100644 index 0000000..8dc82e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pythread.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a5ac1d509b82becc23c95e521aef251722b4a7a939906c102ceeb0e6c6d3d7b +size 5010 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pytypedefs.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pytypedefs.h new file mode 100644 index 0000000..e6a01c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/pytypedefs.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe86e7dff6e86b1f0c81991db870d31fd5e38e3c7fdc7e898bd908876b38029 +size 881 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/rangeobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/rangeobject.h new file mode 100644 index 0000000..2bf0ced --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/rangeobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b923dc6cc084607666daa74eb05d5893bdd0a83b1023b4794794fedf77b10d34 +size 657 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/setobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/setobject.h new file mode 100644 index 0000000..e4d69bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/setobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ec874216eec40f88f61d9e473298f9aa0f7b9d21d897858b9ef439d7310a59c +size 1606 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sliceobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sliceobject.h new file mode 100644 index 0000000..eea3c97 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sliceobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d3160778e2df3be789a2631b08d1d954f3ca434ea399b49881a9a62cb87c29b +size 2583 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structmember.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structmember.h new file mode 100644 index 0000000..6df6913 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structmember.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e20883b9a81f1fc559dd89b1c454c86adaeccf37241eddfa2321e325ff0d612f +size 1701 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structseq.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structseq.h new file mode 100644 index 0000000..dc83e51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/structseq.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6477d33201766f5dc079b20018aee48ba6d489bb03f67e10a8c3b640695ffe91 +size 1447 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sysmodule.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sysmodule.h new file mode 100644 index 0000000..cb626ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/sysmodule.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e411229c5536f6f83272e896db1765ec1827eb84573e0724e87c66cfcb0e0049 +size 1783 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/traceback.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/traceback.h new file mode 100644 index 0000000..a66ad56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/traceback.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e04e98f4be7ea98b6d3ff299dd345ae69c2808628d01299d6f451e1c9d0de009 +size 611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tracemalloc.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tracemalloc.h new file mode 100644 index 0000000..1c99561 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tracemalloc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:302858195f96a5f4618d8421d07d3ff53c7b95b0228917f8d3b92aebf944d476 +size 2264 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tupleobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tupleobject.h new file mode 100644 index 0000000..5a4c2a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/tupleobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b44f7c8a2d0b97a1e1d7d0af41d26f49108781f34267e22c79bb5ab700855ff +size 1661 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/typeslots.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/typeslots.h new file mode 100644 index 0000000..dbf2bdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/typeslots.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0de9c630d01ead35dfb5346b7cfe43858e465ea1c394f72a784ddd64141751 +size 2430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/unicodeobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/unicodeobject.h new file mode 100644 index 0000000..b3909d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/unicodeobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72cceedb5d11684543c2cbd4dcacd44c5942fbadcdb030ca74c115f02a871832 +size 36184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/warnings.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/warnings.h new file mode 100644 index 0000000..1a26e25 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/warnings.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0bdc1c452bf8cd25d64c0236ce4a6769793ece14fa5c98d7105e4222248fac4 +size 1174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/weakrefobject.h b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/weakrefobject.h new file mode 100644 index 0000000..b4d6960 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/include/weakrefobject.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a8a9ca61ff3ebd6203765e11a0212c6ad9284e66ebb7ea4ec72eceeca3937ce +size 1276 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/_tkinter.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/_tkinter.lib new file mode 100644 index 0000000..c190398 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/_tkinter.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:012b99593a2939a2042ae4ce95e11893a7661b126a39e44c8d936a06a4bd5917 +size 1750 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python3.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python3.lib new file mode 100644 index 0000000..4c8fe43 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python3.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a70dfb782362abe084c969c24495dbc518a39e6e17e0087c68f03312c26cb6b3 +size 186296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python312.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python312.lib new file mode 100644 index 0000000..456161c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/libs/python312.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca645ccb4450f1526893b01a8b895ca6f438b7ae145e77968812086f3b8a906d +size 377824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140.dll new file mode 100644 index 0000000..e71a456 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4c2229bdc2a2a630acdc095b4d86008e5c3e3bc7773174354f3da4f5beb9cde +size 575056 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_1.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_1.dll new file mode 100644 index 0000000..f004c44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91cd05c16c61c39788c47434602a59c17f5b08dbb3eee04ce85f8d5b70e8e604 +size 35808 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_2.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_2.dll new file mode 100644 index 0000000..64b1b55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_2.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:713f17b253d802d283d306ce75647e37d83a546aeb1a881e5d9e529e856c007e +size 268880 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_atomic_wait.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_atomic_wait.dll new file mode 100644 index 0000000..0d61f6c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_atomic_wait.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aede4ec454a82f146eb4a721e616e2086870107d88aabc6b0bd1eea0a505d935 +size 50664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_codecvt_ids.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_codecvt_ids.dll new file mode 100644 index 0000000..7e77499 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/msvcp140_codecvt_ids.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d52d349fbbe6abc61965c07e04cc82d8ee0cea1de7faf90a838964e3f40acedd +size 31744 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python.exe new file mode 100644 index 0000000..c7a97fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd5c46d73d29ba21b04c844bbaf9096066136526911230645a2a040d23fb612b +size 103704 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python3.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python3.dll new file mode 100644 index 0000000..9a34f9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python3.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5146005c36455e7ede4b8ecc0dc6f6fa8ea6b4a99fedbabc1994ae27dfab9d1b +size 68376 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python312.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python312.dll new file mode 100644 index 0000000..b3a0636 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/python312.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21700f0bad5769a1b61ea408dc0a140ffd0a356a774c6eb0cc70e574b929d2e2 +size 6926616 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/pythonw.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/pythonw.exe new file mode 100644 index 0000000..b2152fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/pythonw.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a0f0ce3d8c05598a5bf13a721886ed67af8158bc3f62ecacc3380a9622b8361 +size 102168 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/pkgIndex.tcl new file mode 100644 index 0000000..8ef9681 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64d08a3abcb271db3af043c535e045f7c325348d87a349a76864637baedd2554 +size 474 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/tcldde14.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/tcldde14.dll new file mode 100644 index 0000000..8ddd8a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/dde1.4/tcldde14.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b6a1b97f9baf246e0fd6a4052c02572724bfa37eba0460d9069e39f382a1b3d +size 25600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/nmakehlp.c b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/nmakehlp.c new file mode 100644 index 0000000..7ad2603 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/nmakehlp.c @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d4c390698ea24cb1c2ab0166c7c302ec056d841dc9f4b01979128824bcfc504 +size 21940 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/rules.vc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/rules.vc new file mode 100644 index 0000000..f5e3221 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/rules.vc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a830ebdbe6c06293fbb3f1cab39ef51c55fbcacc13df7713871c0e9bd875684 +size 62846 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/targets.vc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/targets.vc new file mode 100644 index 0000000..71dd0bb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/targets.vc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f59ba7c8050de1ce04ede45f1f8a8488cfe7748bf9a0d845d550cd31451e2b +size 2606 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/tcl.nmake b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/tcl.nmake new file mode 100644 index 0000000..3daa628 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/tcl.nmake @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03589b111b1a9a4daca7fc3014f9f0ade84e875948be925e30726423c063089e +size 87 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/x86_64-w64-mingw32-nmakehlp.exe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/x86_64-w64-mingw32-nmakehlp.exe new file mode 100644 index 0000000..424670d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/nmake/x86_64-w64-mingw32-nmakehlp.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f411c0bd9ed9a42b0f07ed568c7d0cf358a83063b225a1f8f7da3296dde90f1 +size 25600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/pkgIndex.tcl new file mode 100644 index 0000000..6d0a24f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bd0fc8cba2bb1cdd5e5cfcc614b0ef4c8cf4698904d1e48c0f103519c5579e0 +size 367 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/tclreg13.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/tclreg13.dll new file mode 100644 index 0000000..4b0284a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/reg1.3/tclreg13.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cc348b30b1b7c130aa7adbd325972fb91a475895b1ab827150bdb923fa6a5d6 +size 22016 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/auto.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/auto.tcl new file mode 100644 index 0000000..eda7e26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/auto.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:517204ee436d08efc287abc97433c3bffcaf42ec6592a3009b9fd3b985ad772c +size 21523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/clock.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/clock.tcl new file mode 100644 index 0000000..d03c3ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/clock.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1947f8b188ab4ab6aa72ea68a58d2d9add0894fdf320f6b074eae0f198368fb7 +size 133439 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ascii.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ascii.enc new file mode 100644 index 0000000..4bb1cef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ascii.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb87bf197f4f485b08ea81f7534bc07d9c3a538d022424be11011a1fe3c413fd +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/big5.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/big5.enc new file mode 100644 index 0000000..ac50b75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/big5.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad1ed201b69855bfd353bf969dfc55576da35a963abf1bf7fc6d8b5142a61a61 +size 94389 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cns11643.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cns11643.enc new file mode 100644 index 0000000..039147d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cns11643.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8924545cc92584169138aadb64683c07bbf846a57014c2e668d23b63f43f3610 +size 98634 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1250.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1250.enc new file mode 100644 index 0000000..ef48e35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1250.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2991a6f7a7a4d8d3c4c97947298fd5bacb3eaa2f898cee17f5e21a9861b9626 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1251.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1251.enc new file mode 100644 index 0000000..0efb663 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1251.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0aa66dff8a7ae570fee83a803f8f5391d9f0c9bd6311796592d9b6e8e36be6fc +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1252.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1252.enc new file mode 100644 index 0000000..c412a75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1252.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741859cf238c3a63bbb20ec6ed51e46451372bb221cfff438297d261d0561c2e +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1253.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1253.enc new file mode 100644 index 0000000..7efc7c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1253.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b8d47451f847c1bde12caca3739ca29860553c0b6399ee990d51b26f9a69722 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1254.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1254.enc new file mode 100644 index 0000000..1caf8f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1254.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31639ca96a4d3602d59bd012540fe179917e0561cb11a0d0b61f1b950eb76911 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1255.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1255.enc new file mode 100644 index 0000000..2b5396f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1255.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47576cae321c80e69c7f35205639680bf28010111e86e228ed191b084fac6b91 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1256.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1256.enc new file mode 100644 index 0000000..4442ea6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1256.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29340ea8e5ad3532bf67fa77cc852f055081b1238925cb109908aa72804ccc04 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1257.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1257.enc new file mode 100644 index 0000000..e57a6ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1257.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c15ab85438728bf2c60d72b1a66af80e8b1ce3cf5eb08ba6421ff1b2f73acdf4 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1258.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1258.enc new file mode 100644 index 0000000..1755876 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp1258.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29d93dee7c01b2264778bc6b75f6ef76ea6ac53e9f4a334d83707229e7f482d2 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp437.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp437.enc new file mode 100644 index 0000000..91f0329 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp437.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5613c04d3d2ee44ccad85ae53a37c257674491c540836e5d942bbcc4e4a8db4 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp737.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp737.enc new file mode 100644 index 0000000..946e4d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp737.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0415f14f5d72ad24e9c3a5c91517a0e3d22e1adbc3505c0c6e918b961f7a07d +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp775.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp775.enc new file mode 100644 index 0000000..2a55285 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp775.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3c6542e902dec2c44ddcfd8b5cb7abf309b0413a7ced1614dc0b20cf7c5e35f +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp850.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp850.enc new file mode 100644 index 0000000..ad4a0b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp850.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13df611f429a9b331da1b34f3c718cccaf0bd4ab44f71a9c632197987b4d643b +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp852.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp852.enc new file mode 100644 index 0000000..85dec95 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp852.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3a18a8c7934f6586f023477e08d3f9d5ead9a45e9e58a3f8d018af9bb13f868 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp855.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp855.enc new file mode 100644 index 0000000..0c25509 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp855.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64fd2e639da6f654d9bfbb2266f9432259a6a55941622f5cddc3797e382eb0a +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp857.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp857.enc new file mode 100644 index 0000000..6fbcf5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp857.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6cd5c6f2b54d89142679d599ed0a5dee6955a3b3f6b6673e46afe7a5a303cdc +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp860.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp860.enc new file mode 100644 index 0000000..e4f5647 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp860.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:804efa345c5bbbad2449c318a7a3f5b31f4234712aad23dc49b3fb5aa33b7a57 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp861.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp861.enc new file mode 100644 index 0000000..a7bea94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp861.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7e76aeb75289faca76434ea6e9874e9504ad2bc3d8d47550eadbcc8294857e +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp862.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp862.enc new file mode 100644 index 0000000..9c5876e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp862.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c15cb256b1c22170292589c6f589e64e164eb36ec7e84f0bd48149babb7c5fc +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp863.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp863.enc new file mode 100644 index 0000000..8935986 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp863.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232d6fe34d7151920232eaae9c515f36400ab64136dcc5b802d6245ac6f5d56b +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp864.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp864.enc new file mode 100644 index 0000000..48f8366 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp864.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81bebfd9a61e9f17495763b68d57742fab2a1a43871015699a2c8e5fded4ec19 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp865.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp865.enc new file mode 100644 index 0000000..81ac878 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp865.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ada1a52064ee93ebe6f8a5d101d01f8776038e12f21a5ca1c006ee833577c705 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp866.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp866.enc new file mode 100644 index 0000000..874a35d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp866.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32a45deba933c7ed99141535087a4c99ba79802175e3f762aca6eb941157f85a +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp869.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp869.enc new file mode 100644 index 0000000..1c00661 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp869.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe6ed6eb5d07c45b6b928a48bc5ef57efcf61602d36ff9fbde4a8ea3fa6df75 +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp874.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp874.enc new file mode 100644 index 0000000..c8c034b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp874.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f05f31ca026bbfeeee49ed86504cb060784137a9cfae0e5954d276e837ab5de +size 1110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp932.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp932.enc new file mode 100644 index 0000000..417a63d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp932.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d1b512110beaf2cd1296ac878f51d567848ab4a1ced4f18c72806bb136b3d23 +size 49008 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp936.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp936.enc new file mode 100644 index 0000000..7e18fd8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp936.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6ec2be0504ca62b9d1b6857f6baa13ffac5a567d4432f4eab98adc830f5d9c3 +size 134671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp949.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp949.enc new file mode 100644 index 0000000..9b8c4f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp949.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:477f8b79b67f4a22c963ee65b9b387dbd8e4b8f62d800b0a51d2276580c6adbb +size 132551 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp950.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp950.enc new file mode 100644 index 0000000..a66c290 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/cp950.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f80e05533d1a1494c32f9412e9ad2d9c11faf9ae0668a6f9d1fa5ceedc6870e2 +size 93330 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/dingbats.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/dingbats.enc new file mode 100644 index 0000000..72a12f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/dingbats.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb9b262e4d179268e6f017c0d4ef0e7034e31a5b4893595d150640ca1f6a1c45 +size 1113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ebcdic.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ebcdic.enc new file mode 100644 index 0000000..baf5246 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ebcdic.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:165be658ab7d61ffc3df1e2f1438c2f9fcee6808a756316302157f44e6d3acd7 +size 1073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-cn.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-cn.enc new file mode 100644 index 0000000..78338b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-cn.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1700af47dc012a48cec89cf1dfae6d1d0d2f40ed731eff6ca55296a055a11c00 +size 86971 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-jp.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-jp.enc new file mode 100644 index 0000000..dcb48f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-jp.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c916ba16bcac9faa5a1ccc62aca61452d581cd8ba3ee07ec39122c697274c9 +size 83890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-kr.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-kr.enc new file mode 100644 index 0000000..d6f23e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/euc-kr.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5448643398685456a11cbb93af2321f70b8659e2fff3ccc534b4d53bd2f38c89 +size 95451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb12345.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb12345.enc new file mode 100644 index 0000000..53ef65e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb12345.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4894aedd2d5b5ae54b6d2840f7c89a88e9308efd288f179e65936e172ef4b0d +size 88033 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb1988.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb1988.enc new file mode 100644 index 0000000..e5be594 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb1988.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acd50951f81566c8d823670f9957b2479102eb5ae4cf558453e1d8436a9e31ff +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312-raw.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312-raw.enc new file mode 100644 index 0000000..0344220 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312-raw.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c445e4c9f676ae997d2dda2bbc107b746f3547d85f39479951c56f46275ee355 +size 85912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312.enc new file mode 100644 index 0000000..78338b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/gb2312.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1700af47dc012a48cec89cf1dfae6d1d0d2f40ed731eff6ca55296a055a11c00 +size 86971 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-jp.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-jp.enc new file mode 100644 index 0000000..0701b06 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-jp.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98074c85650a420a095ada9138da3a8a0aa4027be47ea1e97a596f319eb084e9 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-kr.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-kr.enc new file mode 100644 index 0000000..6714c17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022-kr.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:234811fc8b0f8ff2b847d9cc3982f1699df1d21a43c74dce45ba855d22520007 +size 122 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022.enc new file mode 100644 index 0000000..1fba959 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso2022.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741b4c842557eed2952936204d0ae9c35fa3a0f02f826d94c50c46976291797c +size 240 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-1.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-1.enc new file mode 100644 index 0000000..16dbb94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-1.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9cb4f4ca111608f882729bc5eb1c2f15530c515ef02dd2ca62f2d8dc5a210cf +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-10.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-10.enc new file mode 100644 index 0000000..35170ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-10.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f4a239c25354f0e9f83a39f15d4632bb18a9c33e60c671c67307159917eced +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-11.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-11.enc new file mode 100644 index 0000000..523230f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-11.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21e769c5a66e4d12d6e7db24022e92af1ec0d0331fe3c8c605654f239c0f3640 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-13.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-13.enc new file mode 100644 index 0000000..829f87d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-13.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3271d39d7b4dcd841e8e5d5153d1b8837718b88fefec73dc37d314816eefe5e5 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-14.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-14.enc new file mode 100644 index 0000000..d4b3faa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-14.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0a5675027fb1ca34b4e4128d24c2968cd275890569a32a86afa4994ce4983e0 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-15.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-15.enc new file mode 100644 index 0000000..5626c96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-15.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c74e8e23a0ff0d5dea7c318ca20dc817da4e57b0dd61b3361fc0d5098a9316fe +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-16.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-16.enc new file mode 100644 index 0000000..d9bc41e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-16.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:640d977ec1d22b555c5075798da009e3523e8f55f29be22a3050cd1b4ef7b80e +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-2.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-2.enc new file mode 100644 index 0000000..a78466a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-2.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76949b03f57041b07f41902bd7505ab3594d79aa8f7bdeed5f0481004b10cbc3 +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-3.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-3.enc new file mode 100644 index 0000000..21712e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-3.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f51e7bda64d466c16fee9a120bbe3353a10ceb9dab119ffa326779ba78d8c5d +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-4.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-4.enc new file mode 100644 index 0000000..09c4f42 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-4.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66b3cf994f0b5e0103d13e812958320afb555c91e3f81b579d4cbf231e6a0805 +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-5.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-5.enc new file mode 100644 index 0000000..51488a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-5.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3130bf26da0c840c1e02203a90c3b1c38966fb203130e2fbb3dd7cb3865a3539 +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-6.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-6.enc new file mode 100644 index 0000000..159ac71 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-6.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb71909bf01a3a7a4c7396359da06d206b58a42ad68192ce37169d6640d46e13 +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-7.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-7.enc new file mode 100644 index 0000000..cceced2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-7.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f6bc85fc9cb89bc3f94d36275ab23c740ba17fd36ec8907479da3a885415ea +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-8.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-8.enc new file mode 100644 index 0000000..8dccb94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-8.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:865e3665743b5faba3e1ad6aa55515a666bd05da6266879d9b66c98905daff3c +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-9.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-9.enc new file mode 100644 index 0000000..b93312b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/iso8859-9.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf51e867dde2f19553d98feec45a075c4b4f480fb1edadb3d8dad1ebea9299f3 +size 1114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0201.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0201.enc new file mode 100644 index 0000000..066213a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0201.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61b14a7c312366f79bb45f02c6b7ee362e6f51cbad5e479e563c7f7e785db654 +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0208.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0208.enc new file mode 100644 index 0000000..630fcff --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0208.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6b1c6ac5f5fc4e990a7a1aac16a406012040936431befe7d2b6cd1da9e422c4 +size 81772 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0212.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0212.enc new file mode 100644 index 0000000..5643ac2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/jis0212.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:785cfc5f5d9cb06db8061730ab0016a0f70d0b59f6787d2a3cbb8d5779c99706 +size 72133 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-r.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-r.enc new file mode 100644 index 0000000..b2d1dc8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-r.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e43244bfc4f33facb844b9e00270a1a4c24dc59b8a9b95104e2d788bb2f59fd +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-u.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-u.enc new file mode 100644 index 0000000..3786bd0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/koi8-u.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed04d5b977b8c8944d8760b713ff061292da5634bcbb67cdfb1c3a6ff5378c81 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ksc5601.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ksc5601.enc new file mode 100644 index 0000000..46350c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/ksc5601.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b27fe7e7054f36e279993f19e52e18ac03360d117ae80c42b4e984a97c590aa +size 94393 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCentEuro.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCentEuro.enc new file mode 100644 index 0000000..2c2cdd3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCentEuro.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81eca6840b87f2def9fcdd171a55c2d71a49386d88401ce927ae57d7ddd7aaaa +size 1116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCroatian.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCroatian.enc new file mode 100644 index 0000000..c60cbfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCroatian.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbe6f5ebb5eab08c91df7d524faf39b03aa8b9f84c67aba0553a84ec56668cb9 +size 1116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCyrillic.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCyrillic.enc new file mode 100644 index 0000000..3c72143 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macCyrillic.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76efe571adda7aed467f146cb0bd3a2351f2a720508ea0642c419f5347789caa +size 1116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macDingbats.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macDingbats.enc new file mode 100644 index 0000000..d4f41ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macDingbats.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:062e31d48dc33160999074e49205e08c3655dff91c2c87f254522e6ebce2dd96 +size 1116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macGreek.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macGreek.enc new file mode 100644 index 0000000..7935a1d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macGreek.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aabe561b5c944abd11c293d4acac0f3a4a5a9e84a0342d066f4e3e992348895 +size 1113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macIceland.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macIceland.enc new file mode 100644 index 0000000..9538ee9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macIceland.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd08ce6fba521d51e8058de5c2dbd6583b80306a8be7d015361f76314e70a35 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macJapan.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macJapan.enc new file mode 100644 index 0000000..e5103f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macJapan.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47007d9ebf4d34c6ce3599e50afc7c1cf8129b88994de2c2a857c09003f9cd2b +size 48813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRoman.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRoman.enc new file mode 100644 index 0000000..bf8ec84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRoman.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c83d971d6bc0284ef323c197896e38c57a5ff44784e451ec2997eda70c0dd85c +size 1113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRomania.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRomania.enc new file mode 100644 index 0000000..cbefcfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macRomania.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b805daf21d37d702617a8c72c7345f857695108d905ff378791f291cea150f0 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macThai.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macThai.enc new file mode 100644 index 0000000..cea48b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macThai.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1802a2feb01b255ec7c17425eee4525372df8ce226f4047d149172eb438f913 +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macTurkish.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macTurkish.enc new file mode 100644 index 0000000..fc44b61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macTurkish.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afb66138ebe9b87d8b070fe3b6e7d1a05ed508571e9e5b166c3314069d59b4e4 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macUkraine.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macUkraine.enc new file mode 100644 index 0000000..a3489d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/macUkraine.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7e11736c9ff30102b31ec72272754110193b347433f4b364921e8f131c92bf0 +size 1115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/shiftjis.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/shiftjis.enc new file mode 100644 index 0000000..4ea903d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/shiftjis.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a15ed210126bcdae32543f60eb1a0677f985f32d49fce923b9fae8c5bcf3da4 +size 42552 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/symbol.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/symbol.enc new file mode 100644 index 0000000..6f17a2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/symbol.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9660537a7b62996478555c6f57c1962c78fb3972f19370b2e395c44842818a1f +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/tis-620.enc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/tis-620.enc new file mode 100644 index 0000000..4183a35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/encoding/tis-620.enc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50b62381d6edd4219f4292bfdc365954491b23360de7c08033e7218a3d29c970 +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/history.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/history.tcl new file mode 100644 index 0000000..064d13c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/history.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5123db837eadf45712ea7d449bc40bfd3e8e16d3d71e7d0ce9a32f164973d767 +size 8235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/http.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/http.tcl new file mode 100644 index 0000000..20c89cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/http.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c474095a3aba7df5b488f3d35240d6de729e57153980c2a898728b8c407a727 +size 10066 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/pkgIndex.tcl new file mode 100644 index 0000000..dc6bc92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/http1.0/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77265723959c092897c2449c5b7768ca72d0efcd8c505bddbb7a84f6aa401339 +size 746 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/init.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/init.tcl new file mode 100644 index 0000000..40a7dbd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/init.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a103a85413988456c2ad615c879bbcb4d91435bcfbbe23393e0eb52b56af6e2 +size 25633 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af.msg new file mode 100644 index 0000000..0094e3b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1eaca556bc0cfbd219376287c72d9dbbfab76ecf9bf204fd02d40d341baf7da +size 1038 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af_za.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af_za.msg new file mode 100644 index 0000000..da87271 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/af_za.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1548988458bbf0dfccc23b7487cec0e9c64e4cc8e045723e50bec37c454a8c81 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar.msg new file mode 100644 index 0000000..2237a9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b69d0061a728d59f89ff8621312789cd9f540bf2e2ed297804d22f6278561d85 +size 2018 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_in.msg new file mode 100644 index 0000000..9a64180 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e04b96da002519d28125918a22ff2bb9659a668a7bcad34d85dddecec8dc0b4 +size 265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_jo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_jo.msg new file mode 100644 index 0000000..6995ff5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_jo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5adbb3d37c3369e5fc80d6a462c82598d5a22faef0e8df6b3148231d2c6a7f73 +size 1851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_lb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_lb.msg new file mode 100644 index 0000000..3215569 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_lb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc13070cf661488e90fece84274c46b1f4cc7e1565eab8f829ccaa65108dfca +size 1851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_sy.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_sy.msg new file mode 100644 index 0000000..ac673d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ar_sy.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:294f3e46c55453edad44567e1330f9b43e69a07fa0655b24dd2780a4490c1194 +size 1851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/be.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/be.msg new file mode 100644 index 0000000..b3e1ac4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/be.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a636a82c7d00ccdc0af2496043ffa320f17b0d48a1232708810d3bb1453e881e +size 2157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bg.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bg.msg new file mode 100644 index 0000000..7bc1ad3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bg.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe4e44a3a751f113847667ec9ea741e762bbde0d4284822cb337df0f92c1aca +size 1871 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn.msg new file mode 100644 index 0000000..21015d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:890ea6521deb1b3c3913ccd92562f6360e064daee2e2b0356a6dd97a46264a1f +size 2335 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn_in.msg new file mode 100644 index 0000000..5310b45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/bn_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3d8a4632290b0f3da690e47c1fdf06a8b9e171a96e938afdb0dd52cf806ce54 +size 265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ca.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ca.msg new file mode 100644 index 0000000..83a75c2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ca.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3be295dcc8fcdc767fed0c68e3867359c18e7e57d7db6c07236b5bc572ad328e +size 1152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/cs.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/cs.msg new file mode 100644 index 0000000..c7d7e32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/cs.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afea12a16a6fa750ea610245133b90f178ba714848f89aec37429a3e7b06be1a +size 1354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/da.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/da.msg new file mode 100644 index 0000000..f2987cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/da.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d422a991bca13fe9033118691cfedab0f372222ebb0bc92baf8e914ee816b84 +size 1208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de.msg new file mode 100644 index 0000000..b0ba9bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c27733502066e8391654d1d372f92bf0484c5a3821e121ae8aa5b99378c99ae +size 1276 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_at.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_at.msg new file mode 100644 index 0000000..9fba1e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_at.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c02d14140196623297f858e2eef00b4159e1c6fafe044ec65a48c9c24d46540 +size 847 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_be.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_be.msg new file mode 100644 index 0000000..81a8010 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/de_be.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:532845cd15ec821c1939d000c648694a64e8ca8f0c14bad5d79682cf991481ce +size 1276 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/el.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/el.msg new file mode 100644 index 0000000..7d1091c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/el.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b23e0e2f0f319bb9a2dfdccdc565ff79a62fa85094811189b6bc41594232b6b +size 2304 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_au.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_au.msg new file mode 100644 index 0000000..e350f80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_au.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:705c66c14b6de682ec7408eabdba0800c626629e64458971bc8a4cbd3d5db111 +size 307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_be.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_be.msg new file mode 100644 index 0000000..aeab063 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_be.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc87754a253c1036e423fa553da182dbc56f62a13eda811d8cd9e8afa40404a6 +size 312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_bw.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_bw.msg new file mode 100644 index 0000000..4f80418 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_bw.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec48f18995d46f82b1cc71ea285174505a50e3ba2017bcce2d807149b7543fd0 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ca.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ca.msg new file mode 100644 index 0000000..6228ba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ca.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf2d0937fd95264549cf5c768b898f01d4875a3eb4a85d457d758bc11dfec6e +size 295 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_gb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_gb.msg new file mode 100644 index 0000000..0aa2841 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_gb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ce5b74f9e9c190b21c5df4106303b7b794481228fb9a57065b9c822a1059c3 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_hk.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_hk.msg new file mode 100644 index 0000000..1945c53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_hk.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:563450a38db6c6a1911bc04f4f55b816910b3e768b1465a69f9b3bd27292dbee +size 329 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ie.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ie.msg new file mode 100644 index 0000000..e39d806 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ie.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e0dcee86a03b7bdd831e0008868a9b874c506315bf01df3982ad3813fd3ba8e +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_in.msg new file mode 100644 index 0000000..ebf6638 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adea3a1ab8aa84237ddb2f276abdb96dcb4c51932e920d1a5e336904e1138664 +size 318 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_nz.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_nz.msg new file mode 100644 index 0000000..ca209d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_nz.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec305b7cb393421e6826d8f4fea749d3902eba53bfa488f2b463412f4070b9ed +size 307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ph.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ph.msg new file mode 100644 index 0000000..2ec0f1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_ph.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a9c22b07906544c04f7a29b800fce87c09d7fdf5c251236925115cf251a3890 +size 329 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_sg.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_sg.msg new file mode 100644 index 0000000..e92f197 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_sg.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d565679ae9aacbfe3b5273fe29bd46f46ffbb63c837d7925c11356d267f5ff82 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_za.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_za.msg new file mode 100644 index 0000000..460cee6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_za.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67c253e2a187aa814809418e5b7a21f3a1f9fb5073458a59d80290f58c6c1eb4 +size 251 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_zw.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_zw.msg new file mode 100644 index 0000000..bee8672 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/en_zw.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f4754ce29dfa4f0e7957923249151ce8277395d1af9f102d61b185f85899e4e +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eo.msg new file mode 100644 index 0000000..4e2d70d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d52cab5ca65789d1dc37949b65baf0272ab87bccbb4d4982c3af380d5406ab +size 1285 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es.msg new file mode 100644 index 0000000..beffdd1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9a6fe8cce7c808487da505176984d02f7d644425934cedb10b521fe1e796202 +size 1232 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ar.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ar.msg new file mode 100644 index 0000000..575defe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ar.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b97dcea4fec3e14632b1511d8c4f9e5a157d97b4ebbc7c6ee100c3558cb2947f +size 248 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_bo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_bo.msg new file mode 100644 index 0000000..1059205 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_bo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b47f55539db6f64304dea080d6f9a39165f1b9d4704dcba4c182dbd3aa31a11b +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cl.msg new file mode 100644 index 0000000..14d3595 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1a2a6eba673c6f6d964dbcddf228cb64978f282e70e494b60d74e16a1db9cb +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_co.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_co.msg new file mode 100644 index 0000000..be214b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_co.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fac53acfb305c055afd0ba824742a78cb506046b26dac21c73f0bb60c2b889a +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cr.msg new file mode 100644 index 0000000..906ba05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_cr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a33dc22330d087b8567670b4915c334ff1741ee03f05d616cc801ecfda1d9e64 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_do.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_do.msg new file mode 100644 index 0000000..0dfea3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_do.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dc2f857e91912ed46a94eb6b37dd6170ea7bcddcd41cb85c0926a74ee12fcc1 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ec.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ec.msg new file mode 100644 index 0000000..f23dd07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ec.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52ab5a6c9dd4f130a75c049b3af8f54b84071fc190374bccf5fa0e1f3b91eb21 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_gt.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_gt.msg new file mode 100644 index 0000000..3e79ade --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_gt.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b4d3025156c060a16328370a3fdb9f141298decfc8f97be606f6438fece2ee +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_hn.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_hn.msg new file mode 100644 index 0000000..4067b4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_hn.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07873d4d59bb41000706a844859c73d26b1ff794058aa83cffca804981a24038 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_mx.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_mx.msg new file mode 100644 index 0000000..e165014 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_mx.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0f57137d2c0abdc933e03cfb188f5632176c195ceadb9dc80d469c8dc6cedc6 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ni.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ni.msg new file mode 100644 index 0000000..f8626ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ni.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6250663da1378e54bedcef206583d212bc0d61d04d070495238d33715bb20cae +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pa.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pa.msg new file mode 100644 index 0000000..86d72e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pa.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb661c1c09e7d4f6fbcc4b2dad0f41442b1ffdd27f003abdc0375dd316e57d7 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pe.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pe.msg new file mode 100644 index 0000000..96d71db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pe.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90c130b66958cf63cb3ddd2c633e58444357dbab44c56831dd794cbd2eb1aed0 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pr.msg new file mode 100644 index 0000000..2681956 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_pr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f790e8e48dc079dcd7deb58170561006a31294f7e4acbf9cf2abfa3db9e3fa9e +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_py.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_py.msg new file mode 100644 index 0000000..e909ba1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_py.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70263f7eb22822dfee8849b7ac4418ed9331275a71e77236b59226396505cdff +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_sv.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_sv.msg new file mode 100644 index 0000000..3f2eb01 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_sv.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a38b3745c95673d21babb987f1d41ee08dda945c670f5432ba0ce6f893c0e9 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_uy.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_uy.msg new file mode 100644 index 0000000..af2101e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_uy.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1291b58810739ea0651493dd7887f5ee3e14bdb806e06dd4bb8ae2520c742eda +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ve.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ve.msg new file mode 100644 index 0000000..03b692a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/es_ve.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91191517403c712299919f9c797f952502e33cb6961d1dbee3a7c9e8d2b170b9 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/et.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/et.msg new file mode 100644 index 0000000..64e28ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/et.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bee224c21b0483cff39be145c671aa20cb7872c8727fd918c0e8eca2bbeb172 +size 1258 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu.msg new file mode 100644 index 0000000..ba373ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6889b57d29b670c6cfb7b5a3f2f1749d12c802e8e9629014d06ce23c034c7ef1 +size 1032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu_es.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu_es.msg new file mode 100644 index 0000000..0ac8d01 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/eu_es.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d45cc432e5743e6cec34e9a1e0f91a9d5c315cda409e0826b51ad9d908479eb6 +size 294 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa.msg new file mode 100644 index 0000000..b5bf723 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86898728b275288693b200568dc927c3ff5b9050690876c4441a8339dae06386 +size 1711 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_in.msg new file mode 100644 index 0000000..c25f0dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b56545c1ae1de53bc2389bb7ae59f115bade24f907e384e079491dc77d6541d +size 2009 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_ir.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_ir.msg new file mode 100644 index 0000000..3a6ec49 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fa_ir.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d9779c27e8960143d00961f6e82124120fd47b7f3cb82db3df21cdd9090c707 +size 426 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fi.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fi.msg new file mode 100644 index 0000000..086f628 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fi.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9929a6b7139bd7e0f29487f7888a83e4c4f5e9ce0352738cfca94ee2ddf3bd6b +size 1195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo.msg new file mode 100644 index 0000000..e05e3fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec9b03469fa38b260915c93318f446ea5e12b9090bd441936b57552eba1e3c9 +size 1033 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo_fo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo_fo.msg new file mode 100644 index 0000000..3edba24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fo_fo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3dccf5e5904c24d4ad9aaa36160a78f5397a7452510c0c0e61de4de863305cb +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr.msg new file mode 100644 index 0000000..0165861 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96b1e1e12cd13a56722ebf27d362c70b467342fa1282a40b89fb16b5105a0480 +size 1257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_be.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_be.msg new file mode 100644 index 0000000..a12293c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_be.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aad828bcbb512fbd9902dcdd3812247a74913cc574deb07da95a7bbe74b1fe48 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ca.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ca.msg new file mode 100644 index 0000000..ee658b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ca.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0624df9a56723ddb89e59736c20a5837dea2206a789ebe7eef19ad287590ca45 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ch.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ch.msg new file mode 100644 index 0000000..f9e3c54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/fr_ch.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:290ca6eb74baeac4e2420d0755d148849f89ee87e37860f25cbb7b8afa3edcbc +size 288 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga.msg new file mode 100644 index 0000000..dfcb1dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:880806867acabd9b39e3029a5add26b690cc5709082d43b0959eba725ea07ab5 +size 1188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga_ie.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga_ie.msg new file mode 100644 index 0000000..745b6d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ga_ie.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f9615c617d3cdbc1e127b3efee785b0cb5e92e17b7dabac80da2beaf076362c +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl.msg new file mode 100644 index 0000000..0665a7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d61b49dbf9584893051ffb458d6de9e7e2e7774ac0011f70c4dd4184eba81c +size 997 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl_es.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl_es.msg new file mode 100644 index 0000000..1a56172 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gl_es.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5688ca07d713227b713655877710258cd503617e8df79293a971649e3134f05 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv.msg new file mode 100644 index 0000000..bf43ddf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:404795f2c88d0038f9ed0b5120a251d26edf8b236e1b1698bc71acd4dc75ac45 +size 1084 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv_gb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv_gb.msg new file mode 100644 index 0000000..0e0e2e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/gv_gb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86cabf3b9360c0e686cc4cbeb843e971c28bc6d35210ed378b54eb58cc41f3d5 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/he.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/he.msg new file mode 100644 index 0000000..7fee0bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/he.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:787da79af58872bf45ab09e3b6a920a4496b5bd8a4f3c7f010cf013ec2e8efe0 +size 1990 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi.msg new file mode 100644 index 0000000..fc4c450 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:192f4a8e77e1627712f85533c9896ef6a040157c7bd56df3a4a7fa56ad6746c2 +size 1777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi_in.msg new file mode 100644 index 0000000..0ad7a93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hi_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a3bf0dd61bfb5a2bf75e96b11e0e3528ffab720a0bf1923853606f8caf0e76d +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hr.msg new file mode 100644 index 0000000..4d59b8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:105a9180bc5d23738183374fa0ea8dd80484bf3947e1432e515bdc2913c017d9 +size 1171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hu.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hu.msg new file mode 100644 index 0000000..10c931e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/hu.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:993475532f89e1ea7214adb265294040862305612d680cff01dd20615b731ccc +size 1381 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id.msg new file mode 100644 index 0000000..ff1fc4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41c0c3d3b4491e9b36e719466503efcd325175cb7824c4a5055cb113d347be0f +size 961 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id_id.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id_id.msg new file mode 100644 index 0000000..7d6b148 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/id_id.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba7fc0c0452d3e482db6e19bdf512caced639ba72b92ed8f66d80b52fea11ac0 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/is.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/is.msg new file mode 100644 index 0000000..588beeb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/is.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:778be3d6bfe2dffb64ff1afb9ec8351a3343b314cf93a68e8f7fd1073ee122bb +size 1305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it.msg new file mode 100644 index 0000000..135d696 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d72170b9f9028a237364f7cd7ea8b48bd4770e61922205ce862300103b13de5 +size 1294 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it_ch.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it_ch.msg new file mode 100644 index 0000000..7492b44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/it_ch.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24b5f303f5c7af6f63fdc23adb4d713087ae74b6d18c117d787af03374c5f57e +size 250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ja.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ja.msg new file mode 100644 index 0000000..0b21a80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ja.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b6d15a191437f1b84fa7023e34153b61e6bf1de1452ea921e9ccbbe5d4beb1c +size 1689 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl.msg new file mode 100644 index 0000000..9414c4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96ff17f1cff976e4e204d3616d1efced4d0f907c5e6a0f04b4536cb4ad1190c9 +size 1025 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl_gl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl_gl.msg new file mode 100644 index 0000000..1777b7f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kl_gl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3027cfe9ebd2172cefc15c025786cad47a6e2894bf0474afc1b0c341e70202aa +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko.msg new file mode 100644 index 0000000..8b793e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef6fb319c398eea79b3a951319f831f3b186d556565d17d738e5f9b4b77570f2 +size 1621 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko_kr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko_kr.msg new file mode 100644 index 0000000..6c1d16e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ko_kr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cac8fb43d290a63a4d3215f22228b358ab4fa174f08712dd6c5b64c5e485071 +size 354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok.msg new file mode 100644 index 0000000..5545931 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d215e31a39fed45b3657144e5f73c942e59e500036ce16b1fff201fd6358595 +size 1997 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok_in.msg new file mode 100644 index 0000000..1098a33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kok_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:644f2b6d4ba27af14891b781def60f708a9f18fc2f73566649b631a6dea3ef09 +size 260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw.msg new file mode 100644 index 0000000..3596616 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eab468ac5bf1833d4f8cd658789413d4a46cad16b63fb9b906cff6dc9ea26251 +size 1013 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw_gb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw_gb.msg new file mode 100644 index 0000000..e76952a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/kw_gb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edac14d929d1c6559ec46e9b460f8f44a189b78fb915f2d641104549cbd94188 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lt.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lt.msg new file mode 100644 index 0000000..8779e3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lt.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:855b652fcc8066ba45c7dc8dbfd3807d1b4759ea8d71c523567f47bf445d1de6 +size 1307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lv.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lv.msg new file mode 100644 index 0000000..de0b766 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/lv.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e90d2008b220db19c796c7107ad69d263b8ac8c7bddfb879230699d978e9a0a +size 1271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mk.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mk.msg new file mode 100644 index 0000000..345a239 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mk.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c0eb07f0fcb36dd12a3f7edd6531616611abf62bf7705b5a37cc59098221d5d +size 2157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr.msg new file mode 100644 index 0000000..95e918f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae873bf5484eacbbe179913d43451be53378fa701b5d81594d052266b8a09af0 +size 1846 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr_in.msg new file mode 100644 index 0000000..9ea5a73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mr_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7b1d379355a1d278e13ef557a887a662e84fb6a9b62b8e19a27927926270ef9 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms.msg new file mode 100644 index 0000000..7b02373 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:970b2f3ecc04980fcc2f9531ca6ce2bf36bc12942cb614bf70313b4cb0508985 +size 957 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms_my.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms_my.msg new file mode 100644 index 0000000..acc68b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ms_my.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5b859d8dd2a2b5f756e39b0dfeb26b95878d2f54ba3ce46c56f0f26cf2b554b +size 265 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mt.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mt.msg new file mode 100644 index 0000000..2ee1777 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/mt.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dbc4e82d82fde8cdf522fa10e082289d46b0c1a4a7d7a5fa83ff116677f052b +size 717 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nb.msg new file mode 100644 index 0000000..2937fc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:534c5dacef12f818faf4ed806997a559f95d591f1b6236b0c30b07a107dd13f3 +size 1209 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl.msg new file mode 100644 index 0000000..1e707ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e2fe3851cf13ec79a9b10a09b01ceb0a26044ae0dc90a4e00be57745e854c79 +size 1129 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl_be.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl_be.msg new file mode 100644 index 0000000..1d4fb67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nl_be.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77a69dd60d171b321512b14794e75a66ff753410c007997b310790d86e09b057 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nn.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nn.msg new file mode 100644 index 0000000..2cea161 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/nn.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06fa2d6d8c59d0b8eac2ede5ab0ddb8b6e095d1a023b1966fce3b65916fa14fb +size 1200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pl.msg new file mode 100644 index 0000000..d2f6967 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61462c325db0065352d8155307f949869862a86cac67ad7bb6703f57a7fa2ff3 +size 1263 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt.msg new file mode 100644 index 0000000..d195d5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f6eeeddcf232bdcb952592a144810ced44a1cbb4bcc2c062d5f98d441505380 +size 1177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt_br.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt_br.msg new file mode 100644 index 0000000..6932b33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/pt_br.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:320be7d5b730091e6fa35f196314737261c8e154577dcf6ac8c2057d44394ad7 +size 286 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ro.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ro.msg new file mode 100644 index 0000000..08d22ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ro.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25ed6ac7a353e23b954b98611ae3b7e56bdcf2b0cb0db358253cfb8bebbb831c +size 1224 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru.msg new file mode 100644 index 0000000..65efc2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb35bb6f07baef72c329ec3e95d6527a2736070ee2ffe5de227e1ff0332390f8 +size 2091 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru_ua.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru_ua.msg new file mode 100644 index 0000000..de85b30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ru_ua.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13e4e79a0ed82034bade0cff8def5de1222f6968108ad710662bdb7daf36d7e1 +size 248 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sh.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sh.msg new file mode 100644 index 0000000..19ced65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sh.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e65d6e5e837df0a2df0db77bce45334bbc27efff9023c37119e75d49932d9d6c +size 1212 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sk.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sk.msg new file mode 100644 index 0000000..73b1802 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sk.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:976813f6c53c9bebbf976b0f560fd7fc5e4ec4c574d7e1cd31f9a4056765cb7a +size 1255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sl.msg new file mode 100644 index 0000000..e070afd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11a6264676dbed87e4f718075127e32e107854f35f141642454f484984084486 +size 1216 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sq.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sq.msg new file mode 100644 index 0000000..349120b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sq.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4efd78f6b45b65f73f09b2f52fc13c2a7c4138dcb7664804878d197b6ebdf9 +size 1321 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sr.msg new file mode 100644 index 0000000..ac09461 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa00a7b22c9941f6c2b893f22b703dcb159ca2f2e4005fd6a74a632aeb786bfa +size 2087 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sv.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sv.msg new file mode 100644 index 0000000..a8c24b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sv.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:483916b51bd7e071e88f9ec36aaf3e08fea823991532f832de491c6c40b55a9f +size 1219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sw.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sw.msg new file mode 100644 index 0000000..8e57af0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/sw.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1da068c9aa02ef14a2440758c6040d632d96044a20ec501dbb9e40d8592e0e7f +size 1040 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta.msg new file mode 100644 index 0000000..e7acd2f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aefdc4255890d5b3ffe5cee1b457b7d711283c2287aba644155c10956012f6c1 +size 1874 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta_in.msg new file mode 100644 index 0000000..25041fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/ta_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4978a193076de56944236f7f1dcecacff739536dfb3dbefc1f7fe2b97a8aeaf4 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te.msg new file mode 100644 index 0000000..39a3a51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e96c7123100234a7018533764502985a208f2eb3314f5b6332d46016725a63f +size 2149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te_in.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te_in.msg new file mode 100644 index 0000000..341fd75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/te_in.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b110feedda21eccefa624bef8e1476e9f221fb253880ac370967ae4d0237ca7a +size 419 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/th.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/th.msg new file mode 100644 index 0000000..a46875c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/th.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48beaf693bf5b6eed15234db0d375b97e6d576a749e9048420c153e6cafc0259 +size 2359 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/tr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/tr.msg new file mode 100644 index 0000000..e6302ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/tr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b85b345d6c43f7257c6849a60a492397fd5fd9d82df3a2252189d7a1eccbb64 +size 1183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/uk.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/uk.msg new file mode 100644 index 0000000..fd38e36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/uk.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7093da7e39ceb6d3f51eb6cf1cca2d7f3680ed7b8fe4a5f0ceceef6beb21ac77 +size 2165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/vi.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/vi.msg new file mode 100644 index 0000000..2120e7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/vi.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9b7aecd456f1d2288604c982b5ded0dcf71dca968c0b0eaff4ca16cc3b73ec2 +size 1471 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh.msg new file mode 100644 index 0000000..24d5848 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb247f5184a59414d3df7e3eca51f5998c248cfb27d2c02e62a7a30ab35197a7 +size 3385 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_cn.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_cn.msg new file mode 100644 index 0000000..b541218 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_cn.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c8a855700fefe8ee21b08030ff4159d8011ae50353f063229c42de6292475cf +size 319 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_hk.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_hk.msg new file mode 100644 index 0000000..8186c41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_hk.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e1c5bd9ec1a17bb851b0dcabd0dfa9ff9d64b89603d9d3fbeaac609172346ae +size 780 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_sg.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_sg.msg new file mode 100644 index 0000000..da85d57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_sg.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:500546b3211d454659d845b4ab9aef226125100df40407c49530de17cdd4363f +size 347 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_tw.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_tw.msg new file mode 100644 index 0000000..9a8ec08 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/msgs/zh_tw.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dba0584b8e1925b439f06e0bf0965e97afb7eb39e70e0e4c9b70769ebc5f996c +size 354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/optparse.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/optparse.tcl new file mode 100644 index 0000000..7cb3750 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/optparse.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a157f1873d606b53dc4d894bd8e71f6b1a0dd66177b9513bd039b348b40349 +size 33777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/pkgIndex.tcl new file mode 100644 index 0000000..8ea5f3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/opt0.4/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a4abd2c519a745325c26fb23be7bbf95252d653a24806eb37fd4aa6a6479afe +size 620 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/package.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/package.tcl new file mode 100644 index 0000000..6cbb22e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/package.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f46ab61cdebe3aa45fa7e61a48930d64a0d0e7e94d04d6bf244f48c36cafe948 +size 23995 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/parray.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/parray.tcl new file mode 100644 index 0000000..52dd4d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/parray.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e269029c8263e3cbc1920c3604ecdcf15edccb208a0d68f9eb42b73954d620c0 +size 844 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/safe.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/safe.tcl new file mode 100644 index 0000000..8c35cc1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/safe.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c21dce3ab31893118bbed01e559070f1d3541877fee331bd45f5bf4300ed9654 +size 42223 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tclIndex b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tclIndex new file mode 100644 index 0000000..a3aa969 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tclIndex @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddf7e42def37888ad0a564aa4f8ca95f4eec942cebebfca851d35515104d5c89 +size 5617 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tm.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tm.tcl new file mode 100644 index 0000000..15f4e4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tm.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7ed9fd2363d6876092db3f720cbddf97e72b86b519403539ba96e1c815ed8f +size 12204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Abidjan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Abidjan new file mode 100644 index 0000000..7ab8232 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Abidjan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7213997bb9cf9d384a7002b8c8efef25c01aba6083d9835a16d583d5dcee40a0 +size 147 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Accra b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Accra new file mode 100644 index 0000000..39ce6c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Accra @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6040827afed8cef45f252fbd7e3e862c0b5e9d06c1c98c58bad61dfe67bd57cc +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Addis_Ababa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Addis_Ababa new file mode 100644 index 0000000..87fc025 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Addis_Ababa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e11fd8ad8572b684333810cfdc23b92e1acf619875866985e288d92f8277d07f +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Algiers b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Algiers new file mode 100644 index 0000000..6e88d0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Algiers @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6874647561ce1c5fd1f650c9b167f77ac5b24fd2026046399a9043cf998e5c4 +size 1080 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmara b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmara new file mode 100644 index 0000000..5dce364 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmara @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:064eb7f9a1fa05a317c6bdca6b102bc1560d980758f9e4ddb010c9e7dc068ecb +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmera b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmera new file mode 100644 index 0000000..dabc0ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Asmera @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76939852a98ea7bf156d0ac18b434cc610daf5232322c0fbb066cd52c5b72af7 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bamako b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bamako new file mode 100644 index 0000000..525246a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bamako @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6d1ba22115a6565b6d6abeb578f001ddb41e673c422c8ea70d0df77b24115f6 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bangui b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bangui new file mode 100644 index 0000000..42dd9c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bangui @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5047a507d22b68c9349eb6a48c41c80db4c69f98f99c6574059dea87178e36c0 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Banjul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Banjul new file mode 100644 index 0000000..e641745 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Banjul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77e610a02ccece3045b09d07a9be6100f5aa9c3c2aeb543535c9ae941194f4e4 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bissau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bissau new file mode 100644 index 0000000..ed54d56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bissau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a870e534de67713c27f2f3b9bf26fa7498c240cf633988ce76dbdac5b69214d +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Blantyre b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Blantyre new file mode 100644 index 0000000..11fadbf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Blantyre @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f700409b8eee33ace5f050414971ffee0270949842e58e9299bb5cd6ccf34de +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Brazzaville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Brazzaville new file mode 100644 index 0000000..054c215 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Brazzaville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:596db2d64cdd6250642cb65514d5bcb52f3e3ea83f50d8915d9d4fdea008f440 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bujumbura b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bujumbura new file mode 100644 index 0000000..5db8d85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Bujumbura @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a15867255b43a954ca60da11660f157553aab6a15c50acd49d182276e0cf4cc +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Cairo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Cairo new file mode 100644 index 0000000..a91c309 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Cairo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8698b0a53d858aea7c495edf759ef0e6c63f7e07a256599393dec7b7a7413734 +size 3852 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Casablanca b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Casablanca new file mode 100644 index 0000000..d5f3849 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Casablanca @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8776eedfdfee09c4c833593127cefac9c33e2487ab9bf4bf8c73e5e11b4e5613 +size 5532 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ceuta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ceuta new file mode 100644 index 0000000..44505d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ceuta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8827f7311ede69a9679bdf2b7418dbf350a2fc8f973e8b1e1e4390d4d5c6d2e8 +size 7536 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Conakry b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Conakry new file mode 100644 index 0000000..7e63ceb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Conakry @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3176c99fc45337cbce0cd516de4b02b8baa47d00e84f698122a2add57797984e +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dakar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dakar new file mode 100644 index 0000000..dc4af30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dakar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d50f9732757b284bac75526f2cfa585df7f6974160827afb0ff66124c7cfd361 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dar_es_Salaam b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dar_es_Salaam new file mode 100644 index 0000000..3818635 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Dar_es_Salaam @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab69948637416219a3d458777990fa4568bebc89388884bbf129c0e1370a560b +size 191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Djibouti b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Djibouti new file mode 100644 index 0000000..e858925 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Djibouti @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f7560ccd65d53c446adae7128a74d37e17dd0b907a2f2fd85322fb8707b497 +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Douala b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Douala new file mode 100644 index 0000000..95a0245 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Douala @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcf2dad148f4d2951320ea99730c56d5eb43d505f37416be4bad265ce2902706 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/El_Aaiun b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/El_Aaiun new file mode 100644 index 0000000..66a3757 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/El_Aaiun @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb102a95b3c004aab8371840b1a04ac352f48ff9e9eafdeaaf21960b0f3caa6 +size 5235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Freetown b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Freetown new file mode 100644 index 0000000..2a253ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Freetown @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc53a4d489f48f14c594c4b0e52079b34e043a5751bbc7df254a560352243575 +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Gaborone b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Gaborone new file mode 100644 index 0000000..acf7e70 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Gaborone @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:653af88955c4418d973e2f8681a99552eb7be95bca64c736072f488462f7b373 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Harare b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Harare new file mode 100644 index 0000000..af722c6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Harare @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b82c524585192e0e8fc69dcc1cf86183a8c5ef404645dc413fcf3f8c16b0ab +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Johannesburg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Johannesburg new file mode 100644 index 0000000..d96fe30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Johannesburg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eef6475e1312051037fcae3354e32dc0910be7a5116b71f8ccbe1cca08d3f1c +size 309 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Juba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Juba new file mode 100644 index 0000000..29205b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Juba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2646e15488abf2e960759cefe5705416e71da71bb8407b26196244fd1a3394f +size 1127 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kampala b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kampala new file mode 100644 index 0000000..83f51cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kampala @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ea3028ce2b025f0c457dc8f7601279ca5af565a88b9fe80208f9f1030f2b0d0 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Khartoum b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Khartoum new file mode 100644 index 0000000..abe7125 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Khartoum @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f475db8a857a46b310b12c21d6a9bc6ca9ff2960da429a9d57fa375f9439e13b +size 1131 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kigali b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kigali new file mode 100644 index 0000000..09ff024 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kigali @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73feb807006897b4b485cb82394867444e890265efe960ec66d6c0e325da9372 +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kinshasa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kinshasa new file mode 100644 index 0000000..3bf0651 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Kinshasa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:611375c4901ad6c4844c2bb7d02fb17f34996f49e642546a6784d6f0b28530cc +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lagos b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lagos new file mode 100644 index 0000000..3ef6a1c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lagos @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcc9f52f539a67dfd7abafde072acdae2b67754c559c8a5fe61979f5a286a066 +size 235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Libreville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Libreville new file mode 100644 index 0000000..84640f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Libreville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab3e797548c7663cf9aba7fe163635ff7cab9e6cb61fa1644c0f7b4b5cce8b99 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lome b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lome new file mode 100644 index 0000000..ac38d00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lome @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaca9124f17e5b11f27d11fa6141d19eb3ac23e155e155b73467bdaa3bc99aa7 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Luanda b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Luanda new file mode 100644 index 0000000..9765efa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Luanda @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c2fd1e44dfaaf0c0dd2eb56b84b538f1e2d84b301ab2cfb8ee7759783501444 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lubumbashi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lubumbashi new file mode 100644 index 0000000..ead2a48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lubumbashi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24384eec359fd24d181aaef3c017e3c345490a8d352b29d19b1b143a29a811c2 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lusaka b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lusaka new file mode 100644 index 0000000..b432f2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Lusaka @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b00801a7279741434d9c2d7ec7322dd93b85ea4f5c9976ab3a43f0ab142e1553 +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Malabo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Malabo new file mode 100644 index 0000000..89cb2dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Malabo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35d56effe9e7e60f17b32bd30486e566b635f0ae7a8948d77395b8e6332e26f1 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maputo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maputo new file mode 100644 index 0000000..7b8e8d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maputo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe6b6a4be1b61f7f909a3f6137530dfe6d1754499a4d9b0d1ce4952fff0ae62d +size 149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maseru b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maseru new file mode 100644 index 0000000..735499a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Maseru @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d80fd86cb733d57d88ecd404e702f750b233ed0ccbfbfffeed1aad3b7f1cb04 +size 199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mbabane b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mbabane new file mode 100644 index 0000000..625bf56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mbabane @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:547197c09c1987350ae5720a4eec7e8d8f4b9f4a0559726e225e13c707f7c564 +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mogadishu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mogadishu new file mode 100644 index 0000000..5cc6b5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Mogadishu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25e221be49dec5547a74aeb91b0041859c59bc866987272a447ab2343d1cc30c +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Monrovia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Monrovia new file mode 100644 index 0000000..ea5f563 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Monrovia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bf0d90610211651127402680519b29ab50b15d344263d0c1a22edebe5e01e27 +size 208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nairobi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nairobi new file mode 100644 index 0000000..72c19c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nairobi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd8e9765174431c0d403249d3e881c949c83966e9f8162552da88ae53132467b +size 277 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ndjamena b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ndjamena new file mode 100644 index 0000000..722d026 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ndjamena @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ada5f5afb25e823e1f0e8ad2489aaa1c09f01356634a9403670d7ab21ca2e2c +size 208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Niamey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Niamey new file mode 100644 index 0000000..054d7a6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Niamey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b517120ad8db3f21eab4e44a78001ee856eb4ea35852c54cca96d38887debcfa +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nouakchott b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nouakchott new file mode 100644 index 0000000..c996a94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Nouakchott @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64caf2bf9d45095df97f419714d5617cf6300acdb544b621dce1d594aa9b910c +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ouagadougou b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ouagadougou new file mode 100644 index 0000000..41dc0bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Ouagadougou @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03b9c1fe350b5e9f6f333f9519fa394dcc562308d9388a903af3d3fecebdc762 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Porto-Novo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Porto-Novo new file mode 100644 index 0000000..0de8187 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Porto-Novo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fb8692db9281ae2b087d704168bfd47d3d0901781fef65bfd62fcb213ba6b50 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Sao_Tome b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Sao_Tome new file mode 100644 index 0000000..2b1b47a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Sao_Tome @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba1d60df2b41320f92a123a714e17e576c89383526b96e0541a464c3fba415b7 +size 234 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Timbuktu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Timbuktu new file mode 100644 index 0000000..da23c94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Timbuktu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d8009acab019b32b1e87ab10e0ac3765abcabe8066318da8ca4905d41562f72 +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tripoli b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tripoli new file mode 100644 index 0000000..c93827b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tripoli @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b447b6b1c351e77f22a2d77c0437f2bbb7d8bdfdfdc3d6285e0d260519cc7110 +size 954 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tunis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tunis new file mode 100644 index 0000000..6ef0950 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Tunis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0760d1028e733888e43e7f1e057217dc2b52786029fcec67b27eb69cc6a54938 +size 1111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Windhoek b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Windhoek new file mode 100644 index 0000000..9941e17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Africa/Windhoek @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfc3d1fc182b315b31d999bc103c264bd205eb16f971c8636003a71170d7bd7c +size 1649 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Adak b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Adak new file mode 100644 index 0000000..0055953 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Adak @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77231d179260c08690a70aee6c2517e4b621ed4794d9aeea7040539f4ff05111 +size 8447 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anchorage b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anchorage new file mode 100644 index 0000000..a87df5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anchorage @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de7fbe2b3ed780c6b82099e1e249dd41f4452a3adb9dd807b1d0ec06049c2302 +size 8685 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anguilla b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anguilla new file mode 100644 index 0000000..67151e7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Anguilla @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f38610019c0a2c18ac71f5aa108b9647d9b5c01dcb55211afb8312308c41fe70 +size 202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Antigua b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Antigua new file mode 100644 index 0000000..43e20f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Antigua @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:561e58e11dc5a86cae04b5cb40f43efcff9abc0c841fac094619e9c5e0b403f8 +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Araguaina b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Araguaina new file mode 100644 index 0000000..cd62555 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Araguaina @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1327cbec20a21e3ff873e28a2edfa271ee3a5c01933779300eabd6b185da010 +size 1782 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Buenos_Aires b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Buenos_Aires new file mode 100644 index 0000000..87bed63 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Buenos_Aires @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc86ac89121ec4aa302f6259ccc97effd7022dc6cee3b291c57da72b6ea0c558 +size 2048 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Catamarca b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Catamarca new file mode 100644 index 0000000..8a91113 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Catamarca @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a516bb0937977ef949d47b3c8675e30f1ca6c34f8bd298dcf6ebb943580d5317 +size 2077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/ComodRivadavia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/ComodRivadavia new file mode 100644 index 0000000..e666c36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/ComodRivadavia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ccd6fc77d55582938f1912b1ba66035882d1bfc18a797c631e5e89abfbf570b +size 242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Cordoba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Cordoba new file mode 100644 index 0000000..2bc3da0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Cordoba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa75e274240a341c6bfe3539cfdc114d125aeaea3161d3c2409347cf8046042a +size 2043 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Jujuy b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Jujuy new file mode 100644 index 0000000..ed30f07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Jujuy @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43eb79abc03cbac661c563de1bc09d9dd855cbc72dd2b6467ea98f0f90421ba9 +size 2041 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/La_Rioja b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/La_Rioja new file mode 100644 index 0000000..facb67f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/La_Rioja @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b018b791e48269fa9eda12662ffec3e2dc33603a918e8b735b8d7d6beb3b3aa +size 2106 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Mendoza b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Mendoza new file mode 100644 index 0000000..e864cdb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Mendoza @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc39400bbfd5bdddc174fe099194806fbfd3fc3aa20e670d67be0ac35fe97ad4 +size 2077 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Rio_Gallegos b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Rio_Gallegos new file mode 100644 index 0000000..34517f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Rio_Gallegos @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a05b6708deff0607396bfc6661c2287341c3432841ae353d94a67ac742b5fafa +size 2080 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Salta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Salta new file mode 100644 index 0000000..762698a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Salta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caefc60f2f36ef9ffe0c5921c3c392de1e95755683a96c1c4ec0ba2c242a4d84 +size 2011 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Juan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Juan new file mode 100644 index 0000000..40ec006 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Juan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b2c25e42146a76934b866061bb3245b8ada0ff4e1bfba6f8842a30bdd5c132 +size 2106 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Luis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Luis new file mode 100644 index 0000000..2861cfa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/San_Luis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a43b35f25e54ef359d046e33281c0a978f0ee8811c93a6809f1f65750878bbb6 +size 2081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Tucuman b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Tucuman new file mode 100644 index 0000000..e730605 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Tucuman @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f7db23e1280fc19a1fb716e09a9699ada2aae24084cad472b4c325cc9783ccf +size 2105 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Ushuaia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Ushuaia new file mode 100644 index 0000000..9fcb205 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Argentina/Ushuaia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10b6ff51314d8ee1d010187d8805c4e3d71b778bc6decb26e66193a5bb3e9ea2 +size 2075 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Aruba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Aruba new file mode 100644 index 0000000..82ba1d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Aruba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7490cd66408b8a14c549278fe67dc3338fe9e458f423f01ccbea00b5e6f6cef6 +size 199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Asuncion b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Asuncion new file mode 100644 index 0000000..4454ead --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Asuncion @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaefe21276ee60c7f876c1d65039999ac069339dcdb82a23fc9206c274510575 +size 7944 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atikokan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atikokan new file mode 100644 index 0000000..0ba51c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atikokan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:518beb6e54ae811f8c725ea8cc42787d48fc605a3476d6e7a00a1b5733cbd6ac +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atka b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atka new file mode 100644 index 0000000..303aa5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Atka @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d6fee336e71fffb64874a830c976867c071ebf6b133c296b32f87e3e7d814c9 +size 177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia new file mode 100644 index 0000000..f5db3b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64f1ec14f6b43ff10b564f839152e88df9262f0947d1db347557fa902f6fd48c +size 2012 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia_Banderas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia_Banderas new file mode 100644 index 0000000..3062738 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bahia_Banderas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6233e5bb0d3b30d0e3b94cd797718041ac3c2e75b387d6646a5c0376c5591cd +size 2073 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Barbados b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Barbados new file mode 100644 index 0000000..47d494f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Barbados @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd5e04136506c6543a9acdc890a30bcf0d561148e1063ec857e3913de1eba404 +size 648 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belem b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belem new file mode 100644 index 0000000..1178362 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:549625ccb30bd0e025bac47668ba3aa0cdd8569e5887e483c8d62b5b7302fa50 +size 1031 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belize b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belize new file mode 100644 index 0000000..ab49373 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Belize @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e07f45264e28fd5aa54bd48cb701658509829cf989ec9bd79498d070a1ba270f +size 3284 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Blanc-Sablon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Blanc-Sablon new file mode 100644 index 0000000..c792235 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Blanc-Sablon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:facd0a835d1f425cd323ee453ade231810b2d1cf6eba227ba1b50522ae3879f7 +size 206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boa_Vista b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boa_Vista new file mode 100644 index 0000000..a943914 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boa_Vista @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10592ea1cb0d02c06a61059ec601f70a706a5053ac923b9eed29388d5e71ef3a +size 1199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bogota b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bogota new file mode 100644 index 0000000..47d9880 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Bogota @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6adc16815dc95e537548ca3572d7f93626a6d1dc390dd4cbabab5ab855bba30 +size 246 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boise b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boise new file mode 100644 index 0000000..7b2fffa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Boise @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93af910cb2ad2203b71c1ad49d56df4a4a14d07f885afd4e755271f1372a517c +size 8605 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Buenos_Aires b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Buenos_Aires new file mode 100644 index 0000000..30bc1cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Buenos_Aires @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:defc5c9da2d4d4146145a50d692a6bff698c3b0a1f19efd82ad0ee7678f39fcf +size 239 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cambridge_Bay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cambridge_Bay new file mode 100644 index 0000000..ee7e6c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cambridge_Bay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e0506a54b562dbc3aa6889ddd39b327fe0b85c63b00f0b39d606921a0936a59 +size 7739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Campo_Grande b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Campo_Grande new file mode 100644 index 0000000..9749555 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Campo_Grande @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d5bd1355016b03edea58df98bec26281cd372725b2dcb60b4d748d2fb4346c8 +size 2918 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cancun b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cancun new file mode 100644 index 0000000..31b478f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cancun @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd6c370f82e5cfe374637e0e222e72570857ac3f85143beeef9c3d0e7a6c0d04 +size 1412 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Caracas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Caracas new file mode 100644 index 0000000..da08af4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Caracas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d558c25f165e956e980aa8f554ab3bf24e91b51eadbd2b1065ef6dfda0e2f984 +size 284 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Catamarca b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Catamarca new file mode 100644 index 0000000..170a763 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Catamarca @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37cd6bdaa6c6eedfac3288ca1c11f5cbbe8a17e5f2e790e7635a64b867afbd87 +size 227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayenne b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayenne new file mode 100644 index 0000000..a880a8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayenne @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:873285f3e13cb68dd28eb109ecad8d260e11a9ff6df6a4e8e0d4c00b0182695b +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayman b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayman new file mode 100644 index 0000000..84dd204 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cayman @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c38c49ae1c3e67bd2118002dcfcc3c0efb6892fb9b0106908a9282c414d0bf2e +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chicago b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chicago new file mode 100644 index 0000000..5288b5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chicago @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7707af88d650f90839e7258356e39d85228b33b6dbcc5c065c3d8733ae28cee +size 11372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chihuahua b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chihuahua new file mode 100644 index 0000000..d39a470 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Chihuahua @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93438d65ea8f95691748ff749219fafa1940469bc61ced0b7cbf995b417f20b4 +size 2040 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Coral_Harbour b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Coral_Harbour new file mode 100644 index 0000000..ebcb21c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Coral_Harbour @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8cbf5a29cc1d0827390ca6e98b2efcf90743c6dd0eca143b300050dd4164041 +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cordoba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cordoba new file mode 100644 index 0000000..bd716af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cordoba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28b84710eadef7ad5e7fa63ef519a9d93996d3bb91dd9018333de3ac4d8fb8dd +size 219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Costa_Rica b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Costa_Rica new file mode 100644 index 0000000..fd42d80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Costa_Rica @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3061dc6fa9f869f013351a9fdf420448592d7f959c2b4404093432508146f7e +size 431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Creston b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Creston new file mode 100644 index 0000000..da44631 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Creston @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a01ddb460420c8765ce8ef7a7d031abd7bdb17cfa548e7c3b8574c388aa21e17 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cuiaba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cuiaba new file mode 100644 index 0000000..81e5d7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Cuiaba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d8281cf3fd9e859c5206f781e264854fa876cb36562a08c6c01343c65f8a508 +size 2912 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Curacao b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Curacao new file mode 100644 index 0000000..f2cfca9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Curacao @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:accf08cf53c9431e226714df8bede3c91baf62d5bd7b98ca8b50d7258124d129 +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Danmarkshavn b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Danmarkshavn new file mode 100644 index 0000000..adbb706 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Danmarkshavn @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:968c56f1d0106e1d92c7b094eef528b6ee1ffa3d7a18be2f2ba59178c2c0f1e0 +size 1128 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson new file mode 100644 index 0000000..44ddcd6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30e875343c81c8de473e6313a27c55315f38e7ccdbd2cee5783ec54d269d5807 +size 2967 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson_Creek b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson_Creek new file mode 100644 index 0000000..ccb3401 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dawson_Creek @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:540804becdeab92340ef02d32a62bfd550b71a3db8d829be426ee4d210004643 +size 1940 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Denver b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Denver new file mode 100644 index 0000000..acb78ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Denver @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe2ee8c05c5d6f268b58bd9fc3e3a845dea257473b29f7b3fb403e917448f3c +size 8920 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Detroit b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Detroit new file mode 100644 index 0000000..97564d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Detroit @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84f6897b87d3978d30d35097b78c55434ce55eb65d6e488a391dfc3b3bb5a8fe +size 8430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dominica b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dominica new file mode 100644 index 0000000..704bb43 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Dominica @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3da98aa7d3085845779be8ed6c93ccbda92191f17ca67bbf779803e21da2abf3 +size 202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Edmonton b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Edmonton new file mode 100644 index 0000000..a1e389f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Edmonton @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:026d51d73d30a3710288f440e0c337e44e3a14d0aa2d7b6c6e53af43fc72a90c +size 8600 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Eirunepe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Eirunepe new file mode 100644 index 0000000..f00b02f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Eirunepe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48fc987e5999ea79f24797e0450fe4dab7cf320dfad7a47a8a1e037077ec42c9 +size 1230 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/El_Salvador b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/El_Salvador new file mode 100644 index 0000000..13e0316 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/El_Salvador @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c02c6e79398553bd07bea0be4b7f0ebdd8bc821595909cffb49de4290a0d1d0f +size 279 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ensenada b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ensenada new file mode 100644 index 0000000..dea49cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ensenada @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e363bf82545f24cce8cfa6eec97ba6e1c2a7730b2a9ce6c48f784821d308a5d +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Nelson b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Nelson new file mode 100644 index 0000000..ff449ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Nelson @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab15023807e7c7d1026c9970d190f1b405d48952464025242c2bb6c6bbb8391a +size 4578 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Wayne b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Wayne new file mode 100644 index 0000000..fb57edd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fort_Wayne @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8948616262cf6990739343abbbd237e572db49310099e21dd8f9e317f7d11b3 +size 231 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fortaleza b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fortaleza new file mode 100644 index 0000000..b53ade1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Fortaleza @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0a836bdaf07f0376b7b0833a0ab3d52ba6e3e1d6f95e247e1ad351cd1096066 +size 1423 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Glace_Bay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Glace_Bay new file mode 100644 index 0000000..ceedeb5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Glace_Bay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58c207cbd9de7a7bb15e48a62cea9f15da184b945133dee88eff29fd8b66b29e +size 8372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Godthab b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Godthab new file mode 100644 index 0000000..3be7968 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Godthab @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb2cfba25ce2f49d4c3911aff8e7e1ff84efc2d01f5783772e88246bfbc56ac +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Goose_Bay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Goose_Bay new file mode 100644 index 0000000..dd8a1ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Goose_Bay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52d2478289682bf95bfb93d64d679e888c9d23c0f68dfff7e6e34bfc44b3d892 +size 10353 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grand_Turk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grand_Turk new file mode 100644 index 0000000..51cf715 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grand_Turk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:560b39485ced4c2a0e85a66eb875331e5879104187d92cb7f05c2f635e34ac99 +size 7522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grenada b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grenada new file mode 100644 index 0000000..b8e1de7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Grenada @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebed070e8e67c5f12ff6e03fe508be90789f17c793dfe61237b4045b8222580f +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guadeloupe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guadeloupe new file mode 100644 index 0000000..d442719 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guadeloupe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cb1930532831d12057fcb484c60db64a60a4f6d8195dafd464826923116a294 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guatemala b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guatemala new file mode 100644 index 0000000..b6488e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guatemala @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14f6a98d602f3648c816b110f3a0ba375e1ffe8fa06beeab419dc1abfa6edcaf +size 399 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guayaquil b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guayaquil new file mode 100644 index 0000000..2262231 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guayaquil @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6806aa5814bdc679c6ef653c518d2699114be71d973f49c0864f622038dc2048 +size 249 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guyana b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guyana new file mode 100644 index 0000000..e5af491 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Guyana @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4078d2e361d04a66f22f652e3810cdf7f630cf89399b47e4ec7b1d32b400fd85 +size 248 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Halifax b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Halifax new file mode 100644 index 0000000..5507bde --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Halifax @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01e11c7b07925d05e9e1876c310a2b87e0e80ef115d062225212e472b7a964f1 +size 11124 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Havana b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Havana new file mode 100644 index 0000000..c51188e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Havana @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96b62bfbf0c05cf970245597c691f89ebf631175796459642a85287f131d0215 +size 8729 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Hermosillo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Hermosillo new file mode 100644 index 0000000..e4d5c0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Hermosillo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0a87dc3a474d25083f0cea0c323d8e780d937453cad23c98af367d81ac2ca2d +size 616 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Indianapolis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Indianapolis new file mode 100644 index 0000000..8d5a4bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Indianapolis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b114545167326f066ab3a798180896b43ac6fdc3b80d32bcc917b5a4a2359eb +size 7230 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Knox b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Knox new file mode 100644 index 0000000..f8802f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Knox @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1253f5f3f5aacd1a5e1f4636dd4e083f4b2a8bd995cf3e684cdd384641849f1 +size 8755 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Marengo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Marengo new file mode 100644 index 0000000..0eef71e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Marengo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:675162381639598e7100e90663d42780f8ee1cb62bd6da5b948b494f98c02fe3 +size 7273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Petersburg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Petersburg new file mode 100644 index 0000000..d00f5f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Petersburg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b8fa75ce0a9555dfd84549723a12679ff7fc5faa58e4b745ba3c547071ff53 +size 7611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Tell_City b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Tell_City new file mode 100644 index 0000000..e1c9bad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Tell_City @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d368123db703b55244700876906775837d408c274c5a5801d80b77eadb6d5853 +size 7100 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vevay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vevay new file mode 100644 index 0000000..3a26c20 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vevay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0623233aa39a1a82038a56df255adf49e648777375b8499491c8897ebea1cdf1 +size 6563 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vincennes b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vincennes new file mode 100644 index 0000000..0bfa8b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Vincennes @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8452b6aa739a78ac6d03806463b03d4175639593e19faa3ca4b0d0fb77f18c9 +size 7226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Winamac b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Winamac new file mode 100644 index 0000000..baeb379 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indiana/Winamac @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b293fdb7680c4597b8c885333719214492ecf09bd5ea342d1ec15f2bf9c8605 +size 7410 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indianapolis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indianapolis new file mode 100644 index 0000000..b95def0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Indianapolis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:437da148b94dba4cea402169878541db9c3419abab6750d1c36625dd3053019e +size 233 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Inuvik b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Inuvik new file mode 100644 index 0000000..802c97b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Inuvik @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a1f7f5edad0251b73c33e7b5ddee194646e9d3992b169dc1a64d155765d472c +size 7638 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Iqaluit b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Iqaluit new file mode 100644 index 0000000..c3cad59 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Iqaluit @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afc4627879f4a618f5e3ba9ea123f3212e161f4ccfd0df46f3b6b7cd2e2c0d7e +size 7671 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jamaica b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jamaica new file mode 100644 index 0000000..40097eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jamaica @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b9d5177cba057cd53d53120a49b8a47eccb00150018581a84851e9d5437d643 +size 847 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jujuy b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jujuy new file mode 100644 index 0000000..67307a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Jujuy @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a0495852cd4d0652b82fb57024645916db8f192eef9a82afd580d87f4d496ed +size 211 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Juneau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Juneau new file mode 100644 index 0000000..a4e25e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Juneau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fbe6a1fa2d3dfe23c7378e425f32bebca44735da25ea075a7e5ce24bfd4049d +size 8682 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Louisville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Louisville new file mode 100644 index 0000000..d2f54a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Louisville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eb1f2b19c44a55d6cc9fd1465baf6535856941c067831e4b5e0494665014bf5 +size 9553 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Monticello b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Monticello new file mode 100644 index 0000000..95d0db3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kentucky/Monticello @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c6c7fb0ae628eb6bb305b51859c4e5594a6b0876c386ed9c1c3355e7cb37ae1 +size 8558 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Knox_IN b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Knox_IN new file mode 100644 index 0000000..2fbe325 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Knox_IN @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d66e77e6ff789d4d6ca13cdb204b977e1fe64be9afee7b41f2c17ed8217fd025 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kralendijk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kralendijk new file mode 100644 index 0000000..a38da66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Kralendijk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af9b28c48661fdc81762d249b716ba077f0a40ecf431d34a893bb7eaba57965 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/La_Paz b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/La_Paz new file mode 100644 index 0000000..5cb45d8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/La_Paz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5488d98aa3c29d710c6af92c42ace36550a5bff78c155cdf8769ee31f71cf033 +size 218 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lima b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lima new file mode 100644 index 0000000..b20a3bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lima @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e01002f264df9a6fc247f95399f4f42dccc7ab890b0c259de93dcc97dec89ce +size 460 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Los_Angeles b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Los_Angeles new file mode 100644 index 0000000..3288eea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Los_Angeles @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da3f7572f04e6ae78b8f044761e6f48d37ee259a9c1fe15a67072cc64a299fdb +size 9726 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Louisville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Louisville new file mode 100644 index 0000000..d63f1bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Louisville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f85c1253f4c1d3e85757d3dea4fd3c61f1aa7be6baae8cb8579278412905acb2 +size 228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lower_Princes b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lower_Princes new file mode 100644 index 0000000..1cad9d0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Lower_Princes @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e786229b84ce86db6316b24c85f7cf4cfe66011f973053ad0e108bfcc9a9de2 +size 207 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Maceio b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Maceio new file mode 100644 index 0000000..b1c3288 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Maceio @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f65c5957d434a87324aad35991e7666e426a20c40432540d9a3cb1eee9141761 +size 1539 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Managua b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Managua new file mode 100644 index 0000000..600d8f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Managua @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0f0cce8de92d848a62b56ef48e01d763b80153c077230c435d464cf1733ba38 +size 611 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Manaus b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Manaus new file mode 100644 index 0000000..860dd67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Manaus @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc54e6d4fe14458b0462fa0e15b960fd4290930adc0d13453bf49b436ed8c143 +size 1166 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Marigot b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Marigot new file mode 100644 index 0000000..c84c3e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Marigot @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c26d7ce93f91cc4f5ed87e9388b1b180ef9d84681044fd23cc01a628a1284ca +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Martinique b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Martinique new file mode 100644 index 0000000..8b00183 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Martinique @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d411fb42798e93b106275ec0e054f8f3c4e9fb49431c656448739c7f20c46ede +size 251 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Matamoros b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Matamoros new file mode 100644 index 0000000..2510526 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Matamoros @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59c658cea1bf5392a8f16295a09a74230efb52ef7bf783e493e9a9c1799036f2 +size 6745 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mazatlan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mazatlan new file mode 100644 index 0000000..051d2c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mazatlan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8140084ea9d6a478c34a114d9e216dc05450ecbe4809b2cda194b40452e2aa0f +size 2067 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mendoza b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mendoza new file mode 100644 index 0000000..68799ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mendoza @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6b308a1619f2de450dacbfef0e11b237df7375a80c90899dd02b827688cb4b8 +size 219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Menominee b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Menominee new file mode 100644 index 0000000..2ffb87a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Menominee @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0863f8b66f0848020651b69e7997307d62209259ae653fdc1a0fafc8e793068 +size 8410 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Merida b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Merida new file mode 100644 index 0000000..94a977c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Merida @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ade65addeea027d1be70dc7c12513b61fdf36289021e66982d527c7fee2a2d19 +size 1877 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Metlakatla b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Metlakatla new file mode 100644 index 0000000..387dcbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Metlakatla @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2574831391092ad44d7b2806eef30d59ce3bae872111917dd39ec51efdd62e5f +size 6705 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mexico_City b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mexico_City new file mode 100644 index 0000000..018a448 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Mexico_City @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e83db749e6aa87fd56829c2810d0f93a4194e3ee2cb0bdc12114b1ef55e92e96 +size 2261 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Miquelon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Miquelon new file mode 100644 index 0000000..0370620 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Miquelon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b131ac968f95652667bd7eb1f6d667c8f679b31270d82b4b4271e787386ccca +size 7080 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Moncton b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Moncton new file mode 100644 index 0000000..f00b954 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Moncton @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d977d045de5cdaeb41189b91963e03ef845ca4b45e496649b4cb541ee1b5dd22 +size 10507 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Monterrey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Monterrey new file mode 100644 index 0000000..b09f739 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Monterrey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a66a403bf40be7eab188f3cec8d7db700f60084f7b856ab87e0aa4a0f2c0b6 +size 1940 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montevideo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montevideo new file mode 100644 index 0000000..b181240 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montevideo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:214f97a3bcb2378cce23d280ea6a3b691604f82e383628f666be585bb8494932 +size 2936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montreal b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montreal new file mode 100644 index 0000000..1416e84 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montreal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97f48948ef5108fe1f42d548ea47c88d4b51bf1896ee92634c7ed55555b06dbd +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montserrat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montserrat new file mode 100644 index 0000000..a4b0d96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Montserrat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c3ee46983a3daa91c9adf4b18d6b4b80f1505b0057569b66d5b465d4c09b9c1 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nassau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nassau new file mode 100644 index 0000000..ccda24e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nassau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a889810b8bb42cd206d8f8961164ad03ccfbb1924d583075489f78afa10eaf67 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/New_York b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/New_York new file mode 100644 index 0000000..8249752 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/New_York @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ba7da179aa7df26ac25e7accd9bd83784174445285a0d9ccbd7d6a9aa34f4bc +size 11373 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nipigon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nipigon new file mode 100644 index 0000000..5f63a88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nipigon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55c37bf1a579a22a790ade6585ce95bec02da356e84d2ef7832c422a4484ff9d +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nome b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nome new file mode 100644 index 0000000..8a5a7f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nome @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e971c9560cce548b46626d072e62ab0f4c9682bf6a6abfb4d0e8d63745402fe +size 8680 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Noronha b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Noronha new file mode 100644 index 0000000..367d563 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Noronha @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9011c76295e6b17cc1973876b497bee21b9e6562fb25df66140f811a1ffa9765 +size 1397 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Beulah b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Beulah new file mode 100644 index 0000000..b0585fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Beulah @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0d8b108453265b60f525a4ec04de9555087cd6ac5ddba980b3a96cf0fcd68d1 +size 8557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Center b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Center new file mode 100644 index 0000000..a2a72ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/Center @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abc2b6c97d9e9fba37ac582adba2ce996890d090060e083405d75cdaed9eabe0 +size 8557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/New_Salem b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/New_Salem new file mode 100644 index 0000000..276929b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/North_Dakota/New_Salem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8803ff7c81c933b57178b9d3c502fb4268d9aa594a3c638a7f17af60b12d300d +size 8560 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nuuk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nuuk new file mode 100644 index 0000000..d7b8e78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Nuuk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12917daaa60134bfe56e6979bb27b58a3f295c32bae02b233e849bced6b8bca2 +size 7429 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ojinaga b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ojinaga new file mode 100644 index 0000000..098c8df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Ojinaga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc857e4dd0a4ae60a7c56637c752205e20442c7ae62158435befca838174108d +size 2069 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Panama b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Panama new file mode 100644 index 0000000..0e0ae90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Panama @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:990213dde00adceb74c8d1ecaf81b9c77963e4ab1f35767f7349236fc8e917df +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Pangnirtung b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Pangnirtung new file mode 100644 index 0000000..b5ad3ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Pangnirtung @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fb962ecc1e5f02e1001c70460fff720b114554f9aa7956d6da154dbea87b4d7 +size 7736 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Paramaribo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Paramaribo new file mode 100644 index 0000000..b86e36a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Paramaribo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ee44b3526bedfc25b806371d3c465fdbd6cc647f30bf093750651e4a0c1be4 +size 253 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Phoenix b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Phoenix new file mode 100644 index 0000000..4651230 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Phoenix @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfa0ec91804b789a1a7e1b1977710435d2589a5b54c1579c8e1f5bf96d2fd007 +size 496 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port-au-Prince b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port-au-Prince new file mode 100644 index 0000000..63e94ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port-au-Prince @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a89c580899ad2ff8df45a783bb90d501dc32c28b92931ca18abd13453e76244b +size 6613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port_of_Spain b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port_of_Spain new file mode 100644 index 0000000..649e180 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Port_of_Spain @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4952380c89a6903ffe5bf8707b94b1bb72568ffd03db04bf4d98e38ac82eeb7 +size 207 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Acre b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Acre new file mode 100644 index 0000000..1e31815 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Acre @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52921eea2a1925df06cea4638ed4128faaa8fba40ed4e0741650b419e5152dcb +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Velho b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Velho new file mode 100644 index 0000000..99eeff0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Porto_Velho @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6e6f6753e7d443052a64d4db07b8d443ce13a573946e7d0a19cdd4bba4a2f04 +size 1051 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Puerto_Rico b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Puerto_Rico new file mode 100644 index 0000000..f8af6fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Puerto_Rico @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2981248a9f14ebfc8791ec5453170376cbd549557e495ea0e331cc18556c958e +size 283 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Punta_Arenas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Punta_Arenas new file mode 100644 index 0000000..a8c90ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Punta_Arenas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e626bd8b9182e56ada1e9276585e945957431ea9bea949ce071305e4e3c70a2 +size 3729 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rainy_River b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rainy_River new file mode 100644 index 0000000..c0b06be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rainy_River @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec74a3fcbd9b99fdff24b54223da187958697cbe756a54592f6171c69f1403f +size 196 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rankin_Inlet b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rankin_Inlet new file mode 100644 index 0000000..b92df30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rankin_Inlet @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa8866d58beab07548180628ff423887bbf48aadb1b55392b288f7310f94a9b1 +size 7614 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Recife b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Recife new file mode 100644 index 0000000..7b21905 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Recife @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a36ad4614fc9a2a433712b555156ede03980b88eb91d8dc7e8b10451d6d7f7d3 +size 1420 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Regina b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Regina new file mode 100644 index 0000000..6c9702a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Regina @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50105e788288cf4c680b29bbdcde94d8713a5361b38c6c469fd97cf05503ff7d +size 1781 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Resolute b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Resolute new file mode 100644 index 0000000..d834b9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Resolute @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:643cc43e3f906779c040e1f0c20e78d6e95cc7301b3c7370a8adbcbd76a8c5e8 +size 7610 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rio_Branco b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rio_Branco new file mode 100644 index 0000000..7328c52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rio_Branco @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28082d20872b61d6098d31d1c40f12464a946a933cd9af74475c5af384210890 +size 1112 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rosario b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rosario new file mode 100644 index 0000000..9330f5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Rosario @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0117d33d4f326aa536162d36a02439fbd5f2eb3b4f540b5ba91ed7747ddac180 +size 219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santa_Isabel b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santa_Isabel new file mode 100644 index 0000000..ee8996e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santa_Isabel @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b4c2f3a5b9cd22a73f05187c032723d07bb53c9946d04d35e1ba1cb90ca0a62 +size 194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santarem b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santarem new file mode 100644 index 0000000..083441a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santarem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a397bd937de1d7e6a941d18001b34d4cd195aefd08951c30c7ee8e48656aa0e +size 1079 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santiago b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santiago new file mode 100644 index 0000000..1f851ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santiago @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77ced11337f43241d57c10ba752c7104a7af8727992e7b90a3c5d62aa15e81c7 +size 8871 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santo_Domingo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santo_Domingo new file mode 100644 index 0000000..a84ab14 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Santo_Domingo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2217e72b11a90f2d679c175de3cc0f2fed4c280c9ff9707cffaf118bf9a06a4b +size 616 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sao_Paulo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sao_Paulo new file mode 100644 index 0000000..4bcb9c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sao_Paulo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e7ba1c5a3fa3dabdaa226bfe1e8d797a3835ea554828881ab5e365eda09b92e +size 2900 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Scoresbysund b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Scoresbysund new file mode 100644 index 0000000..a3bb3e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Scoresbysund @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:158bd9e4eb0b9dff3f2d3e2dba72f217b73423012dd33a688fd57852124e884a +size 6839 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Shiprock b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Shiprock new file mode 100644 index 0000000..b58f8bb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Shiprock @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf4fab3ae72cc7fa4f9e34cf0551a85c54a084cd826df5d9cc684de6188e84db +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sitka b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sitka new file mode 100644 index 0000000..682a22b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Sitka @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abb08435cae80119068a85984bffe9c1596f4fb90f07cc01124c907e5162c189 +size 8651 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Barthelemy b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Barthelemy new file mode 100644 index 0000000..65941fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Barthelemy @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:353cdbd46ba8c7472a93e9e800a69105801f6784b22ec50a59294cdc3be40e18 +size 207 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Johns b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Johns new file mode 100644 index 0000000..7b682e7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Johns @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2917204b0c843c32051bb371cf6d0ad272c02720b9c0d913ac072c8abe1ec64 +size 11289 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Kitts b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Kitts new file mode 100644 index 0000000..1b3583d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Kitts @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edb9457a7c64e47062bdc6458fd3bcfcd6c37820f1a2bc89dfe99ed77355011f +size 202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Lucia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Lucia new file mode 100644 index 0000000..0f76935 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Lucia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6727a509bb937cb3446d41b57826de70c7028e96f088ab5b7f803beaa18279e8 +size 202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Thomas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Thomas new file mode 100644 index 0000000..6ae506a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Thomas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:974aeed3d79124b50265c83d84f23cbe4f0328d00c75f42dd3abc5d4c0a78de1 +size 203 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Vincent b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Vincent new file mode 100644 index 0000000..934e14a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/St_Vincent @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b19404d295964ef66f47802836bb728fce8e6481115797c0b5f200c354d7c8a +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Swift_Current b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Swift_Current new file mode 100644 index 0000000..9736363 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Swift_Current @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:939b25c9412b9e25d73f552e87826999fc8c929770e66491d1e4530046d3e758 +size 874 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tegucigalpa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tegucigalpa new file mode 100644 index 0000000..0b0b68e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tegucigalpa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f0503579b0dddbaf88814a278127d9cd7019edd3c35f4cbfc0ef11c0edafe5b +size 341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thule b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thule new file mode 100644 index 0000000..edecf5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thule @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb0cbb101d3b6fbb6b9dad5446bbf9e6aec65ec38472739e604f68f6aa9ab7b +size 6890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thunder_Bay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thunder_Bay new file mode 100644 index 0000000..5314e44 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Thunder_Bay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:845101f85a6daf9deb58a075473f9e541a0b68461677779b1461de59e3fa3d18 +size 193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tijuana b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tijuana new file mode 100644 index 0000000..deb7786 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tijuana @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7c5cb477a591931ff03c794c84edb2319760c0b70047b325382f211e28648e3 +size 8755 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Toronto b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Toronto new file mode 100644 index 0000000..1ea4f41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Toronto @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a98c6bedda4df608051d702a8e037093a8068e1b85f8f55d42b4468f45662a5 +size 11248 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tortola b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tortola new file mode 100644 index 0000000..30e6776 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Tortola @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a236ec38f3a122d414208328a462b2a937392ecc6c55f673fb7a402f118d96 +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Vancouver b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Vancouver new file mode 100644 index 0000000..f839c2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Vancouver @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00b5fb8f37dff43925c501aeab039f39f058e002572c4203286317046cc1d700 +size 9815 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Virgin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Virgin new file mode 100644 index 0000000..e89ae70 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Virgin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:561d9d04b0ce0f96a9c351c7d5c30aa1d5a42a3d70066cd9af0da6cbc5388dbe +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Whitehorse b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Whitehorse new file mode 100644 index 0000000..0c9c495 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Whitehorse @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0bc71bd7146145dde3c064ae205df08124fe2402853a9655b0eb799e90f31f +size 2971 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Winnipeg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Winnipeg new file mode 100644 index 0000000..acfa2dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Winnipeg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3fc5f6d93d1d9eb0f3ded33873f33c47f841797d96439966f8e0a5a189941fa +size 9695 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yakutat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yakutat new file mode 100644 index 0000000..05df405 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yakutat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79b44f245d86a4ec299d1a9a2edb2ab92d50ab5a7c1c03759d283ac4070f9005 +size 8683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yellowknife b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yellowknife new file mode 100644 index 0000000..f05cdf3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/America/Yellowknife @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b33838f12640c64ba4f10f50657ec4d8d5b30fd226da4aca21b169b53ad30576 +size 7737 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Casey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Casey new file mode 100644 index 0000000..974abf5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Casey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04247acb2b4fa126d13f4573ff74d15a89cf42b2c5cd7e688d5bb1c1fd3972bf +size 478 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Davis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Davis new file mode 100644 index 0000000..bb1b7d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Davis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f36d2e13d7e251322b7a7b30f39645393525ceb49a2b5c26f27797f2aaf4d7f +size 324 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/DumontDUrville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/DumontDUrville new file mode 100644 index 0000000..7816eca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/DumontDUrville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96f2ab9a9ffcd10598fdf105f68460cc4b4ebc1f18054d1bc8e39df6ad24d1ac +size 214 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Macquarie b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Macquarie new file mode 100644 index 0000000..0549773 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Macquarie @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ea7f1c0b5a0fae653419f1c6d058bddd745a3cdba11900005c157df23ddc01 +size 8447 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Mawson b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Mawson new file mode 100644 index 0000000..13d44c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Mawson @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aca533b8bc82296373edec82f6e0aa45a34d817c7c18ff5e8e94b81c0bd30259 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/McMurdo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/McMurdo new file mode 100644 index 0000000..09fd0ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/McMurdo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d99293c5b275d8e0d7b066084177edf670d5b52b81e87608bab02025f33155 +size 195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Palmer b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Palmer new file mode 100644 index 0000000..4988d0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Palmer @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1637381a20e9d5c6a530f110bdb08d9515e675c9206f000407d8511074948e61 +size 2613 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Rothera b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Rothera new file mode 100644 index 0000000..f5fb27f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Rothera @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:943f10d8e836773f0b7acd13ed8422c0b27813c7bbe0b09b57697d1d70d21ece +size 151 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/South_Pole b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/South_Pole new file mode 100644 index 0000000..5b68f5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/South_Pole @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88057832175bb642b23fc99f788a2f78a24005cf1f84a7b1b5e8c84fb8f4d4c1 +size 198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Syowa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Syowa new file mode 100644 index 0000000..b985c22 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Syowa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2488805de4fea42305689f679f1ae2d80b1e934e657fea329ad39a82dac63022 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Troll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Troll new file mode 100644 index 0000000..3b8c5ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Troll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fd5ab8b7b308cdcea4b747a81d8675988ae218813c91714fc4ca97919cebea5 +size 5370 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Vostok b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Vostok new file mode 100644 index 0000000..fa08551 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Antarctica/Vostok @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1892e98c13ac141c8c92eab942b073a464ba5e2c000c250f97f860be6b108127 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Arctic/Longyearbyen b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Arctic/Longyearbyen new file mode 100644 index 0000000..3f531e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Arctic/Longyearbyen @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25462b656d240da6b01c1a630fac04b25dd65c799b659be1c8bd3ab62610966f +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aden b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aden new file mode 100644 index 0000000..069df06 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aden @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fcddb246932baed880b70c0ca867057e7989aea55eddc174430e1055cd1058d +size 171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Almaty b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Almaty new file mode 100644 index 0000000..ff397fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Almaty @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06dc608c0b8cdd69cce66a6bf86f141c46df39cb45312e684e46f19ed8caff15 +size 1637 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Amman b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Amman new file mode 100644 index 0000000..a9538b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Amman @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b70aabecacd3f62af506df395ab44f47f2ca091522b04ec87ac1407172dd1bfa +size 2682 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Anadyr b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Anadyr new file mode 100644 index 0000000..5af8fca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Anadyr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9df64fda4638f7604624b0f68a885d5abadb1de12af1af5581c2af7dd971562 +size 2086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtau new file mode 100644 index 0000000..14adc64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96b510af9b8c6bc1dfa84e9ed5e072f3fd484eeb66bbebc7b6826ed859ed9027 +size 1665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtobe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtobe new file mode 100644 index 0000000..c9e5a5c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Aqtobe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991638fa2ab2a2f7a091a23d78d99306ee73a740f1a03fbac448edcab55a0e38 +size 1666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashgabat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashgabat new file mode 100644 index 0000000..8c6b830 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashgabat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13745bfa25e6e2d8d0fabae42cb7c37cf9f974cfb343d4fe84e4e2d64a25926b +size 878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashkhabad b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashkhabad new file mode 100644 index 0000000..08ae29a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ashkhabad @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c752f641b98e3c05b14ae31330d1f198daa4a7e354ba9670c7754926bfb891a +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Atyrau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Atyrau new file mode 100644 index 0000000..cdb2dc6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Atyrau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b7b118e6ae72d41740cf0cb2bd8e970700758dcbc0dd6f298199d841df8408e +size 1666 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baghdad b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baghdad new file mode 100644 index 0000000..09c7f0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baghdad @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d20b75d2604c3b742c1629c5ee02cff6783e472249982b272b68f2a6de9bdc38 +size 1702 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bahrain b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bahrain new file mode 100644 index 0000000..fe9e098 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bahrain @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d437037fbf2bbdf969c8e71967080947f24860d431b39f5d8f23151316abcd5 +size 171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baku b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baku new file mode 100644 index 0000000..af75b8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Baku @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:873e8f08b87610d0dafe239d32345248a4595c6b13d1da83ec214d78e88fa12c +size 2149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bangkok b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bangkok new file mode 100644 index 0000000..01dabd8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bangkok @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e72ba908f250fd45d554a12e3e7b3bd2f1c02a6c2431f806fd2a054f843aa90 +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Barnaul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Barnaul new file mode 100644 index 0000000..fae5df6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Barnaul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:992f93a7975f8cd4e94d96b3ba1ecfb3585e52a53f4442a15993402d3f955f66 +size 2117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Beirut b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Beirut new file mode 100644 index 0000000..6485b35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Beirut @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17af14646d562afe17dccfd1d2fba95c122f3e0263906a36eb48bff04acf233e +size 8024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bishkek b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bishkek new file mode 100644 index 0000000..1c36d52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Bishkek @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5e9a8f6a04273af741f648ef10718b004a60d7884fe432ddf85a8f558bea98 +size 1669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Brunei b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Brunei new file mode 100644 index 0000000..065d999 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Brunei @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3110e9dd514e3654a9de777e22b2d2391692927954b4b7e42ed54ab665c3cf5 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Calcutta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Calcutta new file mode 100644 index 0000000..657f15a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Calcutta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1baef7850111d2c33b2a766a8ae804534aba1711bf80a4087a89656ddd8469d5 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chita b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chita new file mode 100644 index 0000000..204390c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chita @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10b6f435b05d887176a4d90ca5ac957f327f62f36f15d6f6e4f81844662429b9 +size 2086 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Choibalsan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Choibalsan new file mode 100644 index 0000000..58b6d8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Choibalsan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94b2c14ef45c695ef6b19d94722e1bcbb629a595f2866dba80f00a66721040b5 +size 1619 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chongqing b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chongqing new file mode 100644 index 0000000..ddf61b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chongqing @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a87382dc5f3c3141547a65e3746af1daf94b51468b96da6cef30e95754c97d37 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chungking b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chungking new file mode 100644 index 0000000..a3e62a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Chungking @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d2b4a761c547f1f853ae901ac71ab49fbe825037079c4e0c89dc940ae4a822 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Colombo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Colombo new file mode 100644 index 0000000..603c04f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Colombo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5b5e6d607a15da65cb00c92c35a63eaf25f547e64cb34bb419cb8cfc2714b1b +size 369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dacca b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dacca new file mode 100644 index 0000000..f903203 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dacca @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3ad560f66ea330e54a147017e6e6ab64452a5255d097b962d540836d7b19ee7 +size 169 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Damascus b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Damascus new file mode 100644 index 0000000..093fd6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Damascus @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e577f0f9da459ba1a325be95c1fa0db2c6ecfc1d64cdb73f3adb09588293ba7 +size 3692 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dhaka b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dhaka new file mode 100644 index 0000000..6788b30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dhaka @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc4562055cc4355e79f9efaa580a4c6a658285916159a5d390a0cda96a97e98 +size 364 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dili b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dili new file mode 100644 index 0000000..4820b68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dili @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bc2e0d77ac35b6d63e11b820ac45ec23a4195ed773680c600c772fdf4b953f8 +size 235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dubai b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dubai new file mode 100644 index 0000000..3c3367b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dubai @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3db174f1568bc23bf467a3dc7baf8a2a2952b70653d4de54f4db391ec50b6925 +size 148 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dushanbe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dushanbe new file mode 100644 index 0000000..aa212de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Dushanbe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:550db44595f59d0f151be4af70d6fece20580ab687ef45de2a0a75fb2515ac80 +size 820 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Famagusta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Famagusta new file mode 100644 index 0000000..3506464 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Famagusta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cfe85c48fc22033411432f8b75ee4c097a5d84897698cb1afd5ab51c47ff5a3 +size 7597 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Gaza b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Gaza new file mode 100644 index 0000000..bc81451 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Gaza @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1823eda63434acf1a37b3a781a783cfeb6bb4cc53ed0469bb685834837f2289 +size 8427 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Harbin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Harbin new file mode 100644 index 0000000..78edf5e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Harbin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12811a7944b892e3d1c0b4b09057cc1899f28081b3cd47ffd248ba49ba308af0 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hebron b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hebron new file mode 100644 index 0000000..26d5f66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hebron @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:732caa355542c8781c61fc8f5265ebfc59c8cc24e78d01011e1e3256e6b34dc7 +size 8402 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ho_Chi_Minh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ho_Chi_Minh new file mode 100644 index 0000000..09ae753 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ho_Chi_Minh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8a19c70be5a9ae1e6091dc8fd03d7719110d1f3d78786c91d5bd0949fb5a428 +size 395 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hong_Kong b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hong_Kong new file mode 100644 index 0000000..2a4b185 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hong_Kong @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee9a6997bc1aad4a8fa95db312774c3f37fbb895549230c30fc66c02cc170eb6 +size 2226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hovd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hovd new file mode 100644 index 0000000..285e221 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Hovd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca88a45e954a9854c680b399e69e4858bf5e861fabfadc19d62d97b734b25415 +size 1583 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Irkutsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Irkutsk new file mode 100644 index 0000000..69738d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Irkutsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61baaad6315ffbdaed6f266880165b06eccaf72f660b7fb01c8b654f3952d68e +size 2089 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Istanbul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Istanbul new file mode 100644 index 0000000..1303bd7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Istanbul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f77c4bd27574e1d2066885def01806a02d3e444424a219a8ec5c114f89665e5 +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jakarta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jakarta new file mode 100644 index 0000000..23904cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jakarta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f39d9f93761b85c254f458317a7de2b4184be9459f2193a85c08662e801269a +size 370 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jayapura b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jayapura new file mode 100644 index 0000000..1fd65a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jayapura @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:761c1e80febf46d6d6215cebf211f121974156d9bce2fb4258c1074c6ed2ce22 +size 213 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jerusalem b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jerusalem new file mode 100644 index 0000000..59495de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Jerusalem @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bdc2c693134199c2ecd374cc01468813db29df47422c706a3ea2be5ecca177a +size 8135 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kabul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kabul new file mode 100644 index 0000000..d92bb30 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kabul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a59c95c038f2e945d685d96fa9b859ce82a643a1b7f56eb36b2c809de91cd4ba +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kamchatka b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kamchatka new file mode 100644 index 0000000..8ce5e65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kamchatka @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e0278e389072437bc07a5032cd58e9e5b1b2bdb20918632c422efa97bc43abf +size 2060 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Karachi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Karachi new file mode 100644 index 0000000..e9dcb05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Karachi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e7f7acae8b4018a835328744f680c8054771805bb0bb07678a09737963c090d +size 457 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kashgar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kashgar new file mode 100644 index 0000000..d684ad6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kashgar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b2251f0a41cbadf45d69f24604834167b14d8d33b510e635719ab404cabbce2 +size 174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kathmandu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kathmandu new file mode 100644 index 0000000..a23f3c6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kathmandu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0a0816e62036637f75081cbf17a1e6b8fbc2d86aec3cd2e234bbbdd6ec9f109 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Katmandu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Katmandu new file mode 100644 index 0000000..223933f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Katmandu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9acc9586b6f8b53bfe8b242283a434a9a9633d60559ebfdee263b4c8915d50ca +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Khandyga b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Khandyga new file mode 100644 index 0000000..3f3adf9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Khandyga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33203d7fb7f3d1f848640ece0642a2305e1863b4d47413075e2e7e40bd7418e7 +size 2119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kolkata b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kolkata new file mode 100644 index 0000000..8a74ecb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kolkata @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d464564ed2efc9dada1586d4fc99fe333726d2be15a00e30c2391f588896463 +size 336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Krasnoyarsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Krasnoyarsk new file mode 100644 index 0000000..eb06359 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Krasnoyarsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53b8d5e7fb1bd67fece66a933d9bdbb773f14a8c04d316a2a1b00ec6dbc151dd +size 2062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuala_Lumpur b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuala_Lumpur new file mode 100644 index 0000000..9aac595 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuala_Lumpur @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:056d352ddcfec155375430fff3c8743ed5c9b51b866a099e97e12cc381071f50 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuching b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuching new file mode 100644 index 0000000..d019728 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuching @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e35e560675b0b5322474900d4ec8326c504788c1f82e533b09785deeff092df +size 669 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuwait b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuwait new file mode 100644 index 0000000..5a83f48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Kuwait @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e0c60a9aa64fb8602edc35311f7436b04853970a21c1f6c871494a09aad5787 +size 173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macao b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macao new file mode 100644 index 0000000..31dd9b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macao @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4308d741c83b263c7c9fb8ec692a7b7b502135e407b265b12ea7ef92523455c0 +size 169 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macau new file mode 100644 index 0000000..815e4ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Macau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbcb92cecb1cb0bc284adc30d70c5f57b3afc992136a0d898abc64490bb700fb +size 2217 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Magadan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Magadan new file mode 100644 index 0000000..516cf8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Magadan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c6eeeb7975a95c2b0678d137e6a735238d244a37fa11078050051511de499fe +size 2088 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Makassar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Makassar new file mode 100644 index 0000000..f351bad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Makassar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30d8ab00e32ece51442c0310e650d89d6989e0809600ee334cb10c506d84bf9d +size 243 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Manila b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Manila new file mode 100644 index 0000000..acd6ea0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Manila @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:070d61a0e39643a700aba89a8a4be5733ba456958966098405e11ecdfa854d76 +size 421 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Muscat b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Muscat new file mode 100644 index 0000000..185b11f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Muscat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:011b7de1c9f7ec241b224bc864d8ae66acb433fbc8ad939e4dbeb12be6390243 +size 170 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Nicosia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Nicosia new file mode 100644 index 0000000..b59b5dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Nicosia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c3e4844c70d361893ef022d6c3c8e38b243e91d40c5a726c924355476816f25 +size 7625 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novokuznetsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novokuznetsk new file mode 100644 index 0000000..d6589c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novokuznetsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a445d47d834c28480d1e2036eca4962b35afa494c219065d4879f71c1830db +size 2063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novosibirsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novosibirsk new file mode 100644 index 0000000..ca145f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Novosibirsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef799077291f6b3b19e0aec88f224bb592faad09d30740f2376d3d20f2169639 +size 2121 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Omsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Omsk new file mode 100644 index 0000000..2f62dae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Omsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2605cd1e26e4ab48bcb4399bb5b17bad115a47f87ba3dd54b55bb50c3fe82606 +size 2055 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Oral b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Oral new file mode 100644 index 0000000..e4eb381 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Oral @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:933bbcd7ae0bf59a5b4a6e0ef74c237feedc42e6a3aeb2158131aa70fba6fe47 +size 1664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Phnom_Penh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Phnom_Penh new file mode 100644 index 0000000..09c1055 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Phnom_Penh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcee88876d00396918f43deca421b6c9b02f84b5866a2ce16e641b814b390a9f +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pontianak b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pontianak new file mode 100644 index 0000000..969725f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pontianak @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac8370aedf5fe3fe1e80710ce117dee23815be377d418e4b4f3259a1930e8dbf +size 369 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pyongyang b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pyongyang new file mode 100644 index 0000000..d78fc06 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Pyongyang @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29ba17f756f5c0bba30febf44e620504d04921c832bd1cb56e1b60ef288b57df +size 273 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qatar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qatar new file mode 100644 index 0000000..99cbc72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qatar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18cca69f933795ce3f7db31506efc063e6ce1dfdcab32aa387c398456d7f7e1f +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qostanay b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qostanay new file mode 100644 index 0000000..36a3016 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qostanay @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4191629b874c988291e8fd13e675a3ed685d677f6541313975fc4610e47f1dcd +size 1668 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qyzylorda b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qyzylorda new file mode 100644 index 0000000..5958c9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Qyzylorda @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd6b067aa3ef6935b4e89ca36e6a03fcb97f1e0ee61a7b5d46c06bf4de140774 +size 1670 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Rangoon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Rangoon new file mode 100644 index 0000000..3baba49 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Rangoon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4d2c38d8e7377a528291a88129cdac40ca4d40a5f1cd8adb98228527556906e +size 174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Riyadh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Riyadh new file mode 100644 index 0000000..3cd7ed5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Riyadh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:411e31d09ffa48e44169c42661ae2f7fc142460bcaa216837d8c4740983ca7bd +size 148 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Saigon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Saigon new file mode 100644 index 0000000..dbee61f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Saigon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c695981a0df691c3f4509999fbc52858adc75024cccbdefbe1094fed17e809e4 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Sakhalin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Sakhalin new file mode 100644 index 0000000..3b989ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Sakhalin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7d0ea5cef908442ab0d777a4b097bed18540cd5280ff63f33dd989e27e72908 +size 2117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Samarkand b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Samarkand new file mode 100644 index 0000000..5b38c00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Samarkand @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35e4b905723891281d9a6a0a1fd3760a3a48136e1419c686be31ace83bf7aa9d +size 879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Seoul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Seoul new file mode 100644 index 0000000..893128c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Seoul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f82c94650572fe4d03bc1fe54ced8f4bf55dfbee855d52de3ea6378240af93 +size 985 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Shanghai b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Shanghai new file mode 100644 index 0000000..12f327e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Shanghai @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aabb42d9efe95d906b7f34640e7815919a1a20979ebb6ec1527fcaa3b09b22a +size 981 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Singapore b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Singapore new file mode 100644 index 0000000..c965d91 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Singapore @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05c76b58a4e356fd358e24fbc71fae98dcb18c441c8d8cbb13a18d4f6e406062 +size 372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Srednekolymsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Srednekolymsk new file mode 100644 index 0000000..861e6ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Srednekolymsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:705d6d8360c2dcd51e909e39e1910fe876145220d151031612da36b247207395 +size 2064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Taipei b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Taipei new file mode 100644 index 0000000..0e58962 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Taipei @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:389c9d3ee2970665d0d8c5cb61b8b790c5fbddc0df0bf2b9753046f5953a477f +size 1344 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tashkent b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tashkent new file mode 100644 index 0000000..a04f1f1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tashkent @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4445f3f892c7267a6867009cc1a3f0b0548d0240408375a9d15360b28993c2a9 +size 878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tbilisi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tbilisi new file mode 100644 index 0000000..d94c45a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tbilisi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b637bb0e49144c717e99e93540cb2c4d3695d63b91fe42547f2f0aa006498693 +size 1729 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tehran b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tehran new file mode 100644 index 0000000..494fa9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tehran @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25870503a8a679da13b98117bd473eaa0c79b094b85d3ad50629ff0946d5eace +size 2354 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tel_Aviv b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tel_Aviv new file mode 100644 index 0000000..1fa4ff6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tel_Aviv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07537a30e6236d9e334dafd5c4d352d25fdef95d6dc7496f5d93efab74d9ebb1 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimbu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimbu new file mode 100644 index 0000000..5a092cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimbu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37459c17b59639df62b3f3943751902ce6aaf1f11b7630069db45052ebefb5b9 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimphu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimphu new file mode 100644 index 0000000..df59884 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Thimphu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b797c74e3840298c3cd8149fc8aa4bce839efe79e7c3310986ff23c965607929 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tokyo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tokyo new file mode 100644 index 0000000..bda4635 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tokyo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3da522fa88541a375d53f30a0b62dc4a305fa0315fee534b7998c9e0a239450a +size 388 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tomsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tomsk new file mode 100644 index 0000000..10cc2f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Tomsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b64a01d0f0b5ec7a1410c3bd6883ba7cc133e9f073d40e8bfece037e3a3fa24 +size 2116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ujung_Pandang b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ujung_Pandang new file mode 100644 index 0000000..6a4f111 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ujung_Pandang @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:732751845acedbffd3c6170f4b94cb20b25bfdcfcc5eea19f4be439f5c5b573a +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulaanbaatar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulaanbaatar new file mode 100644 index 0000000..0f65c4d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulaanbaatar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56a26981163a717cf388a423cfe7a2bad1be8652be2e338670cbc0c0a70e5e9 +size 1590 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulan_Bator b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulan_Bator new file mode 100644 index 0000000..c3d8667 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ulan_Bator @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d17fdaf17b3dac3a1310e2332f61585598185e64ced799abd68249eb5b698591 +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Urumqi b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Urumqi new file mode 100644 index 0000000..9febc86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Urumqi @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c445b8030deddded0aff5cc692cc323b63be8c14bbd42dc3fde90ad4f9d14785 +size 149 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ust-Nera b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ust-Nera new file mode 100644 index 0000000..af791fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Ust-Nera @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d639c0fc69b3beebc96969092f9590eb48e7946e901b225bf245e165973b9a8 +size 2058 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vientiane b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vientiane new file mode 100644 index 0000000..a7c9008 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vientiane @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18f5e4fe8247f676278ac5f1912ac401dc48df5b756d22e76ff1cfa702f88da7 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vladivostok b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vladivostok new file mode 100644 index 0000000..8525c82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Vladivostok @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2558c96e25359c72f168dac6fb3c16c54f8fd7d0724eeb1671156d4a1f42ac6c +size 2062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yakutsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yakutsk new file mode 100644 index 0000000..5e15946 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yakutsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bef13638c46f16435d326c675907e61bb68c8173153ced3359e983be0e413e5 +size 2058 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yangon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yangon new file mode 100644 index 0000000..ec17e61 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yangon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2526557810747e78e713ae09bc305621a80faeecf8d441632e7825738d4c79cb +size 244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yekaterinburg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yekaterinburg new file mode 100644 index 0000000..c6c3311 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yekaterinburg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c78699efc60758b8f8d0d1deedfded5e65c65ebf3082b23e60bdea8bf8fbcfe +size 2095 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yerevan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yerevan new file mode 100644 index 0000000..30234b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Asia/Yerevan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20871fa6aa959ddfb73d846271b4a568627b564cfc08a11bdd84b98c2f2019a3 +size 2029 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Azores b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Azores new file mode 100644 index 0000000..4a053cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Azores @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b3609be4e93d21a2ab492594edd387931e2c787e8471c9f2d3a677f34002d8f +size 9879 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Bermuda b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Bermuda new file mode 100644 index 0000000..5ac8a56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Bermuda @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:099c3befba3b4c00ae19bc53d475a52b32fac9b36ec823c8eaefc7d00f78f388 +size 8784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Canary b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Canary new file mode 100644 index 0000000..19bd861 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Canary @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2026944dcdebc52f64405e35119f4cf97ea9aa1e769498730880b03f29a2b885 +size 6856 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Cape_Verde b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Cape_Verde new file mode 100644 index 0000000..3a5ad1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Cape_Verde @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ea59acdb5bbdd3c6abceea456838a5ca57371a3d2bb93604b37f998ed8b9d4d +size 246 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faeroe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faeroe new file mode 100644 index 0000000..be70739 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faeroe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64fb8cad17cd36666c7027aad01344fef659b13699eef1942365842f8ed2170e +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faroe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faroe new file mode 100644 index 0000000..bf52322 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Faroe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:795f438e7f01342d5f25eccdd09fce65c03c5d2d561b9b5191301d57ec16b850 +size 6796 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Jan_Mayen b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Jan_Mayen new file mode 100644 index 0000000..ae6ca7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Jan_Mayen @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11bf0746f95ba01807d3b34c8fae3ff4ae9db5e4e6bc0cb8b36906cc3f44ede5 +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Madeira b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Madeira new file mode 100644 index 0000000..5f36c36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Madeira @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2a0d0ddc26806a05b2be806ca3f938db12a3fa40110b8b21fd3f04efed3a531 +size 9709 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Reykjavik b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Reykjavik new file mode 100644 index 0000000..48de49e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Reykjavik @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda015714260001bae2848991dd21e802580be2915797e5dabc376135d1c5246 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/South_Georgia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/South_Georgia new file mode 100644 index 0000000..59303c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/South_Georgia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51bfabcb3388107753a3c1a8cf31118e6627132baa09b9878d9e7cedbebb4886 +size 160 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/St_Helena b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/St_Helena new file mode 100644 index 0000000..9cdefeb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/St_Helena @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c9ca8966fc8bd0be70f4a187e17e56fb99139bc88c392e82ba2e23e23111c54 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Stanley b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Stanley new file mode 100644 index 0000000..f043970 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Atlantic/Stanley @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0e99ef01f140cd5aafe16803a657922207e6f7f6af10b0ae795790916c302c4 +size 2256 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/ACT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/ACT new file mode 100644 index 0000000..dfd8285 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/ACT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df7cbddcbb2f5926a07d19a35739e5b8dcd9733c037f7d1ff95753c28d574674 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Adelaide b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Adelaide new file mode 100644 index 0000000..dbef368 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Adelaide @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c43d3152982bcfd5b9f51d0e909cf3a558bed1c270feffe030531d38d6f91b7 +size 8372 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Brisbane b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Brisbane new file mode 100644 index 0000000..360e66f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Brisbane @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d3c39edab34a8db31a658a1549772f7d69eb57565e40aa87b707953a2d854a4 +size 674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Broken_Hill b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Broken_Hill new file mode 100644 index 0000000..d89caa0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Broken_Hill @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:734f295bd0b558bdf6178de62151b8913699d08ab2b1d101c55b8debc410074c +size 8437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Canberra b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Canberra new file mode 100644 index 0000000..c702946 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Canberra @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fe3ced97293fe0573d5ece0cef59ce5ddb4c57bc568ae7199e77b01d3ade17c +size 195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Currie b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Currie new file mode 100644 index 0000000..9538433 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Currie @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dd4ec4ed4f854e2ef6162b2f28c89208710f8ec5aabb95ffa9425d3fbbcab13 +size 193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Darwin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Darwin new file mode 100644 index 0000000..5645ce5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Darwin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac004fd4b3c536406991ec13ebb3e64e0ec0c7b264bc18c0700c8fa545868155 +size 437 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Eucla b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Eucla new file mode 100644 index 0000000..59d6744 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Eucla @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79d0c770a304360db33f3d1ef7b3935f1e4e8125893e0dce683ac35a51302cfb +size 759 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Hobart b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Hobart new file mode 100644 index 0000000..46089fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Hobart @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d813f6a97befc22ca4f24c59eb755d269b9c68a449cc7cf0d2c61f911860ebe7 +size 8734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/LHI b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/LHI new file mode 100644 index 0000000..9397687 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/LHI @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d84e4040fbc529c9e0366bb74d0cfadeeeeda0dfcc6c2c9204ded6c6455cac3 +size 199 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lindeman b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lindeman new file mode 100644 index 0000000..1574460 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lindeman @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01b278309353849cc2fdf62a30e2ff483833d5713cf5e329252738be6f2c0a84 +size 824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lord_Howe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lord_Howe new file mode 100644 index 0000000..8647ebf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Lord_Howe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76d1f1ed67b8f8d6903789c2fddf79590a83677972d416f5f3c9687614ec6238 +size 7764 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Melbourne b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Melbourne new file mode 100644 index 0000000..dee3ddd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Melbourne @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f21b9ea51c0d41bad0420fe0601e5a4b491fb895856f4bddf6541d704469d92f +size 8341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/NSW b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/NSW new file mode 100644 index 0000000..4137798 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/NSW @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73d7c9e207e61acf8df7242bdcd84488189033e22a84873a953b65de02fa1b0b +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/North b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/North new file mode 100644 index 0000000..4ada501 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/North @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a983c9cad7e542caed43b083e68cd2b782959a4b54015f374c29250d3acf9b8d +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Perth b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Perth new file mode 100644 index 0000000..1c863de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Perth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc1b54ca261074e47a8a486feac12dd04d46166d1d2b44163bd8791bec32d275 +size 739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Queensland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Queensland new file mode 100644 index 0000000..919ec17 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Queensland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda669b9bfb3e08fc23ce67030148b9e4740824add8de02580d6afd31ce05bab +size 203 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/South b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/South new file mode 100644 index 0000000..0002820 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/South @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9dcfdc377901ec0c0feb9cea743c2c1425273f69a1baa7bf3b74fec5885b267 +size 198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Sydney b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Sydney new file mode 100644 index 0000000..68a46eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Sydney @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc453486325ade1d31f14087b76d4936f3a6d551abd1db6fcac129bdb043951c +size 8338 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Tasmania b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Tasmania new file mode 100644 index 0000000..f5b409e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Tasmania @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c94fa7a7640cd00963ee8ff1a3d9dcda2075408739d998edbf7cfc998db764fd +size 195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Victoria b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Victoria new file mode 100644 index 0000000..17463e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Victoria @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbef9c5bdd290fec5fa740d697143332d3ca1fc373cf1df736f1883ac9ba3298 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/West b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/West new file mode 100644 index 0000000..38d7978 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/West @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75abb7f20c4a0b618138aa190af33ceaf2a6d2c707da6c1314e4bff2f9904f58 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Yancowinna b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Yancowinna new file mode 100644 index 0000000..e908949 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Australia/Yancowinna @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55a9264d0414644a1be342106ae86086a6659596dc9322a74fc4d1ddb41f7c60 +size 212 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/Acre b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/Acre new file mode 100644 index 0000000..d9fd389 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/Acre @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f594239a434052d36053a2b3eab134eadbad06eb6737e67cf72166dab157537 +size 194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/DeNoronha b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/DeNoronha new file mode 100644 index 0000000..2f28d7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/DeNoronha @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a676562a90ff8587a775f6f0e3be05d870456a56d25b5330816bf9043c8d475b +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/East b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/East new file mode 100644 index 0000000..2e821b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/East @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961fb3ab99a63b1e9704b737eab2d588b5a39d253a213e175cc678bedffd498d +size 191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/West b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/West new file mode 100644 index 0000000..b71cf13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Brazil/West @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0500c9a248c8ce9030ea30d0af9dd95dc465480baf60646c0b7c511fa23c6d1f +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CET b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CET new file mode 100644 index 0000000..c935628 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CET @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2aea7cfd428a43d9db938bcc476623adc1250bd8057013a7fff5f89d7ff8efc +size 7736 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CST6CDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CST6CDT new file mode 100644 index 0000000..2d8808b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/CST6CDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73a9841f233aa657afb6ced8a86a37d55fe5582dd996b9b28975d218bccc078f +size 8505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Atlantic b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Atlantic new file mode 100644 index 0000000..c162430 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Atlantic @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dc6354d761cbe7820c9186568cab87ad48ca925507f6a740357195b60e16d87 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Central b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Central new file mode 100644 index 0000000..f2eff9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Central @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db32e83949d62478d229e9fb57bb1624d21b3a9ccee4cd55335f8262c01d820a +size 191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Eastern b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Eastern new file mode 100644 index 0000000..3c2f088 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Eastern @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22844994ae893f3236a091b050e932e84a5218ec0d01f72595e17ccc471fa564 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Mountain b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Mountain new file mode 100644 index 0000000..76d8fc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Mountain @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a203e60ff19dcdeaad14121720de51da73392d25b40ffa301c1935cdf89517 +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Newfoundland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Newfoundland new file mode 100644 index 0000000..eba1b87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Newfoundland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f42f45fd7d059ca47650d445420de8320f3a7c1cbc7671fbfa8a8881274433 +size 196 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Pacific b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Pacific new file mode 100644 index 0000000..f9107e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Pacific @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5c4fd46054b190a6d4b92585b4dae4e3a8233ee2996d14472835ddd264911dc6 +size 194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Saskatchewan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Saskatchewan new file mode 100644 index 0000000..80988f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Saskatchewan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46ba00ae3a07a4dc83d6cb517d87c9cbba491b3421fe9ad6c74cac5695eb73f7 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Yukon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Yukon new file mode 100644 index 0000000..9c42782 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Canada/Yukon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1b1af37dc89c6ba663e4e967a18409ae4e0fa9ef1b908d0461368da31001c09 +size 195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/Continental b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/Continental new file mode 100644 index 0000000..c6d9761 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/Continental @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b40167dd0c0b5c293861070c4ac249f78ddf8bad798dd0165e3ae894c9b9570 +size 194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/EasterIsland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/EasterIsland new file mode 100644 index 0000000..01a05c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Chile/EasterIsland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e2da1862e0e0f131b7c6eb12fac5f920852c61c162993a30bc843a464a5aad4 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Cuba b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Cuba new file mode 100644 index 0000000..ef11522 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Cuba @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f4f2d7f5bca4e5183460c0153d2b98f5239a99f149de6638b311c73cedb1329 +size 175 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EET b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EET new file mode 100644 index 0000000..101f18d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EET @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64e284f9f7a36cc0a352809141d76e73a99344a9f30cffea254cbb9d2c589ada +size 7440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST new file mode 100644 index 0000000..f7da015 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6344be02529c1cc5f7b5fe14b7e9bbced4dde68a24b824601eebcae207abfdf2 +size 111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST5EDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST5EDT new file mode 100644 index 0000000..6e59683 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/EST5EDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0be6161403bc5a96bfab174f2c3fcba8a677d4349699b408e9872b9dd0fe15ce +size 8505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Egypt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Egypt new file mode 100644 index 0000000..dcc94e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Egypt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:936b6484469351def8fafe8ec180862729f5e43bde4e53e2e9636e221b54c3c2 +size 170 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Eire b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Eire new file mode 100644 index 0000000..92b17cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Eire @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b78a833337efec8b5f64622f1bfda21fcb79cf290e9cf32a54b206eb20c6fde9 +size 172 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT new file mode 100644 index 0000000..239313b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66b0df8888883bff44b18728b48cdf24aaed0bb745d601f3422c4f2d4063e0ac +size 110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+0 new file mode 100644 index 0000000..2aab142 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64466ea3759301e88c29ad1a833cdcbbc495eb4a5a3ac45e7b2987fecd6702bd +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+1 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+1 new file mode 100644 index 0000000..3dde15c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+1 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3be1ec71d2cc88fa9a3db7dc0476475f33fe5bcbe6bc35c0f083859766466c32 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+10 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+10 new file mode 100644 index 0000000..cc4914a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+10 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e61e826e6fbc2396ef152640698098f4477d4ffdfe5f791f62250c3ec5865304 +size 118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+11 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+11 new file mode 100644 index 0000000..e674d56 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+11 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:143528946275ddc8b894218d3f1be56c950f740828cec13166c3d7e8e1b6bb7e +size 118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+12 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+12 new file mode 100644 index 0000000..4053c88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+12 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a93eafac2c1089c608c8536127d0e8b53d8c7cfd13ae7dd69339e12a89f803c6 +size 118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+2 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+2 new file mode 100644 index 0000000..df31ae5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad5833153446960bde0653a22ae2111bf80cfd61c3010993ce87b81d40c75c72 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+3 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+3 new file mode 100644 index 0000000..e482140 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7bee4c71905eddb40baf42c0cd0dc70bb9f298eaab8b9367d484b8431dd084a +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+4 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+4 new file mode 100644 index 0000000..a6e6d24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26d1ef512cc5797fc63ba2b83c7d6271025f4d4f5c904d9fa8e97f053393d9a7 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+5 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+5 new file mode 100644 index 0000000..d2612df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+5 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:054910bddfc44d9b806bbd3008c30547fa57ecd3c043418c406a725158144688 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+6 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+6 new file mode 100644 index 0000000..8368b3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d53bb247e0e429a6243ab9a9bdcae1ee1cf5f271d79748a843631906ab63a988 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+7 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+7 new file mode 100644 index 0000000..f7caf7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+7 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ba5779e35d581b409f53b14b6e28ecc16f536ffedd45ddbc8dae4b8c28f66e7 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+8 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+8 new file mode 100644 index 0000000..bc40ffe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+8 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca87559b154b165e83482aee3d753ba8e38abca347a005e8504c566433cf4cb3 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+9 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+9 new file mode 100644 index 0000000..a37ad9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT+9 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0987a1d078b0993fb3b07208e3f4538a2319dcdddeb2faea32fc463deafb8db +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-0 new file mode 100644 index 0000000..b8f6099 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff27b3dee9306641ff344801e06bb33ff768cdccfe2409fa8af752ff6d39f66 +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-1 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-1 new file mode 100644 index 0000000..0757f8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-1 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4bf883fbe9246ef4079179a746b1f9e59f2c77d4f598794b60732d198dc6044 +size 115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-10 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-10 new file mode 100644 index 0000000..f7b7850 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-10 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef3046d7789cae069b5473d053f3ef0157248f8a359a1282ee02ba613a75fc94 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-11 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-11 new file mode 100644 index 0000000..e5570dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-11 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccdeadbd18be81e59a669a460a14afcbff733c3a5d164fc2b6b93deaf009b78a +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-12 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-12 new file mode 100644 index 0000000..3c62a1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-12 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b61b18c653e25f7245b0bb6e04ad347e038585b145962fd1eeace26f118d54 +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-13 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-13 new file mode 100644 index 0000000..94b8941 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-13 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9f1ad5a7cb5ed43c5e6e8a7a9b887329890abb75b9fc9483b8543a367457ebe +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-14 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-14 new file mode 100644 index 0000000..fdf5a5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-14 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a37a7160027bd38356764c4d1aa5b9b17f8d5dc3cfb81ef2ed399e44c41734ce +size 117 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-2 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-2 new file mode 100644 index 0000000..936dd8f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7211bf8329b2388563ed8fa8c5140099a171b8a303a9473e9a6f3af0c5d239cb +size 115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-3 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-3 new file mode 100644 index 0000000..7b73673 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-3 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc86d65b0b94725dce4c88edc4300141abbca4b6cdecf037c437df49f0c1d6a +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-4 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-4 new file mode 100644 index 0000000..ca11335 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02e2eeaf88ee179ef63dd29acc7384a4b46de1e3a151c1f3a5dd31bbb5a05aee +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-5 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-5 new file mode 100644 index 0000000..d31385d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-5 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a2c75dca11d1167126f0d44a8682420faf75b0b82b3dcfc35a9f028a9a759e8 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-6 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-6 new file mode 100644 index 0000000..62c02b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d22c87321373ec0efb0f312925476cd0747323ef303e17621a871bf814c8abb1 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-7 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-7 new file mode 100644 index 0000000..5fa3a92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-7 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70cb3a766a2e84148b68613d68687d263d3592ed4b6e672797fb20801eca8231 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-8 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-8 new file mode 100644 index 0000000..77aabd1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-8 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80c85d59416cec91db3dac5fdd2fd7b91d6fc74a37bbbef6ff58f6f6816e8fc9 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-9 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-9 new file mode 100644 index 0000000..6fbb98c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT-9 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57395bb968afa5a041eada4b684b82f0379a9333f9522d69f069a79fdea2b8d7 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT0 new file mode 100644 index 0000000..d9fc317 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/GMT0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab742f93be44bd68ab8fe84505fa28120f1808765d9baed32a3490af7c83d35b +size 158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Greenwich b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Greenwich new file mode 100644 index 0000000..c4dc53e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Greenwich @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f89167b6117838d9679c0397496b6d96d3a7beaef0bd99406abacdbdb658fbcc +size 163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UCT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UCT new file mode 100644 index 0000000..710a5ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UCT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0856d14dbbc53d46460bcd530bd070e9e8966d1c96ba01ba556e215a98c09cd4 +size 157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UTC b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UTC new file mode 100644 index 0000000..c58d34f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/UTC @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d74d9ec2397b1708fef47806294b0bca26679f3a63149ae24e4e0c641976970 +size 110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Universal b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Universal new file mode 100644 index 0000000..95e34cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Universal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2b62c5914de169a68a018a5b47c1253dbca10a251862d17b0781ecfd19b6192 +size 163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Zulu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Zulu new file mode 100644 index 0000000..0805f9f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Etc/Zulu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bbd6e93206ff3b7017afbe63905b4c932c422b582f3ce2a79a7b885d390ee555 +size 158 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Amsterdam b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Amsterdam new file mode 100644 index 0000000..b24266d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Amsterdam @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46141e7bc0f99d2117319c661569f8b38af7d00108ced5784fa3a3b5090ef8e9 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Andorra b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Andorra new file mode 100644 index 0000000..509a794 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Andorra @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0b48da7ca3659450d87cc0ddfddfd28b464543df1ee40d935c44d5cd7c9b9b3 +size 6927 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Astrakhan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Astrakhan new file mode 100644 index 0000000..f0b1aa8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Astrakhan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b5fb0af225974d117374028285f20a02b833ff4136e6bfae7b65e6d6d28829e +size 2063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Athens b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Athens new file mode 100644 index 0000000..8b92752 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Athens @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47353319419505aab205c23f8c97ea0b12e5ded2113147794f77b67349aff52f +size 7954 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belfast b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belfast new file mode 100644 index 0000000..b16fb4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belfast @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:557023674f6e8376707517103ee69c1debbe53cdd4bcab11e763cc53b9cb1908 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belgrade b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belgrade new file mode 100644 index 0000000..f4b53ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Belgrade @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74b225511b518b0ced972cbb33d694697712ccb96a6d81e0f50ada28cf6e2c92 +size 7309 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Berlin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Berlin new file mode 100644 index 0000000..64f0624 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Berlin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e7111f06288069b52a4e1ca0b016216df9328fb3b1560a740146497ccdd4d24 +size 8020 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bratislava b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bratislava new file mode 100644 index 0000000..d070f62 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bratislava @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d7c539aaa1e3ad5ef3574a629523b5b781f1a91d352c9b39b8de7316756026e +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Brussels b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Brussels new file mode 100644 index 0000000..611f7cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Brussels @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1402a2072adc9ebb35f4c0368d2e9a7a11493626c667c022614ffb7cc05b6cb6 +size 9223 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bucharest b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bucharest new file mode 100644 index 0000000..1a33ff7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Bucharest @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c560d45104a8dd73fc7370b5ac1615e22043dbc93dfb46a9ecc6468c2d38b19a +size 7974 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Budapest b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Budapest new file mode 100644 index 0000000..7a57201 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Budapest @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b58f3e9066b8b57eb037d509636aa67a06acc8348be6c48482d87cdc49844a4e +size 8287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Busingen b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Busingen new file mode 100644 index 0000000..32caa41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Busingen @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f511a80ab70ff93a0eb9f29293f73df952b773bb33eb85d581e4fb1fe06e4f05 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Chisinau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Chisinau new file mode 100644 index 0000000..8dce441 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Chisinau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd1c0ab412a5e9c97f533c4d06b773d045215b92568a4e89adc93c7462d62ec +size 8096 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Copenhagen b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Copenhagen new file mode 100644 index 0000000..687786e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Copenhagen @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b9a0f1775355e311fb63903e3829f98b5f6c73c08f1bece1a2d471acc2673e3 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Dublin b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Dublin new file mode 100644 index 0000000..92a36db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Dublin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:895957521d6ca4de7e4089dc587a6c177b803d8adf63303b1f85deb279726324 +size 9810 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Gibraltar b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Gibraltar new file mode 100644 index 0000000..fb28a7c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Gibraltar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0524a31131405347c1d5d86c5ee38a2064ab055c030ab3b43f25db3b28ffd8d2 +size 9509 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Guernsey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Guernsey new file mode 100644 index 0000000..6245320 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Guernsey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7046808a8e80b7ae449d1a49ae3e480096736b7d3f554a240c7dfb10f82076a +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Helsinki b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Helsinki new file mode 100644 index 0000000..833c52f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Helsinki @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b5c0a9261a414ea8dc34f594ee05bee16f695488b230857d2b569a6b603bc39 +size 7368 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Isle_of_Man b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Isle_of_Man new file mode 100644 index 0000000..3494ec5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Isle_of_Man @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f1151b0528a5325443379d4e7cce32c00213722ad9df764e1dc90198084b076 +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Istanbul b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Istanbul new file mode 100644 index 0000000..c28dd4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Istanbul @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08061a80fc0f1ef375eefe784eacdf0812e289fd67e8613bdec36209985ca1d7 +size 3683 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Jersey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Jersey new file mode 100644 index 0000000..b69cb28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Jersey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97eb33915ed7c9c34144f8f42357fab2262b3cd45287f3cffd26c33d65f7651e +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kaliningrad b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kaliningrad new file mode 100644 index 0000000..4206615 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kaliningrad @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2387d26df5429df9867f42f7d4f872dc146643b4b3cc57da7298c18561de8bfe +size 2512 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kiev b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kiev new file mode 100644 index 0000000..5a03e20 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kiev @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05c55f87182f0d5d3e8e6c1f9164eddbdb8035146a0955c04283bc1347d45b30 +size 173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kirov b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kirov new file mode 100644 index 0000000..485dbc9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kirov @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60884d4b8b17a9ab8fb5697da95f62e570755348109c661d783d56cd047bbe9e +size 2029 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kyiv b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kyiv new file mode 100644 index 0000000..27f2fad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Kyiv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:591264f69db19ddcdc90e704525e2d3d3984117b710f482f19da8f88628ee6a7 +size 7455 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Lisbon b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Lisbon new file mode 100644 index 0000000..9ec2fb2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Lisbon @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fac9812411f88014779d34722f3e0d2750e45bf21595df1ae14cb9ccfd3f33f +size 9878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ljubljana b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ljubljana new file mode 100644 index 0000000..91d8233 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ljubljana @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:713a842197516d618f2d86977262542a1ca334d7df6026539fa2f2980dbf4cd3 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/London b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/London new file mode 100644 index 0000000..3a43d5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/London @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d04c4e25df4de1c1cfe1ef84b3b6dd746cf08a271ab0958f22c7d580a3ed10e6 +size 10211 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Luxembourg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Luxembourg new file mode 100644 index 0000000..75b7b05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Luxembourg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c0486a5b235e8b01069420976e1b8d08d77a4bef587203af1b68d7b5333546e +size 191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Madrid b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Madrid new file mode 100644 index 0000000..a2c413f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Madrid @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5337c9843c56deec6b91c4468c76ec1c896e80421b72b583b69de5579063e09a +size 8517 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Malta b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Malta new file mode 100644 index 0000000..e71183e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Malta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5c240baaece8235d1fbdd251c1a67cb2d2fc8195dd5bbe37ff9cff0445fcda2 +size 8724 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Mariehamn b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Mariehamn new file mode 100644 index 0000000..62d0857 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Mariehamn @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6136c3cfa4a767e7c9dda23a283ad98b72e9868f192e6a8e3bfe6396f6989bd1 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Minsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Minsk new file mode 100644 index 0000000..e21bed0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Minsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c95ea696ea578def726502ac181af475a676030878f56b4e2d667757bbd1c49 +size 2177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Monaco b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Monaco new file mode 100644 index 0000000..1580a8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Monaco @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9df16bb1c26100635dc4cb1df409b0fa7b139c22bf09574ed337ee244ca3c546 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Moscow b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Moscow new file mode 100644 index 0000000..ffcb4c2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Moscow @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31f9c3c2f17b3ee4fa6d9ee6a86bf407ac0377de4d666c65e86ce5ac591f829f +size 2430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Nicosia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Nicosia new file mode 100644 index 0000000..04e3124 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Nicosia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc93b7516933edfdc211ac0822ee88bf7acad1c58a0643b15294f82eb0f14414 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Oslo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Oslo new file mode 100644 index 0000000..863e64e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Oslo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c84e9c0d22059573079211cbf487072cab95c14b5ecefb596cf1f594abd3458c +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Paris b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Paris new file mode 100644 index 0000000..893ac3e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Paris @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae61491c4a587f56426a9f2118e31060276f2b0231e750c461781577551ca196 +size 9152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Podgorica b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Podgorica new file mode 100644 index 0000000..3fc6d8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Podgorica @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b87630ff459de07eb16cd0c2452660772e3ffc4eeb8419ea77a013b6f63a5900 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Prague b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Prague new file mode 100644 index 0000000..dd0b755 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Prague @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d3afed5c1b07c6c6635d6bdeb28a0fb4d11a61f25f26c91227b2254be5f4aa0 +size 8038 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Riga b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Riga new file mode 100644 index 0000000..8d8731c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Riga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b64a42bafd90f9255cacfdbac603d638dd7c18dc27249f9c9b515e1da634424 +size 7658 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Rome b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Rome new file mode 100644 index 0000000..dc76477 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Rome @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcd2d9144507311e573568598e1ffd0e0574fb677aa0dafc5641d80a19eb6e58 +size 8813 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Samara b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Samara new file mode 100644 index 0000000..4693502 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Samara @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f395352aa05d35e7d13380e73659a0d5b56ffc17e3f4e40e4f678a902f0e49b +size 2118 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/San_Marino b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/San_Marino new file mode 100644 index 0000000..3b20b1b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/San_Marino @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6856a0e38c2404f7d5fa1821559503f8ae70923a562f0d993124d131515f395 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sarajevo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sarajevo new file mode 100644 index 0000000..9afe2df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sarajevo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc00d953c2f3e55e40eda13838ab66b9e9d0bdad620e4eb917637761abb06fb1 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Saratov b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Saratov new file mode 100644 index 0000000..c33a7d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Saratov @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab90363dee5077c39ec55fe8e519593ff08223e5a8e593f6cce01fb5b8b35bae +size 2061 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Simferopol b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Simferopol new file mode 100644 index 0000000..a131066 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Simferopol @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d51cd3de50c50bca1624efc952add15d418a09ec213760df5bc3097e35c5a7a0 +size 2389 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Skopje b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Skopje new file mode 100644 index 0000000..7c357a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Skopje @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52f20858433261b15797b64f0a09cee95d552ef93b5daa7c141bfab6d718c345 +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sofia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sofia new file mode 100644 index 0000000..7521c58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Sofia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6415f279cb143ea598cf8272263ac5b502827b10ceeb242b39e6efcc23a2ee12 +size 7654 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Stockholm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Stockholm new file mode 100644 index 0000000..ad15f35 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Stockholm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64615aea9ef14a2609d2c804901281c83fddc0a8bca9b377d6cad62d81801c66 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tallinn b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tallinn new file mode 100644 index 0000000..ddedc96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tallinn @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f3594ccda78b02b2ee14c8fae29e668e47193af2dfcf5af1ecd210f13bce9ce +size 7549 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tirane b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tirane new file mode 100644 index 0000000..0de5aa2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tirane @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c62686bf598138fefb72e8cc6632ba75a5fe147f2a30124ee3583be1f732e38d +size 7675 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tiraspol b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tiraspol new file mode 100644 index 0000000..f8d1c28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Tiraspol @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdd53fdb5f754bbba8ff98f0b1555fe0baeb7852843220a7cf93a190b641a9ad +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ulyanovsk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ulyanovsk new file mode 100644 index 0000000..982f1f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Ulyanovsk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fa9d09509b4f8f5a9c8e422dba02605070c3ebdaeb7c1df8527c8eef5e3632d +size 2119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Uzhgorod b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Uzhgorod new file mode 100644 index 0000000..62e2271 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Uzhgorod @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8caf5dbe12f1647b28e7ccddb2e09e36788a766690d12e770a8abd82e708644 +size 177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vaduz b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vaduz new file mode 100644 index 0000000..0ae0caa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vaduz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b235bf047fc2303102bc3dc609a5754a6103321d28440b74eec1c9e3d24642 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vatican b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vatican new file mode 100644 index 0000000..8712863 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vatican @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c203e94465bd1d91018fc7670437226ef9a4bb41d59dde49095363865ca33d00 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vienna b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vienna new file mode 100644 index 0000000..1069b5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vienna @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8165313c9b51daef130401439cba60daa9887fc5eaa61a5afd4f7bad1ad934f +size 7930 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vilnius b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vilnius new file mode 100644 index 0000000..adf05ab --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Vilnius @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b762db4a068dc79fa57691e070d7026086e5a6d2fc273d5c1872e7c8e3711533 +size 7485 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Volgograd b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Volgograd new file mode 100644 index 0000000..76023e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Volgograd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22968d40dac2b669e6d2bc43ed6b16c8a9ca3e1f9dacbf8b246299c3c24cc397 +size 2123 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Warsaw b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Warsaw new file mode 100644 index 0000000..c3fb710 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Warsaw @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9dc10ec2ae2cc810a6c08837059b34be651900ba4e1cedb93c209972ccfb5a2 +size 8662 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zagreb b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zagreb new file mode 100644 index 0000000..c65b31f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zagreb @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a49b3894eb84f003eb357647d6a40ceaf6213523196cc1ec24eefd7d9d6d3c3e +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zaporozhye b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zaporozhye new file mode 100644 index 0000000..6c3780c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zaporozhye @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef928ac09b9a366fd015f488b6a19fefd72de1baf34e5cadfb8334946bcf19fe +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zurich b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zurich new file mode 100644 index 0000000..0dcab7d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Europe/Zurich @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95afa61e439ca38551306d8fdb11c2788d935c42768d0407c9e4337f105a3e93 +size 7305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB new file mode 100644 index 0000000..e81955b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e20d829c605a7c5b2a96b83c3480df28c964a13381a8bd2c72c2a37295131fa7 +size 170 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB-Eire b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB-Eire new file mode 100644 index 0000000..3b90f45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GB-Eire @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9334480d0a970254b6ba6ff22e958dc8dd8bf06288229461a551c7c094c3f1d +size 175 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT new file mode 100644 index 0000000..ca60394 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:747c15cdc239855d5380b7a7f47112f2a26c61b0bf300eeb9711e6521550d189 +size 153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT+0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT+0 new file mode 100644 index 0000000..046865d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT+0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be48462ccfbb3aee19597f082a17c2c5d2fd8bb1c9122245efab0a51f8f413b0 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT-0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT-0 new file mode 100644 index 0000000..2d0d5a8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT-0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:944c86f516141ddc3aec1ae4a963e9769879c48ed12daddf4ed63a01313acd00 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT0 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT0 new file mode 100644 index 0000000..159c6e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/GMT0 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54850a5f488205db01fbb46e2da9fff951c4571029ea64d35932ddea5346daaf +size 154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Greenwich b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Greenwich new file mode 100644 index 0000000..3edf860 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Greenwich @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e7a8daa26ce36e8f7d7f13460915c063ee98e2a4db276ad9d15ca5c7c06815f +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/HST b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/HST new file mode 100644 index 0000000..a531245 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/HST @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d710699af319e0ddb83e9f3a32d07ae8082ea2f7eabbd345effffb0f563062e +size 111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Hongkong b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Hongkong new file mode 100644 index 0000000..f7f2801 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Hongkong @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:359c9c02a9fa3de10ba48fa0ab47d8d7aff3b47f950cfaf5eb68f842ea52ab21 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iceland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iceland new file mode 100644 index 0000000..03c813d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iceland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a531293f672d8fe38996989fc4eeb22b5efe6e046e2f58e94d01da9ce56ef68 +size 178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Antananarivo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Antananarivo new file mode 100644 index 0000000..a61ec5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Antananarivo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b1177ce4d59d7cbcae9b0421eb00ad341ecb299bd15773d4ed077f0f2ce7b38 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Chagos b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Chagos new file mode 100644 index 0000000..1e8b40f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Chagos @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11044ad7cb0848cc734d2a67128aa6ac07cb89268399aa0a71a99024de4b8879 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Christmas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Christmas new file mode 100644 index 0000000..92867b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Christmas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78a208b73426a1b6d7cf2fe89a0ef3f01721f877d569bc43f2e5b6625a947299 +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Cocos b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Cocos new file mode 100644 index 0000000..c9b1b04 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Cocos @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb301ee97a9fde8ace0243941c0fac9ed0e3acfd6497abe408f08e95fae3b732 +size 174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Comoro b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Comoro new file mode 100644 index 0000000..5bb37cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Comoro @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53fa58e32dc2e4abb574b2f78011815eeb7f89f453cc63c6b6c1460abbb4ca5c +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Kerguelen b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Kerguelen new file mode 100644 index 0000000..81eb8d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Kerguelen @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:138c7ffbfc520372658ca0cd1b42c4e5a240e9d9b98a277b02481de5701222fc +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mahe b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mahe new file mode 100644 index 0000000..d9ffa39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mahe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:613c5c05a8867e4b59a97a3d8c7235ddc0ca23239f2d57a5bfd42e4ab94fd510 +size 170 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Maldives b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Maldives new file mode 100644 index 0000000..6980ab7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Maldives @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fac69dc609cc6074ecd67e0be8ae62e33d8d9c7f055a3e0dee1430c7ffc54f6 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mauritius b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mauritius new file mode 100644 index 0000000..d43eb96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mauritius @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2b1b93cbeecbd900ed71e61a4932509eb52688e97a6015dad067066d0d42072 +size 272 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mayotte b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mayotte new file mode 100644 index 0000000..07db267 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Mayotte @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:845c45fd7b6f0604b03a3c72db117878b568fb537bca078304727964157b96ab +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Reunion b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Reunion new file mode 100644 index 0000000..e0d4b6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Indian/Reunion @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5560b0d4a2d8a13d9fe9787fffe31200d405a8c875f046c8fddf850af98662b6 +size 173 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iran b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iran new file mode 100644 index 0000000..29921a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Iran @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe7f4453cb5f6b81b23c1c795356b91fe319f0762be7868fafe361db1f9c2a2b +size 166 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Israel b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Israel new file mode 100644 index 0000000..4b3f6e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Israel @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:805105f5f17b78929f8476bae83ed972128633ff6f74b7748b063e3c810c27a6 +size 177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Jamaica b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Jamaica new file mode 100644 index 0000000..46cfe45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Jamaica @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f01b00d52bd7b2694bf5cb55a17028c30a41bd22a774ca54740e8b1dde4fcb2e +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Japan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Japan new file mode 100644 index 0000000..27f1f68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Japan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98dbd07ae3b9251b9091f4d265336ce98bdfb492af863c1f3ff25248a2cadf35 +size 164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Kwajalein b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Kwajalein new file mode 100644 index 0000000..2b78282 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Kwajalein @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85e95363acf468043cd5146927a97b2d9e3b141eda0a7993dada9382d1d6dd54 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Libya b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Libya new file mode 100644 index 0000000..a1ba956 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Libya @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f776839c1999056e6a0d2ecfdf9054fc309454afdff8e8bc803f33ec423b7361 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MET b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MET new file mode 100644 index 0000000..4a8f6c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MET @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df45f5414f1636b1856c7534bb5f3d4387c32d56283a68bb47d8c48c1ddad5bc +size 7736 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST new file mode 100644 index 0000000..4710632 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e57746d5db479a8b30973f2bc16e2b8dfb6e2bfaecbff0fb956f04526e4b935b +size 111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST7MDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST7MDT new file mode 100644 index 0000000..e3a32d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/MST7MDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5deb89d59613d9a54c1e146056a805b3de9f2a2593aec2b8a25f863328699c0 +size 8505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaNorte b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaNorte new file mode 100644 index 0000000..a5897b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaNorte @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8ca38a845cd01bf785ee222277dad9325ab6bd17e44a362c450855aeb522814 +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaSur b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaSur new file mode 100644 index 0000000..0c15b24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/BajaSur @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e6e32a40487f0146b59150b66ff74901ca853b12d47922819af23eea5b4149c +size 191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/General b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/General new file mode 100644 index 0000000..a833f75 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Mexico/General @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dff1b83fecfad5c27ec47b206696c29b91398f8185b5d406a66fa9e0aeca93f +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ new file mode 100644 index 0000000..49f47d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e22d629d53c54960ad156c377de0ae461c27f554990a3d1305724ca8f869bce4 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ-CHAT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ-CHAT new file mode 100644 index 0000000..e3ff71b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/NZ-CHAT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83f4ca3522b64f9b151edefae53e0f28c2e6c4ce16d0982186b3344f2a268724 +size 181 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Navajo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Navajo new file mode 100644 index 0000000..5428b8d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Navajo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc8ce235f2ee3160e6afd04a4e28aa0312494ebb6fed08d8cc81d414ec540ee +size 177 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PRC b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PRC new file mode 100644 index 0000000..815b702 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PRC @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a5baa9ca54b2a2c6d21287443be0b1064aa79b5c4c62939933f8a0ad842b73e +size 171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PST8PDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PST8PDT new file mode 100644 index 0000000..a126ede --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/PST8PDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d148708f1e70eefa51e88e5823776cbe710535d4d6d6356e7753a44463a1c5ab +size 8505 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Apia b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Apia new file mode 100644 index 0000000..dce598b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Apia @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:983884249acc11c3fe740d78e72b1a89be9c8b077283549bf6bcd8c93fa71731 +size 909 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Auckland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Auckland new file mode 100644 index 0000000..4c7eed0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Auckland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:201cfadb00fbcd3283249dad73872ed75c5bec07f5a5b157726638c20728b833 +size 8772 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Bougainville b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Bougainville new file mode 100644 index 0000000..f0e4da9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Bougainville @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d3bfded297214ba25cfd8c6f508d0c8b1a1cd7d46701a78ec5e510076185eb6 +size 280 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chatham b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chatham new file mode 100644 index 0000000..c1b854e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chatham @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca0eef84dbc5964ef2265e9252237be58bb8d75c34817cc2305cccfaec7e690c +size 8165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chuuk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chuuk new file mode 100644 index 0000000..cfd97ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Chuuk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f324ca637180f50db79ffa25204d974c6a7a6faefda69fd1a280b9f366349a09 +size 202 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Easter b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Easter new file mode 100644 index 0000000..919c672 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Easter @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d79a2a67606f25d6420f31129fae966a54287de96c661003cce5f82b618014bc +size 8203 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Efate b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Efate new file mode 100644 index 0000000..3df3205 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Efate @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:332372e5efb46123fbb66f9f32f91b59ebd88adb956249db3f14caab01ce2655 +size 789 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Enderbury b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Enderbury new file mode 100644 index 0000000..7ff40a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Enderbury @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:790e6b48b261d6def7d183cc8f38fb8d8a6e3efb8844281efabb2dfd621e53b5 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fakaofo b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fakaofo new file mode 100644 index 0000000..da1a523 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fakaofo @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:336058dca4802c79ed43f6177adb73085d4fa0754b94051cae2a19346b0c4904 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fiji b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fiji new file mode 100644 index 0000000..f24910b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Fiji @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ff7af55c92806751473cbf7a55e860850719ba7255cd65fd630b99e05c7c177 +size 986 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Funafuti b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Funafuti new file mode 100644 index 0000000..c3acd0a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Funafuti @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:affb0a5d9cbd5949f2fc5047820fa2a2798f7c303f7bc972ec49ccf27837b00e +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Galapagos b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Galapagos new file mode 100644 index 0000000..8c5b810 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Galapagos @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:192545659f971084adc8489a2b96a6439ff391599dc962aa13375accfb3c09d9 +size 247 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Gambier b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Gambier new file mode 100644 index 0000000..313f048 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Gambier @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:190e02a0c00d165fa45c73aef9c0d6c82b1720e7406e5610dd860aed10a021a5 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guadalcanal b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guadalcanal new file mode 100644 index 0000000..05360f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guadalcanal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161762334dff48b1d58824911e1ff4171386ea18234dd3dd5b0798515593086a +size 157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guam b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guam new file mode 100644 index 0000000..8d6860f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Guam @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42cb69abc83415f63ca7d2a3e5314a41817aee3206eccc7172c50a74b1597db0 +size 733 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Honolulu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Honolulu new file mode 100644 index 0000000..1c537e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Honolulu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69319015799d32d3cf7c0a3e9991b4b1f3e0c5d1b4fbf400517350cca9d2c3b7 +size 344 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Johnston b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Johnston new file mode 100644 index 0000000..a8b2545 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Johnston @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e52b361ac8a6a578c709f6d58aa7535f06c0cb1707081c2d5a63fa8545d955c +size 193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kanton b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kanton new file mode 100644 index 0000000..daed9cb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kanton @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b1345555ec2b4738cc4debfe496c287966f238386263032ff1e27912ccbfba6 +size 208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kiritimati b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kiritimati new file mode 100644 index 0000000..6da00a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kiritimati @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f7235b956a5a01676be05275e086d5157ebc24fd91022e87817020669f915f7 +size 219 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kosrae b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kosrae new file mode 100644 index 0000000..ebca0f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kosrae @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b528e5e712e5f878603183e7ccff55e5db97cb47d7628bcb635342796317b899 +size 394 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kwajalein b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kwajalein new file mode 100644 index 0000000..5d0ac96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Kwajalein @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38133be70100d7dc244a680827879e6b240646c7c0b68f58652051e681a71985 +size 304 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Majuro b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Majuro new file mode 100644 index 0000000..507d9ee --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Majuro @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:935bc00c13863715d09463e54dc2a6ff0f1a7eea8d5895c87836aa59716cbd57 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Marquesas b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Marquesas new file mode 100644 index 0000000..8b9c8d3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Marquesas @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae0b5055c6e57516f23749b13681205ead376e682959716a457b1377af8160ba +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Midway b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Midway new file mode 100644 index 0000000..001044a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Midway @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f62c6a2dec1e9ec78115d5f14e5b9db7c86f788662d2e68f7e6714f4a05dc974 +size 194 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Nauru b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Nauru new file mode 100644 index 0000000..b5400e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Nauru @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22c367f3219b5fc736260d9dbfef5fcb767f1a6bda991c9352f790a3d1ffe884 +size 244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Niue b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Niue new file mode 100644 index 0000000..83b5a6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Niue @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:869cca656be88e4e7481c75737c3656bab6924ad1751505815ac719c59269842 +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Norfolk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Norfolk new file mode 100644 index 0000000..506ba4b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Norfolk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d16c3ef1db996c1b8e33ad884c33946f77da872f35f41ec3bd5b288f43cc9af +size 5139 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Noumea b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Noumea new file mode 100644 index 0000000..c18a1fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Noumea @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:238683c027d2319c33d975a837e9fc9d24dd53b1a67108edbf7abdf0db050881 +size 326 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pago_Pago b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pago_Pago new file mode 100644 index 0000000..da495ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pago_Pago @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca96640ab3bc707224fa86d9af66f9d53a204a97b370b2785ba8208688bf8b6 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Palau b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Palau new file mode 100644 index 0000000..dbc4f94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Palau @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97de6c2c717bfead00f83b5d39d654c32cee580226f5f084484ebad57bbce7ff +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pitcairn b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pitcairn new file mode 100644 index 0000000..b346837 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pitcairn @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d363729a986e24c79f4b817cc88d2b22accce3add20138d51c4422c4297ad6f +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pohnpei b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pohnpei new file mode 100644 index 0000000..3d67540 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Pohnpei @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f744cd8337c5c72023d61f348dd03f48824f817d62f54acc6a23ddd8b0f9edc4 +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Ponape b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Ponape new file mode 100644 index 0000000..d9e5924 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Ponape @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bb11553f711bd591617f657a9d1811cc3e3fb46374f6867316a7c8f6b3765d9 +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Port_Moresby b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Port_Moresby new file mode 100644 index 0000000..664a3f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Port_Moresby @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:124c137b091d9d54d5e0579131485428faae040acc978d20d6a8c8e4de9889aa +size 190 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Rarotonga b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Rarotonga new file mode 100644 index 0000000..c4b6e40 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Rarotonga @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ab006a686e564e30c94884ff8a9d728aec74681da8772e9722b6fe203630b5d +size 969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Saipan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Saipan new file mode 100644 index 0000000..0203260 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Saipan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f6a1c20a11e186012466091cd4b3c09d89d35e7560f93874dec2d7f99365589 +size 179 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Samoa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Samoa new file mode 100644 index 0000000..d2a6ba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Samoa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d06302efc18fad7751f7e5a059fe4abafbc361fdc365fe1eb576209d92c658 +size 193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tahiti b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tahiti new file mode 100644 index 0000000..a7407f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tahiti @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:440a87ddb4f304dcbeaed1b0de8f6058840e597918b688e0782f584da03b1bbc +size 154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tarawa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tarawa new file mode 100644 index 0000000..f128c23 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tarawa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91aa5da8d5d1e72b1f561d0aeab4b07e02edd4eb95ae8c9f1c503c820460599f +size 152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tongatapu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tongatapu new file mode 100644 index 0000000..d60b72f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Tongatapu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecc9d2e7ad7b5e5d6599cf442941595c99c4d69e802a4ddb4da321898cdde91d +size 451 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Truk b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Truk new file mode 100644 index 0000000..299cfc3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Truk @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:323a858946a2e8ec67c28176977d646c0a0f6dc8b48f9c4a3f8e7112c9b1b71d +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wake b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wake new file mode 100644 index 0000000..acce604 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wake @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6041bc18b595e38953632acad1d25f7394bf7c759a72fccd81af637f8016373 +size 183 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wallis b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wallis new file mode 100644 index 0000000..43ea5df --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Wallis @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9601b749413d591d820afad431b3c30e577acab000ea11ec03deb36ef0738dc3 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Yap b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Yap new file mode 100644 index 0000000..2ee3f46 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Pacific/Yap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16cf9fab116e5e1732b4b601da919798985a0c15803f0964844c7040894c5dba +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Poland b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Poland new file mode 100644 index 0000000..25182c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Poland @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27e1179b55bf0c7db6f1c334c0c20c4afa4dbb84db6f46244b118f7eab9c76e +size 174 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Portugal b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Portugal new file mode 100644 index 0000000..54d8709 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Portugal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efd666f3062d52c5d0b4f83b1a206e6840c1eaec356cd77a0a71c7edfa78c964 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROC b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROC new file mode 100644 index 0000000..d34b999 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROC @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aec39777013b23d63d0509ebb2f01d57a2c1592264dbb19ce2c61c7d7ddd8de +size 165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROK b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROK new file mode 100644 index 0000000..c220225 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/ROK @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63153b40225270adb7cd248788ca9f18c6debaf222b3165bbab633337592df44 +size 162 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Singapore b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Singapore new file mode 100644 index 0000000..06711b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Singapore @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9443fb17f0128ddb9f2df657dc5d2df176f64c61b0d02b272e5dfb108537678 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4 new file mode 100644 index 0000000..3d29206 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:978c4e5256057ce7374ad7929605090fc749b55558495bd0112fb0bb743fa9c2 +size 201 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4ADT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4ADT new file mode 100644 index 0000000..6ca0765 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/AST4ADT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0114c111f5bcd838a28f2e16e01ecb79d8afc8cbf639a672889ed0d692fc6cdc +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6 new file mode 100644 index 0000000..44b2c19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30428b85b37898ad98b65be5b6a8bd599331d9a1b49605fc6521464228e32f8f +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6CDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6CDT new file mode 100644 index 0000000..e70a99c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/CST6CDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44bef7d4660a9a873eb762e3fdc651d31d97893545de643fa1b2d05991c090a1 +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5 new file mode 100644 index 0000000..be759ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:798f92e5dda65818c887750016d19e6ee9445adfe0fcb7acb11281293a09c2c7 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5EDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5EDT new file mode 100644 index 0000000..e03c892 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/EST5EDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d159140114a13c69f073cfe9ad0b67d713e8811cbff773a3d1681fc38ea0e699 +size 195 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/HST10 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/HST10 new file mode 100644 index 0000000..279e1e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/HST10 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf62c8650bba258000f62f16b0c7cbb66f4fd63f8cfdaf54273bb88a02a6c8d6 +size 193 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7 new file mode 100644 index 0000000..c7ec058 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:febe49fae260e5595b6f1b21a0a3458d8a50aca72f4551bf10c1edb2758e0304 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7MDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7MDT new file mode 100644 index 0000000..38145bd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/MST7MDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64556a7b20e425c79375c2a7ccf72b2b5223a7de4ff4c99a5c039db3456c63f6 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8 new file mode 100644 index 0000000..751c212 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b8227afc94082c985e8e125df83e5efade7cd9ca399800d7b8e8b2beae22c7d +size 192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8PDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8PDT new file mode 100644 index 0000000..2b970cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/PST8PDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d51d9549835e9c058f836c8952932cb53c10f7f194cd87452e9b13494d1c54c9 +size 204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9 b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9 new file mode 100644 index 0000000..46a33cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55710efded5b5830b2f3a2a072037c5251e1766f318707ed7cd5eb03037fed43 +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9YDT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9YDT new file mode 100644 index 0000000..02cafc7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/SystemV/YST9YDT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da20018de301f879e4f026405c69fa0370eb10184fe1c84a4f1504079d5dafa1 +size 198 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Turkey b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Turkey new file mode 100644 index 0000000..50f3f08 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Turkey @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8471a5575b9d9e47412d851a18a26c4405480540aabc8daed5f81be0c714c07c +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UCT b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UCT new file mode 100644 index 0000000..ae131ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UCT @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:356a9bb6f831971c295cf4dce0f0cdc9edf94fd686ca3d3195e5f031a0b67cba +size 153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Alaska b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Alaska new file mode 100644 index 0000000..fda0f48 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Alaska @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ced56f09d68be00555219594c7b2f3e7efe8323201fb3e2aa0e1fa9a6467d5af +size 189 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Aleutian b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Aleutian new file mode 100644 index 0000000..76ec5f4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Aleutian @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4f1398cf84d0ae09bf19288770756622d1710ccbfbfe79e0d3239497731287d +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Arizona b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Arizona new file mode 100644 index 0000000..3460686 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Arizona @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9503403f231ba33415a5f2f0fdd3771ce7ff78534ce83c16a8db5bc333b4ad8a +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Central b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Central new file mode 100644 index 0000000..989dba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Central @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6ac9fae0ab69d58ecfd6b9a84f3c6d3e1a594e40ceec94e2a0a7855781e173a +size 184 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/East-Indiana b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/East-Indiana new file mode 100644 index 0000000..7bbb685 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/East-Indiana @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d86f8d36598516fb2342a18a87db2701babd265b0671cc9321c48db22c7eca5 +size 228 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Eastern b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Eastern new file mode 100644 index 0000000..59c99a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Eastern @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ffcad8cbef5ecdc74db3ee773e4b18abc8efa9c09c4ea8f3a45a08badaf91a9 +size 187 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Hawaii b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Hawaii new file mode 100644 index 0000000..273e195 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Hawaii @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:529bb43efda6c1584feaea789b590cef1397e33457ab3845f3101b1fc126e0fb +size 186 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Indiana-Starke b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Indiana-Starke new file mode 100644 index 0000000..ef74e1e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Indiana-Starke @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5827b6a6d50cf0fb75d6ba6e36282591ad25e1f0be636dcfc5d09bda29a107fd +size 206 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Michigan b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Michigan new file mode 100644 index 0000000..33f11cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Michigan @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e4269c4febfeff26750b297a590226c0a6872519a6bfde36f6dc3f6f756349 +size 185 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Mountain b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Mountain new file mode 100644 index 0000000..46f9599 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Mountain @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3763bf520d3c97148c34dcfbdf70dec2636d4e38241555900c058efee3bd1256 +size 182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Pacific b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Pacific new file mode 100644 index 0000000..4ce0210 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Pacific @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54e5f126d4e7cc13555841a61ff66c0350621c089f475638a393930b3fb4918c +size 196 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Samoa b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Samoa new file mode 100644 index 0000000..1ab6c4f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/US/Samoa @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e51fc51c65ffeab514d7636271157ee8941bdacf602cbc380f5d60b5fa674e87 +size 188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UTC b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UTC new file mode 100644 index 0000000..e9bc2ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/UTC @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dee28ff84e3fc495ed3547d5e5e9fafdacc36a67329e747d434248ed45bf1755 +size 153 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Universal b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Universal new file mode 100644 index 0000000..ae57faa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Universal @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7b0b82f471d64704e1d6f84646e6b7b2bd9cab793fad00f9c9b0595143c0ab7 +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/W-SU b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/W-SU new file mode 100644 index 0000000..14cd3e6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/W-SU @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7da75b585f45ab501b2889e272ff47b1c4a1d668e40aed7463eb0e8054028c2 +size 172 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/WET b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/WET new file mode 100644 index 0000000..4621d58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/WET @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e6e2369c19dd19a41be27bb8ad8df5be8b0096ed045c8b2c2d2f0916d494079 +size 6945 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Zulu b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Zulu new file mode 100644 index 0000000..ada06ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/tzdata/Zulu @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a06e8cccf97cc8fb545dfdb4c89b5e5c8edf0360547bdc1823b4ac47b1556c31 +size 154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/word.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/word.tcl new file mode 100644 index 0000000..0b4b444 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8.6/word.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:678f891615e2209a8ecba17857922a9723e78709adb983032e89ca706000c44d +size 5030 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform-1.0.19.tm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform-1.0.19.tm new file mode 100644 index 0000000..07f4a45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform-1.0.19.tm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32348d51f3637f375b056fe99e9b4d89d85d45db907847dc370bd72812a2e2fe +size 11707 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform/shell-1.1.4.tm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform/shell-1.1.4.tm new file mode 100644 index 0000000..b1f164c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.4/platform/shell-1.1.4.tm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a6b4b109cfdfc4b40fbdefdb2282f9b1af3cc2f9624dd39958eebd78781afb2 +size 6218 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/msgcat-1.6.1.tm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/msgcat-1.6.1.tm new file mode 100644 index 0000000..fbc3cad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/msgcat-1.6.1.tm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6774519f179872ec5292523f2788b77b2b839e15665037e097a0d4edddd1c6fb +size 35136 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/tcltest-2.5.5.tm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/tcltest-2.5.5.tm new file mode 100644 index 0000000..da9dc80 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.5/tcltest-2.5.5.tm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35a88f56df57e6ac6f2ccc4d193210fbb9bd224ac99670603e077ddf8c5610bc +size 107674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.6/http-2.9.8.tm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.6/http-2.9.8.tm new file mode 100644 index 0000000..d100384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl8/8.6/http-2.9.8.tm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a30e7a49c1f6939537eb7a80cf2f5bc7a4969f2b2ad99ba4e26db85bbc2fcc7 +size 118419 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl86t.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl86t.lib new file mode 100644 index 0000000..6f768ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tcl86t.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12bd9f2fbe09c9e040cd1d700f3e24fbf707e0ba9059890cd2f31e4f666b3db4 +size 185936 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclConfig.sh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclConfig.sh new file mode 100644 index 0000000..647ba8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclConfig.sh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a93f7785a64266bc06b3f2385fcac491f7dc6c59191728d0abff6db5647ad2 +size 7762 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclooConfig.sh b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclooConfig.sh new file mode 100644 index 0000000..20ceb26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclooConfig.sh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4d7d687dac5033b04bcf6c9cf3014b8139c79e730f6c431c437108a9bb3ceeb +size 792 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclstub86.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclstub86.lib new file mode 100644 index 0000000..ddf2f74 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tclstub86.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4a207d5b27fb701bf173628757c4d20379bf501c8671e887709550a5bab1e2b +size 9452 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Balloon.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Balloon.tcl new file mode 100644 index 0000000..721666a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Balloon.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d859fad46257a6ce45170ec2740bda483ae71d1cae244bb6d605b8fb0397a35 +size 13870 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/BtnBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/BtnBox.tcl new file mode 100644 index 0000000..527bcbe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/BtnBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d18e16f26125a2bdb3c972aac52897a7d3e8630a0da541916bffcfcdafa624 +size 2791 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/CObjView.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/CObjView.tcl new file mode 100644 index 0000000..998c117 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/CObjView.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc5e7d99e1eac0bc9ade139c76bc8d0fce72760ecd500d43cf390e69d6e5118 +size 8098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ChkList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ChkList.tcl new file mode 100644 index 0000000..786fa00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ChkList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c60d13aa1304a2fadf5abe57ae426c5ce92b5d88eabb4f9d088a58d75966f4f2 +size 5326 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ComboBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ComboBox.tcl new file mode 100644 index 0000000..50665fa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ComboBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c794fd78fc3ceecbe92f021526750c6640a34bc38b361f55f84b97f64a34a15d +size 37829 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Compat.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Compat.tcl new file mode 100644 index 0000000..a690b8b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Compat.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d225201425fa2345b1014561a039140f24c3503c47d621fa38f07be72d40726b +size 903 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Console.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Console.tcl new file mode 100644 index 0000000..986c629 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Console.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98e52fb9406b39ba950106b69a137506022868fdc34e34539aa38d5e86aad2a5 +size 15923 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Control.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Control.tcl new file mode 100644 index 0000000..6e26e36 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Control.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:053533c4fa7798d427252714834fa3f0645bca63ca26f2492a44efab87342afa +size 12884 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DefSchm.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DefSchm.tcl new file mode 100644 index 0000000..900ba63 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DefSchm.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88c55e1607aa54af15d8926df4eb3a53e4db3145c0db2cfa179bee78cdf87755 +size 3116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DialogS.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DialogS.tcl new file mode 100644 index 0000000..a85b117 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DialogS.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0101a4a368908409e8d2ee3cbf4dad1691b28ae68354676002962e4ba6de31fa +size 4471 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirBox.tcl new file mode 100644 index 0000000..ad0a6c2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce99218b3ac5eaff04883f0ab4e7f6aec39c9c7f13b2a9ada78b8b6b257fa702 +size 5632 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirDlg.tcl new file mode 100644 index 0000000..cf46b6a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22185ff1362e6a9be6f363d096503bbd4dc120ba6c64e562c6c15ec5699754e9 +size 2301 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirList.tcl new file mode 100644 index 0000000..860709a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8447068c3dfff842005c7d40103b90fa7707d3b1818f6f0cc7385dafd9f54ec5 +size 7336 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirTree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirTree.tcl new file mode 100644 index 0000000..6fac879 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DirTree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fadec5d82ab5755f5a9461e5c6eb9d5a2a6cac4d5aa7bf6e70ac0989cdf9e30f +size 9322 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DragDrop.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DragDrop.tcl new file mode 100644 index 0000000..bb99522 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DragDrop.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3eb7eaefe9e626ddf9f13ff022a325bcaad3433adcf0528d076a89d3c93b6b3d +size 4191 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DtlList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DtlList.tcl new file mode 100644 index 0000000..e0e33e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/DtlList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4173db98595abf7ad6082192e147d21274f6d6d240f97a32b229aa573849bb1e +size 1051 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileBox.tcl new file mode 100644 index 0000000..809f5a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26bec1eb5d705e17f4700e0889ec902417b50dec5a9570e5225216d413d0d115 +size 11826 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileDlg.tcl new file mode 100644 index 0000000..60a0123 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/EFileDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e52a51a4dfa9ecea0b57010407ef5584363d947d6eaf417e1ff404876050372a +size 1783 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Event.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Event.tcl new file mode 100644 index 0000000..d1ee128 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Event.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9519af49109264b006305ece5f6847f1e7b82e6f88812174d1d7be6d8e00db9e +size 5448 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileBox.tcl new file mode 100644 index 0000000..cba882f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7c9c936e2cf490272a9b0f821c36cb3bb58f251b428e74c071cea9b31a1b726 +size 14904 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileCbx.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileCbx.tcl new file mode 100644 index 0000000..06ae0f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileCbx.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c00108d75ef779467551dad23e141a7a670050d3320d4765d1b0b56a8573258 +size 2591 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileDlg.tcl new file mode 100644 index 0000000..55ed926 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ba9f99f0074b1e26a36b1dcee801850b795b422bc6716467d92a80dbc17a2b5 +size 2260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileEnt.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileEnt.tcl new file mode 100644 index 0000000..31bb472 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FileEnt.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29dd4c57ec57052045df06245ab582522a4e55eeed69036e9288e9c208e84b9f +size 7589 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FloatEnt.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FloatEnt.tcl new file mode 100644 index 0000000..2d47fda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/FloatEnt.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d042097dbe2a3b8940bacb8bb5f5746e52bb2cb224441859fea9d5a4bbc0074 +size 3308 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Grid.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Grid.tcl new file mode 100644 index 0000000..a7aeab5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Grid.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf9dd6af9feb5f50c9c47766263d6a11e8780dd78644892518a4b7c8dfbfe412 +size 22787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HList.tcl new file mode 100644 index 0000000..8baba0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:913020628f9116a78afd4f615f7eb707511a489499b4bfbfaf6eed76a052a3fa +size 19065 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HListDD.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HListDD.tcl new file mode 100644 index 0000000..a8d23f2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/HListDD.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3e2afae1e4d072934c8ee5ec2d6fff8a07515026a82122569b709915edeaa67 +size 4704 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/IconView.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/IconView.tcl new file mode 100644 index 0000000..102c161 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/IconView.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f184720a70d0e71aaf6199304a6bb2073efa180571d097585dc7f219fa35a37a +size 6382 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Init.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Init.tcl new file mode 100644 index 0000000..64ed6eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Init.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69c1294fbf03f83d84c541efef1fdcb915f668de86532b00a793a33082b50b14 +size 6431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabEntry.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabEntry.tcl new file mode 100644 index 0000000..aa7ad5f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabEntry.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e6fd36cd91d0cf5fa66ba426ac0d3d8d081bca1f2a63c4cdee9c7cfe1054ac1 +size 2229 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabFrame.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabFrame.tcl new file mode 100644 index 0000000..c8f507a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabFrame.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccbdb56014474f646ca69b8efff19183b1c46185c4b3de1ea5c6766107d1a853 +size 1230 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabWidg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabWidg.tcl new file mode 100644 index 0000000..67e0b2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/LabWidg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7f6c2b4b93eb9969b8f40d6cb268abffd1d7ade4270016a7a4166489c837720 +size 4108 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ListNBk.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ListNBk.tcl new file mode 100644 index 0000000..952c24f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ListNBk.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:868912a8bbb69d8ef266347c40955eeab186e60d83d1ba17cc28e305a1dbd14d +size 3734 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Makefile b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Makefile new file mode 100644 index 0000000..75eac4a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Makefile @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce1660f59b8eb4ef49b6659a839b98d833a163d4e48838cc40689b63b8e6e40f +size 66 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Meter.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Meter.tcl new file mode 100644 index 0000000..57389dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Meter.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69f2e71bf5030bc04efe0249ba153c19625faaa898c7c2fba82ff94e1ea4e19d +size 3251 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/MultView.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/MultView.tcl new file mode 100644 index 0000000..d108d9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/MultView.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed25f5447d10d516e063f76b124e56d5cf7d83f15aaa8e3997c966d6ef913247 +size 3861 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/NoteBook.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/NoteBook.tcl new file mode 100644 index 0000000..ba7f77a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/NoteBook.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e0c454c4015be7807c8a5f3265f1bdf4df7711c55f6e17322fff716366509f0 +size 6407 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OldUtil.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OldUtil.tcl new file mode 100644 index 0000000..43a3611 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OldUtil.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86608d55ba5a374e5f34c3d0309138c58658ce437072da5e470d9faf59bae712 +size 3164 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OptMenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OptMenu.tcl new file mode 100644 index 0000000..bdd4ef0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/OptMenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3b5df03dc0ef449d75e91acaaed9bd7e6a1d30cef079e5bd50479892e6b0a71 +size 9786 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PanedWin.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PanedWin.tcl new file mode 100644 index 0000000..2d5e5fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PanedWin.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4883f6355fdcf66fe229f10cb33a2c5609cf2de7ac5e241875ad828f7add03aa +size 29562 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PopMenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PopMenu.tcl new file mode 100644 index 0000000..e1c2892 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/PopMenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2565b9f95ffb0aa2eddcdd1c5efd05f480deabba11425c217647504674f67628 +size 5739 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Primitiv.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Primitiv.tcl new file mode 100644 index 0000000..9fef82e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Primitiv.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef1ff46f0169258ae2f0ac0fd840d3f58231c6825060b787a3f0f8a5052752d9 +size 10955 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ResizeH.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ResizeH.tcl new file mode 100644 index 0000000..bf09cb9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/ResizeH.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cd973d3de2385a0f665ce1c8bf2a8ada490f6eb396a4e620dce31e72a0d120f +size 13752 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SGrid.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SGrid.tcl new file mode 100644 index 0000000..13270a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SGrid.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb657acb453c6e4c2e60edcae955b76ec61f07951186f14b901d35a6163922fc +size 6178 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SHList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SHList.tcl new file mode 100644 index 0000000..f3a0e96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SHList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b16b5135862e52f427d684ec6507b6d13426575fe80b4efbbe2e6ba70579bde9 +size 3933 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SListBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SListBox.tcl new file mode 100644 index 0000000..e98a2ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SListBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a223998f63d38ec72bf3e9933e7aec7761bdf7b41b07a0b533eb82085af1e05 +size 7433 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/STList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/STList.tcl new file mode 100644 index 0000000..abfcea9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/STList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b8b15a65b697f7417b2b37e8dcea0b182d5ed243d968ee744a2e6537691518b +size 2521 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SText.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SText.tcl new file mode 100644 index 0000000..cf30d53 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SText.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2682daa8f67c0438696d365284e7cdd57c7c461462b15756755ad5281afec44f +size 3297 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWidget.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWidget.tcl new file mode 100644 index 0000000..fc2a6b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWidget.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7965659057591e4bc091fa276fdfd58670d99d70d264e4a54ac74c3a80e84e04 +size 10213 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWindow.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWindow.tcl new file mode 100644 index 0000000..4496c4c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SWindow.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13e80a6d76aeb91e2fbf5d36d831f3cde55e7b8f54ea5611c5c49fa648179339 +size 7182 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Select.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Select.tcl new file mode 100644 index 0000000..c86d278 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Select.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b67b23f24c5f4334bb9da6c0db8fd664f2903879ca64bd1804993df9e1635af8 +size 7504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Shell.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Shell.tcl new file mode 100644 index 0000000..2d97773 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Shell.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f23170ab8c06c831c16d4437abfe5937fedd3e4810ed5bc1be39b1c73c6efe7d +size 1129 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SimpDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SimpDlg.tcl new file mode 100644 index 0000000..75dc32a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/SimpDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a937709b31c0c7da5f3fac25a962945755c64a1aab66f226f09d28fcaa4b78b0 +size 1204 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StackWin.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StackWin.tcl new file mode 100644 index 0000000..7502b31 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StackWin.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a959445d5f7257e471275328a965de8c65cd89d6bc6fabe8008ee2bff3a75eb +size 2076 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StatBar.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StatBar.tcl new file mode 100644 index 0000000..fff4d04 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StatBar.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879632d5829f53a37efb21bc953eaebe353983bf0a56fd94b42cb83e57fefec6 +size 1395 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdBBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdBBox.tcl new file mode 100644 index 0000000..23f80b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdBBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a04d9dfa793893de0ac79577b6e3d7e73bf6b587de122b486355b12de4f467 +size 1727 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdShell.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdShell.tcl new file mode 100644 index 0000000..7c5aaa9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/StdShell.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeba32e5813152fc4318068d5a6f5d40f68fea5124c981b8520d829057d21b26 +size 1222 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/TList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/TList.tcl new file mode 100644 index 0000000..22264ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/TList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e6a976cc1fee5512cedb6ebe8c2d41af922b5650c0ea183e694a3da691dc44c +size 18962 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tix.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tix.tcl new file mode 100644 index 0000000..aed165f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tix.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63fc95a796f3cca4c7f91545e22370b09e52321fc5505379fb4769c22d565bbe +size 10135 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tree.tcl new file mode 100644 index 0000000..1a3aa95 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Tree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5bee47b3ad77318370f226fb9199b2330f8ac2de156b37da09dfdffdcb7ef96 +size 4890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Utils.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Utils.tcl new file mode 100644 index 0000000..ca97953 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Utils.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e879818465f3b7eb33c6121d7f104b1342ee2dc04a2968a112d2c6db620ee903 +size 11230 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VResize.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VResize.tcl new file mode 100644 index 0000000..5836dc7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VResize.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5b2edeb99e70cbeff4b7322b6a8958334330d23c1f178fe2ef1a7ad2de4ee33 +size 5280 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VStack.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VStack.tcl new file mode 100644 index 0000000..ded4dba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VStack.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74793e12d762da6483d955f4d3e32096f093906e51e69916b5c383bab663b019 +size 10081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VTree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VTree.tcl new file mode 100644 index 0000000..d30e95f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/VTree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3f96013e5bc6342a8b2023b1eed5b5688dd8e2c84ba1bfd12719162deb9675f +size 4605 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Variable.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Variable.tcl new file mode 100644 index 0000000..8e21833 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/Variable.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7449919f74570a9a60453a5e85c9996342b50cf922bb9d643ee81b680c21ed4 +size 2664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/WInfo.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/WInfo.tcl new file mode 100644 index 0000000..27182b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/WInfo.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83caabac9926ac5a7cf5dee949199e721f79fadffd1b8a7f81f7f634f658b0ee +size 1005 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.gif new file mode 100644 index 0000000..af9cb8c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:486a8b71c0f9241a5bff2b275e8f011349076bf4fdd777ed1458eb050c0633bb +size 90 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xbm new file mode 100644 index 0000000..a49b6ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7feb01403909a62e682c5a2832dd1f63d11fcf847c0abf0bd2e11b6acde589b1 +size 226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xpm new file mode 100644 index 0000000..4166203 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/act_fold.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a636d32b87244f7948859eee4acd512d85ec245cd5a81c8cbeb4fe12b8d74ce +size 458 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/balarrow.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/balarrow.xbm new file mode 100644 index 0000000..87e3561 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/balarrow.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed4c68519e2d603725cec0f0d892c740a257ec2f38cf0344ec819abd62e9b26a +size 127 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cbxarrow.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cbxarrow.xbm new file mode 100644 index 0000000..05b7de8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cbxarrow.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce68aac68ba116cfb47b9f3556c058ce30c92f0832341c2632c9cd4d8be8ad5f +size 269 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_def.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_def.xbm new file mode 100644 index 0000000..1109e18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_def.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:592d27ca23ad113c37a16e7da7d67ea28a51571fe24a8baca4838915ddcba641 +size 260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_off.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_off.xbm new file mode 100644 index 0000000..e322b1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_off.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9d25190c0042f8f25ab0539424df8adeddb5f12bcb9c8ef7d0039ce63cdb93b +size 260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_on.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_on.xbm new file mode 100644 index 0000000..e28d54f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/ck_on.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fdf18b2c0603c9c6db89134ca7baec9bd3bdfd58f6f592c74614cd81053cadc +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cross.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cross.xbm new file mode 100644 index 0000000..91276d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/cross.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6a9a5a3ef3742bc0f601a0aae673f00e1a88f0b999fa7d6b620473164db2aab +size 260 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/decr.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/decr.xbm new file mode 100644 index 0000000..eb577d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/decr.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed764b336a07336d12dd28f0a75940b2e2d47a23ad8371c377560e91bcab192c +size 103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/drop.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/drop.xbm new file mode 100644 index 0000000..e0f0a0d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/drop.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a896927b99efa61981b769bc685e6d411180fe31dc4979fa5d576fc1c7e26dc +size 334 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.gif new file mode 100644 index 0000000..ca2065e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad2fbc604ec60116849574bc4dc371f8cb5796e14571ea2684c8bab99b4c467 +size 76 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xbm new file mode 100644 index 0000000..f858a51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef733ad2da584a41a4d1bf5525e080c60a5f2f332e7d583ab0003d23e1cdcb71 +size 238 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xpm new file mode 100644 index 0000000..522c962 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/file.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:520e7d4a55e1ab59720faf0a7bf31e54fc3b50f3b569c38c458d1943bf0bf731 +size 316 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.gif new file mode 100644 index 0000000..23a85b1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e03a2fe3cd8a5d64eb924d1561ff838f473c10c3d8d97fbde6762f3a1b44611 +size 79 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xbm new file mode 100644 index 0000000..ce20ddf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d82aab810ced6c2026994de6caf5cfa7c2aeba2349701fe914f1dc9ee59378 +size 220 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xpm new file mode 100644 index 0000000..e1c9a3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/folder.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:797aba91bc16d98770751cd17b44a9d40758c442f251e2155b77ca1c42e32ccd +size 439 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/harddisk.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/harddisk.xbm new file mode 100644 index 0000000..3e82767 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/harddisk.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0112cd468574b726ee78db9eb9e104882705a204f942ddae14f3c5df2b3987be +size 910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.mask b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.mask new file mode 100644 index 0000000..7cf0ce1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.mask @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4be19ef1f480d8dfa650c3d0ed635a34d5b08da3a8f9726f28c91834d967272c +size 985 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.xbm new file mode 100644 index 0000000..8e948ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/hourglas.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ab90aa067db1aedd294b46fa7f47c2320e4a4c5c922445436d7fcc2ec1239a5 +size 956 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/incr.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/incr.xbm new file mode 100644 index 0000000..e8ffbda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/incr.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12fd1f428aaf57523785319da1df9f6271c86f44adaea467f5020688facc7101 +size 103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.gif new file mode 100644 index 0000000..0603f79 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b007a8c582991388b12891a8b46445de6809ef6d52aaa43bf8d946ac8f9f6d43 +size 159 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.xpm new file mode 100644 index 0000000..8403eb4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/info.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60528b4c52b71859000a4688c93490f2c8ad60a4d53324c830cd011d123ebb3b +size 1296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/maximize.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/maximize.xbm new file mode 100644 index 0000000..9cbc7e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/maximize.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:120312587a98b09f2462b64684e9aafdc2407c8b15254a1c2b184e58aa518273 +size 290 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minimize.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minimize.xbm new file mode 100644 index 0000000..d974c77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minimize.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63e1b654a0a98a8e291093655eb15e385048134fd80506850b352b6f0df2b0a6 +size 290 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.gif new file mode 100644 index 0000000..0f50cd7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:401e41b99d8c8d2eafa41571b8d321aa419a4ca7ab8136fbe1b0adb86084d3a6 +size 57 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xbm new file mode 100644 index 0000000..189c1b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e33fa6675c7ecd3df86d581a2d6618e1d311418312167185a7da4c60bb82c862 +size 203 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xpm new file mode 100644 index 0000000..e36076c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minus.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7980153da9b4706e1368f760950f50853739f1c6c29c4a59ab0c4df5f188a3f +size 215 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.gif new file mode 100644 index 0000000..b5a743d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfe867e18c427aa88d5e2404a01aa22d042212222e8304b25275a400e650d1d8 +size 59 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xbm new file mode 100644 index 0000000..a54b4cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:079c3e9257032eabb0f6e400b13540e5cbc93fecee5eeab58b463a2b5e2de279 +size 212 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xpm new file mode 100644 index 0000000..1e145ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/minusarm.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a848c63bc2e49ebe2cff0518879a24c680f0322d672e0b171a709af317d3eb2 +size 235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/mktransgif.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/mktransgif.tcl new file mode 100644 index 0000000..c343de5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/mktransgif.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e32db60b06f6c696668e9922c3f4494e6ae5e5987e0f7bf54e43d7ddeef92dfb +size 263 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/network.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/network.xbm new file mode 100644 index 0000000..a6be7a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/network.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd590da62995aee324d238ecfc8a018932cfb47f3b409c54c8ee141419c9993c +size 907 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.gif new file mode 100644 index 0000000..69d0a9a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5acb672d97f4adf4ae8d31b3968a1a17dfa66c35d74a1da262f14c12615d3f56 +size 176 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.xpm new file mode 100644 index 0000000..ec144a3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/no_entry.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbc7cf43867aa7cd42ab3b5ee444787aac11000bdd56ea1c612f287706e75201 +size 1313 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfile.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfile.xbm new file mode 100644 index 0000000..4ad0d3c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfile.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997e09f07f38db012faeb93ff9a2ecb797da126a033ee70bb4e53b40068ac887 +size 226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.gif new file mode 100644 index 0000000..478fd18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a7e8a341a1f795f0890116f68368ff4bb0f1e0ce73691719dc24e3927463ad +size 84 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xbm new file mode 100644 index 0000000..1dc688a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93c13e84f98d290ef701259404220c081bdd319c03614a13cff23118dbdd08d8 +size 226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xpm new file mode 100644 index 0000000..dc516de --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/openfold.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:917ee346574fa9f63b0a407af52d44fb2a1645f870047599816d944c76105f47 +size 439 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.gif new file mode 100644 index 0000000..c4c7842 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16ea40fed8c12bbf64b072bacf6b1c8ca80ce26e08fee7860b98cc9cce44fa64 +size 58 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xbm new file mode 100644 index 0000000..5508d93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38aabbddd20ce0f3cec8a4fae12076d3a6af6b66adbbe631b243df7c1905d372 +size 200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xpm new file mode 100644 index 0000000..b18bc0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plus.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8a13e2dc9d1e2d64fc97a1459355035275eaef5246041ece0aa6433727fa213 +size 214 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.gif new file mode 100644 index 0000000..af64426 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc4098826ca6e02ed0be4060014861e494913e6684abec63b022d60c1c73011 +size 60 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xbm new file mode 100644 index 0000000..9ebfb0e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d203e21013532585774695fa825cc5e9fdd61cbb6d003d5a81ea5708f632943d +size 209 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xpm new file mode 100644 index 0000000..374253a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/plusarm.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29028826c570486b84309eac36a44ff4ec075f4bc6524fcf670bb15a6ac2d9d3 +size 227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize1.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize1.xbm new file mode 100644 index 0000000..77860a4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize1.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e922248c4442f0dc2649395fa3daf6e632fe2535c80f0b08cf3e437da90c6a40 +size 313 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize2.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize2.xbm new file mode 100644 index 0000000..0424cec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/resize2.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1a4e91a087f0ba61ac8a6041e196cdcd83e4bf439ba40d184e35017961b70b +size 313 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/restore.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/restore.xbm new file mode 100644 index 0000000..9e64968 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/restore.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef817004da4f01a79b2b7d938d9958b86bc20b3ce25d19ed67d4a73373781ad6 +size 287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.gif new file mode 100644 index 0000000..4e80d2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36cb7cca5a262c77937b45b9ed3eac3cacc85181c133c45913fac7481221197d +size 79 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xbm new file mode 100644 index 0000000..6ce845e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:369b3ab49934fc1042a6334c1582f98f5571e8dd946b371ab9eb62124608043a +size 247 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xpm new file mode 100644 index 0000000..fc037cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/srcfile.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3890463645a661c5de044fab923cd5e3ffa2a02869ba6f750230de74da58eb12 +size 312 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/system.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/system.xbm new file mode 100644 index 0000000..22fb5bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/system.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b6cb3257d649d1f5fb3b244b9c1e69f0e0435421e8ebe1994097e1b4020b0fe +size 284 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.gif new file mode 100644 index 0000000..6730153 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b53a7da944e77d00ebb1b352ece6b6e50572e0222678087b86bb163a3969150 +size 79 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xbm new file mode 100644 index 0000000..16fd25c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5dca68ab0947b6c797ba946911b3925fded77a97992079bda14b81a338c799f +size 250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xpm new file mode 100644 index 0000000..f5a30fc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/textfile.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d30e5711ba26d348c2fe18c510fd4997d1a9e78e32085060f0ccd87674a0bfc +size 320 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/tick.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/tick.xbm new file mode 100644 index 0000000..0875473 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/tick.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70920a3c0f5135827ccea0b18368f330dca166b6c1530d687a6d85a7f4d24276 +size 257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.gif new file mode 100644 index 0000000..2225667 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4855ae49469c2c9aa238564d41c57e75ccd4a391156b273a042096382cd3c732 +size 180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.xpm new file mode 100644 index 0000000..5471932 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/bitmaps/warning.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a74c0abaa65318caa8d118955ac0cce9c81e585ae2079c635c16d911debbf3fa +size 1300 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkChoose.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkChoose.tcl new file mode 100644 index 0000000..dba0b8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkChoose.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15855b365f76e23cec3629ad97d7fc52ba673538026d11851cf59d2f725d0443 +size 9221 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkDirLis.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkDirLis.tcl new file mode 100644 index 0000000..075d649 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkDirLis.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f55ab4debd9928f5735e6b819fa9e59461649e69aa708c94ab617e4c3068c3c +size 2087 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkSample.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkSample.tcl new file mode 100644 index 0000000..3f815e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkSample.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fa4e078758eb8a77158b9b7136aa8608f23753a0e541f97082c434508eefab3 +size 7008 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkScroll.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkScroll.tcl new file mode 100644 index 0000000..3293278 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/MkScroll.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ebeeca09e42a09b52b9b9cda74dc7b1442189e55d695e40f080111bae5d1b4 +size 5283 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/about.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/about.xpm new file mode 100644 index 0000000..da2b27d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/about.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24805c306d3a88dc8274fa0c4225093a7404720fc0d8b294fc803d444965f0d4 +size 2360 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/bold.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/bold.xbm new file mode 100644 index 0000000..b4cd2b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/bold.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb91ddbcca2dde4df8520a857370efdb5568f544113306de43662e1b814c6a3d +size 290 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/capital.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/capital.xbm new file mode 100644 index 0000000..403307e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/capital.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e52e47bbc624e9e9c27acbd652565c2840aa7e53e6c841006dfb2c619d6ed828 +size 299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/centerj.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/centerj.xbm new file mode 100644 index 0000000..bc72d39 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/centerj.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b5d6f8592e2bc6f4c4c56947d21e37c91f5f5c3e5795ae408b632d284efa35e +size 299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/code.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/code.xpm new file mode 100644 index 0000000..04ee93d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/code.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef34bfc2d0ed60c004ac50237481be5e57932638a7495dc5c8fbe08134a4e29c +size 642 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xbm new file mode 100644 index 0000000..4a9a164 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca2dc0dab17cf9ae12b98a242d14ecd4f86324c13bd974c48f7bc93903114492 +size 910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xpm new file mode 100644 index 0000000..524e3b3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/combobox.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7479460890f5e0d184b484b39d34cbdbc423f13c88b59376bff60a441dda9dfc +size 2367 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xbm new file mode 100644 index 0000000..25d57af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459e941ecd87984672bf1255da19a8de74f114e173e838f6b85ac734e7ef5fd1 +size 904 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xpm new file mode 100644 index 0000000..40638c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/drivea.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05164d5becdda54104b20bc8f7358f627be9f2602d6b3e344a3033d92e73d148 +size 1414 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/exit.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/exit.xpm new file mode 100644 index 0000000..28a73f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/exit.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06b4bec92f4b28afc161359e66a76cf20c32409d98d5b4d2201679bad5fd9300 +size 2341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xbm new file mode 100644 index 0000000..ddc9be3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c88d5a7bd7d3715c883fc14f03749cb273bc591a654fa57ee2e857ba6865919 +size 907 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xpm new file mode 100644 index 0000000..09821d2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/filebox.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55f5f55324bda873d0ac1888823f1fd078ba8d7910159026c66540538f0a41a7 +size 2359 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xbm new file mode 100644 index 0000000..25d57af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459e941ecd87984672bf1255da19a8de74f114e173e838f6b85ac734e7ef5fd1 +size 904 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xpm new file mode 100644 index 0000000..40638c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/harddisk.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05164d5becdda54104b20bc8f7358f627be9f2602d6b3e344a3033d92e73d148 +size 1414 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/italic.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/italic.xbm new file mode 100644 index 0000000..a819882 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/italic.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19476ddc404a077fb5d07044453d003fc7043f7cb3e4942525631ce19e129491 +size 296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/justify.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/justify.xbm new file mode 100644 index 0000000..e6e4c78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/justify.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09ef1cec38c60bf480d4a955ca60a67e78b27571025fd7fe9de43650aa22a044 +size 299 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/leftj.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/leftj.xbm new file mode 100644 index 0000000..4906cfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/leftj.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc37ebc5f953c8dc851960de244de639def70d79065859e908d6444cbe50a6e5 +size 293 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xbm new file mode 100644 index 0000000..4e8785b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9efee21d14731a4d7b3bd7d9e3c02198bca7195173e009c25ef54a7538c93780 +size 898 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xpm new file mode 100644 index 0000000..f29a6ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/netw.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:068e6f025c1e4bb5b019ff51416fcedd4e5d211d5fca99412b19ded1295b2556 +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xbm new file mode 100644 index 0000000..4e8785b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9efee21d14731a4d7b3bd7d9e3c02198bca7195173e009c25ef54a7538c93780 +size 898 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xpm new file mode 100644 index 0000000..f29a6ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/network.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:068e6f025c1e4bb5b019ff51416fcedd4e5d211d5fca99412b19ded1295b2556 +size 1431 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/optmenu.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/optmenu.xpm new file mode 100644 index 0000000..18a71ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/optmenu.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bad1392a412bdc5b8c9da18bcfb5e92d7623875ffd49e321dd8f322039238302 +size 2337 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/rightj.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/rightj.xbm new file mode 100644 index 0000000..912b60c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/rightj.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58b8d96204593545ee5673cf4d5e09b14c7b922bc95dfd0af7310691cd5e5631 +size 296 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/select.xpm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/select.xpm new file mode 100644 index 0000000..4c4946e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/select.xpm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b13247f797e9ba8d9ee80b3ad356bf7f24fdad80386a7ab3937dbfd25323ee95 +size 2408 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/tix.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/tix.gif new file mode 100644 index 0000000..9b14c73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/tix.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db223d088b0b41ea77614ec7fbfcde1132f68b2e1c3e40c7c1871a541df625ac +size 11042 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/underlin.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/underlin.xbm new file mode 100644 index 0000000..c349a28 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/bitmaps/underlin.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b14b64e1d86de5a5528978f0c5457127b983f41bbbff39caa4a03c1e466b51c +size 305 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/AllSampl.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/AllSampl.tcl new file mode 100644 index 0000000..e4d5703 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/AllSampl.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8109f373097ed5de015e9fbfdf6fc8ce38e0f62b04d6ba103584ae773967afbf +size 5001 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ArrowBtn.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ArrowBtn.tcl new file mode 100644 index 0000000..ac28575 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ArrowBtn.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:996236d970676ef16c670f7b13aefcd17805bec57abad679c6bff36908bf3061 +size 4952 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Balloon.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Balloon.tcl new file mode 100644 index 0000000..ce45dfe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Balloon.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89b2310e8294fd5cf42d6f8def61a4634090dcc825e4524b34015e56f76ee0d6 +size 1769 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/BtnBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/BtnBox.tcl new file mode 100644 index 0000000..576b618 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/BtnBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6844a0af067a3c68d1a953cf8cb21cbef2fa9c04985deb4abea643bfd35c1993 +size 2051 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CObjView.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CObjView.tcl new file mode 100644 index 0000000..4d5f96c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CObjView.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0816b6a13f3e73dd47f5efb4d8821cfff3a51e5b259dca240f8897546413b08 +size 2654 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ChkList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ChkList.tcl new file mode 100644 index 0000000..681752a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ChkList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f8f6f64db23da5c647e80b9fa3dcee09226d01cc2cb7ae2b9d54065c710599e +size 5487 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg.tcl new file mode 100644 index 0000000..65b595f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dc11a3dc49afdb95d7fc693c45d939cab0cda1027a8507dea015fdf5b8cc6a3 +size 2023 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg1.tcl new file mode 100644 index 0000000..741fdc0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa89dae58d3b9b9a10a162f5b71ad72f3f25f89f464ae516539344603fb75bc3 +size 6163 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg2.tcl new file mode 100644 index 0000000..4b89165 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcbd3916070c96685686a53ad1d96c71cd318cb4412a589c3339c0e32dabf7a0 +size 4649 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg3.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg3.tcl new file mode 100644 index 0000000..34d0e58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg3.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7b212552a1894aa206d893d7482db1043f540a0ccf6e75c1149224d750c4f02 +size 2621 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg4.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg4.tcl new file mode 100644 index 0000000..b499e3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/CmpImg4.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9f30e018befa4975c07c316925a6dd44c12513b33e7728f634a5c9fb47438a +size 4430 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ComboBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ComboBox.tcl new file mode 100644 index 0000000..62c65fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ComboBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41bed1e52e830d86c1cc69c2054e3e4078a17c29aec0f89e217d39a6a3f9ad96 +size 3665 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Control.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Control.tcl new file mode 100644 index 0000000..2916f2b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Control.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00603e5e7409dda458d5d11f45fc2e77e71e93ee846b2b1021a429002145dd45 +size 3721 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirDlg.tcl new file mode 100644 index 0000000..82a2688 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771000f308bab1fb8b6878f98d3bb051582c1a28baa0202e9d61730f25036517 +size 2587 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirList.tcl new file mode 100644 index 0000000..3f40975 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e18eba1750aa57f3a447a43141f9d7b3e96da2a9af8604b1dab7d75959239ae4 +size 2848 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirTree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirTree.tcl new file mode 100644 index 0000000..2a58521 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DirTree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c1e0d2fe64ce8dd844d812a1aaddd3a509b01d2520dc00a8ae64a0b8d3f9a78 +size 2825 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DragDrop.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DragDrop.tcl new file mode 100644 index 0000000..afa9b2f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DragDrop.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ca6a4bb39b6de4decabc03077dc2ce035364fd8ed597069246f020ad451cbc8 +size 1662 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DynTree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DynTree.tcl new file mode 100644 index 0000000..9133829 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/DynTree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32e4def921ad1727e7b0cebbf17e0dbcbda2f20e4b5a6271afe4c31dc7acaf17 +size 3916 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EFileDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EFileDlg.tcl new file mode 100644 index 0000000..2d9a0f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EFileDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:976507a1bb4130f3057ceb9abe14d3d8d1df162234f185b1336f9c28323606e9 +size 3226 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EditGrid.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EditGrid.tcl new file mode 100644 index 0000000..a2f32a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/EditGrid.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94ff581a620a08c4c5ac9ac16a7efdd6dae05f9d16d9aebdbe3e3f0cad7ea712 +size 7019 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileDlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileDlg.tcl new file mode 100644 index 0000000..fb3e360 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileDlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f92751d5ac23ba3c11d8c5db5ffc48e4853c3dd9452dacfa7340dfead62dfd17 +size 3111 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileEnt.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileEnt.tcl new file mode 100644 index 0000000..0800a6b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/FileEnt.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a89e7acbf7edb46b8bcd0adc2c7e679d8f0cf586e2190e0131d6dc938087bdd2 +size 2295 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/HList1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/HList1.tcl new file mode 100644 index 0000000..e8b6689 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/HList1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:783589db01d682d4cf114562799a93225f44334af8757eb628d32e57955d81ee +size 4794 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabEntry.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabEntry.tcl new file mode 100644 index 0000000..81e773d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabEntry.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88899f54110824d56d7fb57f5ecd5b97eaa7984c13e53dcec05d1ba1f3e8b8b7 +size 2867 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabFrame.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabFrame.tcl new file mode 100644 index 0000000..86734ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/LabFrame.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8441a5c63a17c64dd25f1e0d4ec18f9bbf404b123a3b99028d3d24e4c7729aae +size 2872 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ListNBK.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ListNBK.tcl new file mode 100644 index 0000000..ef15695 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/ListNBK.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c572f3afd878913df6567c94c0fdb5c4257097fc1b93549f8a1302060f04484f +size 3026 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Meter.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Meter.tcl new file mode 100644 index 0000000..de77017 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Meter.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80c41b77b7de14ad5a0f6d91f3722912dcbeb5b04fa2fa040f7aab013ea1d12e +size 2242 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/NoteBook.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/NoteBook.tcl new file mode 100644 index 0000000..3bf5f52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/NoteBook.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26c4d9cfcd0dd1fbce26f84b060da7e785f855910bbb8744abbb8a301505546b +size 3711 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/OptMenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/OptMenu.tcl new file mode 100644 index 0000000..f3a0edc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/OptMenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9db817c08731f0a67dc7351502ba046bece067e781e910fc2fa0d4094557352 +size 3250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PanedWin.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PanedWin.tcl new file mode 100644 index 0000000..4556071 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PanedWin.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:009a882ecabc3ada6e381d4d6ef0118bfdb6d1f7fc7bc6d3dbc5baa7fab47651 +size 4335 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PopMenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PopMenu.tcl new file mode 100644 index 0000000..09b3458 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/PopMenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e9d20c60e5ffcfad32b3dc011cc36071c722ed10188b0732c2c0e7af3e18afa +size 2436 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid0.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid0.tcl new file mode 100644 index 0000000..2a179c7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid0.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:988106b37c6e5993693d18a03368d0e1a84b8f95114b1832201c6361ff3c9e1c +size 3573 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid1.tcl new file mode 100644 index 0000000..a53bb85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SGrid1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb0388c09b46aeb8828b36e6c3dd804456339731346c4839b2d6e87aba31e6c8 +size 5633 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList.tcl new file mode 100644 index 0000000..0a45f85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5884fea04ec99096d649ad1c7d389d179c05b6cdd5641667270c1e2b73d3990c +size 3208 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList2.tcl new file mode 100644 index 0000000..8b17274 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SHList2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f0a6c494c789b5e5b5f3ce4454b116da9a57b92caae28ea767280e1fd66f55 +size 5092 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SListBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SListBox.tcl new file mode 100644 index 0000000..83109ef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SListBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b2735cbb38b8732aa0c6f21cd551daba46b7f87af90dacdb62ce1e504cb2b8a +size 2949 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList1.tcl new file mode 100644 index 0000000..05c9da4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95d4ee51467f8b4f8ea2ec1031f122181f12f66a1f408d343c55c4c6b5150f3d +size 1612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList2.tcl new file mode 100644 index 0000000..97ed175 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a96ed8063a1579c0895b9ae8d93e77de2120d93fe751a4fea58d2babbff1b20b +size 2473 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList3.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList3.tcl new file mode 100644 index 0000000..d24f4f7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/STList3.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7f04fc61aaa7167bf7c1aa8be5ba59556015e30b084f1eab9a5f040ac4d9d3a +size 3090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SText.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SText.tcl new file mode 100644 index 0000000..ca7d7c4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SText.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:215b50d920b10740acc10ddf4f6ebfe5123ef8806d5099c1906d424cdaca0525 +size 2617 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SWindow.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SWindow.tcl new file mode 100644 index 0000000..a2f659d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/SWindow.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63bbfc5cb9977fe801da0fd33352027c13def4ce851ea7f4b2255fbea36ef5a5 +size 2807 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Sample.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Sample.tcl new file mode 100644 index 0000000..ed1d186 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Sample.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4c09fafc512d7c43674534cc52c8c08b9e6dfb023a39416ab723cb339be9ac1 +size 1065 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Select.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Select.tcl new file mode 100644 index 0000000..14a7e25 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Select.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:047a63479cec283e73987346cb9af9dd0157f39afb4669509c5bf7ebbc1d16de +size 3433 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/StdBBox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/StdBBox.tcl new file mode 100644 index 0000000..6418e8a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/StdBBox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df32e7616d982d73278fba4e418e9fd78777caeff9c08a0e8c1b86b3962e8910 +size 2351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Tree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Tree.tcl new file mode 100644 index 0000000..879ccda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Tree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22396dd36fbdab8ea59ee5a8de697398a63a86a1763cea84b9d7f9d5405d5407 +size 2744 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm.tcl new file mode 100644 index 0000000..07f905d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5cd5eed2739fcd01d7f2f5942c65f8e3d3deff281c4a8e8fbba80df37e379ba +size 3009 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm1.tcl new file mode 100644 index 0000000..0215970 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/samples/Xpm1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74634645297a240d0c216d6455c2fe918af2857a1f0975a3ff0b11b6f1633193 +size 3557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tclIndex b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tclIndex new file mode 100644 index 0000000..b81e933 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tclIndex @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d94e63965733460544427beb671228ed11123ffa51ae8d1d28fb04ad2b81f88b +size 3897 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tixwidgets.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tixwidgets.tcl new file mode 100644 index 0000000..7d97f8e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/tixwidgets.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4c9022069cf000a5ee4a77dc537acb107fdff1d3672f7b044870983fb6327b2 +size 9356 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/widget b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/widget new file mode 100644 index 0000000..a9d0146 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/demos/widget @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82fc32fc51612270de8d70cc14a20ab2428f50a782df707d2aca1083f0455f91 +size 13761 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/fs.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/fs.tcl new file mode 100644 index 0000000..f6f8c0b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/fs.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6283544be918381872d3b483d6ef1fe240a6dcd45ab013a28eb9866644a08f1 +size 4165 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pkgIndex.tcl new file mode 100644 index 0000000..dfa8ccc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64c64e7b58a13810daff8fc3aca3aa26d790269a6c9f54e161c2fb987a30e5f2 +size 154 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fs new file mode 100644 index 0000000..26918a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae702df92cedd70cddc9ef51f756bde17e23f1c5cf6a5d3fc2b9559e05b26fe +size 664 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fsc new file mode 100644 index 0000000..3a3a1e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/10Point.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0d99286eae3e39f121acb971830813298b7f98b01e1341f362302c1378a4d83 +size 2090 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fs new file mode 100644 index 0000000..c0498f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73696fdf63c9c8cd83624ee3a1e95d18688db9c8f5b2fba767e9abac5b321e55 +size 663 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fsc new file mode 100644 index 0000000..9b8dfc5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/12Point.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3241edc24ad328801ca6f65db7f7566cfaf17a38a3be907b5620d9d9fa885aee +size 2089 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fs new file mode 100644 index 0000000..6d0e8be --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8820f5ec1f4a756235f227ac00e524e0b974341f0f796fc2b269a8f6a832cfec +size 661 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fsc new file mode 100644 index 0000000..4e5a45e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/14Point.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:718ff155cbdeb67468939b93a9efdba9585f526d40526b80d4dde98ef7254c6b +size 2155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.cs new file mode 100644 index 0000000..691c9c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25a34d43afdff0dbb6ef04308ac0b97cc89343e4ee065ecb61c7d3369b83c589 +size 1063 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.csc new file mode 100644 index 0000000..95a777b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Bisque.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ba01c10024b474c2f6b61a6d54c92fd9f95ec4c03a2f3ae6cb806a401004ac0 +size 22877 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.cs new file mode 100644 index 0000000..6fc9a27 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38dc4760292c2c3182b893e48cdc028502bf97e8d12b8f62596f8296d6526595 +size 1080 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.csc new file mode 100644 index 0000000..c11b62d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Blue.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:209c569c02c014a3ad40faad4603d8248c9aa457339bea9eea0fd83850717d64 +size 22890 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.cs new file mode 100644 index 0000000..2b53887 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:192dfa09f01124f8eec3e46e2ba26bf5291f91b723c2515645dfb3c10859b307 +size 1081 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.csc new file mode 100644 index 0000000..9871201 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Gray.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86bce61b378d6ee3bbc306ad40ada70f46c528966b3b3f28df7d0d702d26f04f +size 22891 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Makefile b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Makefile new file mode 100644 index 0000000..73f26d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Makefile @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:830a896c087a5d6dd7ece2396fa8eb7424b80f7de1e4b7747b87798139f58848 +size 882 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old12Pt.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old12Pt.fs new file mode 100644 index 0000000..f385327 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old12Pt.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06c0685af83fcb93d8e9c9fe05b3b87e6ff97bfd07bc22b68858eb66f3df1d24 +size 555 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old14Pt.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old14Pt.fs new file mode 100644 index 0000000..a93cb70 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/Old14Pt.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27c79803b703e84d2c228dd365b52eeb66c2ae95ed21a5419dcb476b5b029ecf +size 512 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.cs new file mode 100644 index 0000000..7e9bcaf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d875f29b4a7c0e462396c40bb9b5b2798d777d53e3dc51280c11222ff5b40e25 +size 1064 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.csc new file mode 100644 index 0000000..9200555 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/SGIGray.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feb596c01617784556b7e11d3fb29f0f6453d4da3a46e60405109f90e9f4e573 +size 22876 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.cs new file mode 100644 index 0000000..f570d38 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:776ae50d94a64df358ae46d8fa8c5eb493fdc664696167548a0311d0e897c6e9 +size 1059 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.csc new file mode 100644 index 0000000..c0bf316 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85b07443a34f2d04c6603654f2d0b7637c7ec4b2394cc025114804b47bfc205c +size 2095 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fs new file mode 100644 index 0000000..c362761 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59a38ddde6ab3349dae5a81f4e5c889e99a8752336fe5599ff0a385c71fa129b +size 522 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fsc new file mode 100644 index 0000000..4876365 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TK.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d60dbd699430f60471971f7431e2ae769a46da938dbfe79765375a30ce2f176 +size 588 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.cs new file mode 100644 index 0000000..74fa232 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba5807e0ab2867b6e31fb2539b61c4f1253474a07767dced095c806e61d2aa4c +size 1062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.csc new file mode 100644 index 0000000..46dad90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TixGray.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4805333c38118a33b9f7918601fbf23b66ead7280a21f962165eaf8e788e32d0 +size 22878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.cs new file mode 100644 index 0000000..f2d8076 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:153f6332172525be0ee58a80bf8515d400d0d829078caa3e1fe3bdb7f6b5c389 +size 2314 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.csc new file mode 100644 index 0000000..e658435 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88edda70c62895ad58df9bb8f2af3e8246c134269eeb9855ab1d70ea7b7b92b0 +size 22635 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fs new file mode 100644 index 0000000..497bbd0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b51bf585a338ab96bff080855182a5e29330ee2cf7716463914f017fa7ac02ba +size 406 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fsc new file mode 100644 index 0000000..06b1344 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/TkWin.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fe061aa39e450768c58e77aa39b0ea9c980e60d8f9505afa9934d5439b6758a +size 1708 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.cs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.cs new file mode 100644 index 0000000..69bc33b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.cs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:638882f34bb3caeef3f0f1bd4997a123de116af0b16289e62a537e4e63f6827a +size 1497 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.csc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.csc new file mode 100644 index 0000000..e8f38a1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.csc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f32a52bacaf45cee173d6d4982a39a9734ba510db15f081d5cb6a9f2ff955700 +size 14882 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fs b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fs new file mode 100644 index 0000000..795b433 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c95d51b28cdf09c97990e6ba11b1f3e294419ed678771e2054115e7fb002bb4 +size 778 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fsc b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fsc new file mode 100644 index 0000000..e196477 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.fsc @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77722943e8b234fdaba9b85206a3188913fc1d423faf45cbff87d3164ee63e52 +size 2241 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.py b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.py new file mode 100644 index 0000000..e74f6d9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a639975edd8a50c6d9ad0dc1fd50c2cb9213f1f8d2879ba661c6a9ce78b3dd3 +size 3597 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.tcl new file mode 100644 index 0000000..12e1c1f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:186de6b0a494b36ae97ba9237f9ffa03f38f670e855ba0e72bf0ef192e52ebe4 +size 34898 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.txt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.txt new file mode 100644 index 0000000..23db0f8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/WmDefault.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1800c8ec457feaef748762c8059251e5c8f160f004b7a83e1f9a50da5b68e6b3 +size 4466 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/pkgIndex.tcl new file mode 100644 index 0000000..cbab9fd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c9e2e43331a73b84fee2a7be29eda696ddb650412ba62a11ef97ba53b021a64 +size 271 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/tixmkpref b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/tixmkpref new file mode 100644 index 0000000..e2d6555 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/pref/tixmkpref @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c87861571ba882cecabb5a00cb771b3ed3cd2dd87851c2bc26c9a05abba6ed1 +size 10032 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.dll new file mode 100644 index 0000000..4f12140 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05ab699efb499029b008d85ec7ddaa054cf8e70f8643129f5658e8e9fd7dd95f +size 371200 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.lib new file mode 100644 index 0000000..acca81c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tix8.4.3/tix84.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a82c68f505ed22d399319acd9dd2be9522f86314c8eb09b460d94c3bef9b154b +size 34156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/bgerror.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/bgerror.tcl new file mode 100644 index 0000000..44da0e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/bgerror.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8822365ee279bebf7a36cfdedba1114762f894781f4635170cc5d85ff5b17923 +size 8806 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/button.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/button.tcl new file mode 100644 index 0000000..72523a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/button.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f5dd8d81b26f16e772e92fd2a22accb785004d0ed3447e54f87005d9c6a07a5 +size 21612 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/choosedir.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/choosedir.tcl new file mode 100644 index 0000000..90deb55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/choosedir.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35b208e8570b0d1e0ca1c911d4fe02ee3b0cfe5667cf1bdec006cf9d043122ba +size 9960 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/clrpick.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/clrpick.tcl new file mode 100644 index 0000000..d753eb5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/clrpick.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d210dcfa9adb4c23e44ebf744839158cab4e21eacf9483c6ba91ba6ec4660eb8 +size 22103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/comdlg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/comdlg.tcl new file mode 100644 index 0000000..d9d661a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/comdlg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7da292ccf5f413e599c3491c331ffd58cf273f8477facb097e6f36cf1f32a08 +size 8690 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/console.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/console.tcl new file mode 100644 index 0000000..fc23c51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/console.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4b21dbf699c20ea5ac334ec109f731be8eb2b8f9a34ccc2ebe538f4bf8a05f8 +size 33347 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/README b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/README new file mode 100644 index 0000000..975891a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/README @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3178afafccb3ccccbd9b0bfa311973bd79c1d143f2ea14a3af1c6a82f7ccec +size 2126 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/anilabel.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/anilabel.tcl new file mode 100644 index 0000000..0677173 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/anilabel.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15f62112d522570d1bd80aef38ebd292c3886d0e975f883c1f6ec4dcd315c07a +size 6830 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/aniwave.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/aniwave.tcl new file mode 100644 index 0000000..328b4c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/aniwave.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f59254d921b440bb3f6b6cc6fa1b2d24f9d8547a286b98285ec4f0c45702c9 +size 3598 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/arrow.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/arrow.tcl new file mode 100644 index 0000000..069ce07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/arrow.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:818bd1a13b4afc9ab897da219cfc174c477d1aa55f9db5da005d4e5ae1a03806 +size 8351 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bind.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bind.tcl new file mode 100644 index 0000000..e94cce3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bind.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:941ee3f0080d24d6942160813acf9bacab5c52f082756023cd05e3ea28e71b02 +size 3156 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bitmap.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bitmap.tcl new file mode 100644 index 0000000..b6084bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/bitmap.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6c1f7b01f04b7880616e2affe948fc4645bae51a1df7f51e545e0896845f8fe +size 1463 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/browse b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/browse new file mode 100644 index 0000000..047a6e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/browse @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5a6843453fa7beec0589e07351799708b27ca0d3fef640190de01344259f11d +size 1821 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/button.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/button.tcl new file mode 100644 index 0000000..0481242 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/button.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ff1e752e51d72d8079b499865afd3c3cb9f4c4fd69e48c0e5ec5d701aa6a1d5 +size 1551 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/check.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/check.tcl new file mode 100644 index 0000000..0e06a1a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/check.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5b535512fe3c68183faaa55fb1029b7de651bec1fd0e7f50064d8d73e080ffd +size 2349 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/clrpick.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/clrpick.tcl new file mode 100644 index 0000000..bbbd47b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/clrpick.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e7fd178c20f07b96ff51cb375e6ad422807d026a0c5b57deb5e5acad2661783 +size 1485 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/colors.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/colors.tcl new file mode 100644 index 0000000..1275911 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/colors.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fde271dc94cc6d81ec874188e80fcdd8854a40fb1c45f6ecbfb9cce8991a7d3c +size 5101 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/combo.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/combo.tcl new file mode 100644 index 0000000..45477bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/combo.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85ba1d5d4265cc2949b011a0ca7823e600d0dfa38b5155876e892c125499a8e2 +size 2024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/cscroll.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/cscroll.tcl new file mode 100644 index 0000000..d71b427 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/cscroll.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:119629ef0782502a6f572499fd3f47f4d69c3e0f3b443b24f1015db7c85839f7 +size 5213 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ctext.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ctext.tcl new file mode 100644 index 0000000..f4a1507 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ctext.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f7dac4ff555c9ccaabeef89a17f234dc4b5ca818848b99089fe42d5da4704ee +size 6381 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog1.tcl new file mode 100644 index 0000000..fd0e823 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c48d3c23d6a2a3c0c5229ae9838884f77fa7c2514f53634791210f3a13a97f +size 999 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog2.tcl new file mode 100644 index 0000000..051e971 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/dialog2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:247082a303e8d699011d6126361a842dcf53164ae9699d2fda0492d691d96c53 +size 846 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/en.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/en.msg new file mode 100644 index 0000000..709076e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/en.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b3d80f5e884a94c27a97fd46ddf2947feedc7c960bbfa359bdea6ddd1e0df87 +size 3964 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry1.tcl new file mode 100644 index 0000000..101d6ca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9675cae23d2481e8edd23b6393cd1bba39815858ac4ddb2a73358eb0c2d1ec8a +size 1435 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry2.tcl new file mode 100644 index 0000000..627a2b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83743f534012c70c87c3c1133b17b00a332c8e10a7436697e805b45f29b392b1 +size 2152 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry3.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry3.tcl new file mode 100644 index 0000000..4f0af05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/entry3.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:251b02601ca72e97378201085cef6a1a174ba1e16b60e735b508dd37f51f0f0e +size 6287 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/filebox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/filebox.tcl new file mode 100644 index 0000000..52bd97e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/filebox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277669c033ffe1450f762892e31f9ded824776e5e70d6132eeb167fd15533f9b +size 2432 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/floor.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/floor.tcl new file mode 100644 index 0000000..4d1e444 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/floor.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f983992e0f89d6b6af89fd607b221a15fe50ac18c5c5a0afa9a17d2a2a5be961 +size 82362 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/fontchoose.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/fontchoose.tcl new file mode 100644 index 0000000..1cd8a41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/fontchoose.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bf3d1f798589c269ecfd2b76dde820fff0be027e42c34d4bb13a6b78a5c4f05 +size 1777 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/form.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/form.tcl new file mode 100644 index 0000000..68d5c41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/form.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b1de253d0bd2e679a4759f2c9c486105813c95a7f55696914d6c8874e91c6a1 +size 1084 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/goldberg.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/goldberg.tcl new file mode 100644 index 0000000..42b058a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/goldberg.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce4bde7e5895e4abdccc702cc9790fd3231c8e55af80ba3f28b65aa7ed2d2947 +size 58499 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hello b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hello new file mode 100644 index 0000000..6fb7090 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hello @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741bbaf0dc065eb4fcc7b655e0f830bce6c9d9c22cf61ac9f18c17986819f414 +size 531 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hscale.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hscale.tcl new file mode 100644 index 0000000..c76ed62 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/hscale.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ab4ebc5f7af945bcb81aabbf0f7839d88d3347c0f1988e2a6366eee090564f5 +size 1542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/icon.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/icon.tcl new file mode 100644 index 0000000..3c382bf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/icon.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8818b41f8661ac17db45d622855909865b8a5cb210fc1b22f3375f3511ed47c +size 2114 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image1.tcl new file mode 100644 index 0000000..dc939b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcc89527b6027b143da4449d13baad8eb1604a7b86d4824a865465ef6f40ac3b +size 1037 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image2.tcl new file mode 100644 index 0000000..9557ccd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/image2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e60cec6bbaf17048bc2c1b6b147d2c85a7014b744eb7f7efe533d9ef3932d58 +size 3467 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earth.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earth.gif new file mode 100644 index 0000000..4261c33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earth.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf29c94949f125a04fee6bdf93ba8f358f26e9e39aa7a4977466834b3133fcb7 +size 51559 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthmenu.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthmenu.png new file mode 100644 index 0000000..5e8870f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthmenu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bf8d96016039d7fdb2ffc506743724636a70ed5925199aab64ca20820963bde +size 8157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthris.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthris.gif new file mode 100644 index 0000000..a104d73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/earthris.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2da473e55d8317bd1f983638adb729bff1461de590d76f99d8b3430c71e0f6e +size 6343 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagdown.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagdown.xbm new file mode 100644 index 0000000..1db9867 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagdown.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70ab05927c40337b1d9a8fc15edc220ba4482d8c886f26b0f5c306071e06851d +size 1913 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagup.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagup.xbm new file mode 100644 index 0000000..4e310ac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/flagup.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d3d30b674eef51449465d387700bf8608931db54f67a93e015b9a4042f1e29c +size 1907 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/gray25.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/gray25.xbm new file mode 100644 index 0000000..29c5aca --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/gray25.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b637798957ed022067685e95c95e8c5e12c27b3443de3a8e5aa3ee0bb583bc28 +size 281 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/letters.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/letters.xbm new file mode 100644 index 0000000..640c07e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/letters.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e82e3b9655519682ace59d217a004141dea420b5acb8eca08682066895855740 +size 1910 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/noletter.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/noletter.xbm new file mode 100644 index 0000000..95fca18 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/noletter.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6af489117974f9c43b681e340e0a25b7f0f97b7f615e8cb3062c26a3fb7b40e +size 1916 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/ouster.png b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/ouster.png new file mode 100644 index 0000000..9063c07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/ouster.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2fe354dfcb09b9eeb488128f4ac0b498766faf4a8becf65bbcd779bdb9c4c8f +size 54257 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/pattern.xbm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/pattern.xbm new file mode 100644 index 0000000..ffd1141 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/pattern.xbm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5da801fa4ada674d951e154a4531a17f3201cee4af025800d3ccf98de860cad +size 278 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/tcllogo.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/tcllogo.gif new file mode 100644 index 0000000..1594bc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/tcllogo.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72f6b34d3c8f424ff0a290a793fcfbf34fd5630a916cd02e0a5dda0144b5957f +size 2341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/teapot.ppm b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/teapot.ppm new file mode 100644 index 0000000..59307eb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/images/teapot.ppm @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:786f29b88771e439187dd2e86ad4d255dd185e0c1ea3f8c37d21770fd1df253a +size 196623 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/items.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/items.tcl new file mode 100644 index 0000000..3da00c2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/items.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46e7c6342f562e002c08fb0b3c316079a477697d9f10bea594983fe1d1e71cf8 +size 10797 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ixset b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ixset new file mode 100644 index 0000000..8a82a10 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ixset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ddeea934b567e8e5bee08e2a3767ddf40f015ab251bddd79a841cfec548e694 +size 8400 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/knightstour.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/knightstour.tcl new file mode 100644 index 0000000..f86b43f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/knightstour.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b4d0e72f828ad3a5420bf71f05a212ec32bd500c4645ca12a48dec4e0486a05 +size 9391 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/label.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/label.tcl new file mode 100644 index 0000000..f6ab0dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/label.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6334ab83c8e2d2ba95debe678d5583ba7c74925e542047a4fe05554e69cf16e9 +size 1419 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/labelframe.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/labelframe.tcl new file mode 100644 index 0000000..8ff7f2f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/labelframe.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb7f34effeff03dda13c4088fececa6d266ffbd87d3dad075a424c89305889e0 +size 1923 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/license.terms b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/license.terms new file mode 100644 index 0000000..a8447cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/license.terms @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d1e4405f6273f091732764ed89b57066be63ce64869be6c71ea337dc4f2f9b5 +size 2307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/mclist.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/mclist.tcl new file mode 100644 index 0000000..5db1748 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/mclist.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:737c1c78127865b8f3a359ec8f6d8675146547e043d9874f6e49d44680ed1c8a +size 4476 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menu.tcl new file mode 100644 index 0000000..fe4f5c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52aae46cf874d84a8acd8d68842da19a93a7699cb5ef0ddd4d20b619fc274f7b +size 7469 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menubu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menubu.tcl new file mode 100644 index 0000000..4ba5cdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/menubu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:727e4cc64e3cbe1c1ec0676f581bf884df66c0819d8434dc854fbc211dccc3a2 +size 4342 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/msgbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/msgbox.tcl new file mode 100644 index 0000000..f5bf357 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/msgbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:652e236850c86d7f924514255174738ba71a1f7a7ba739aae6734ebd328d5428 +size 2060 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/nl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/nl.msg new file mode 100644 index 0000000..0d6761d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/nl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f527e0117feb1c9aca6d06dda1226c201e6deaf89efca171175d08e80a9712ab +size 6875 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned1.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned1.tcl new file mode 100644 index 0000000..e6f7fcd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned1.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d98e8a9bc5332d9dbf4f00382f840af90ce95204b05326c56cc079c27182d811 +size 1162 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned2.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned2.tcl new file mode 100644 index 0000000..f10ab19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/paned2.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7684877a618c5bab0d0293662d76e5fdb231b479d8d9c0cb759e9af586ce6b2 +size 2318 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/pendulum.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/pendulum.tcl new file mode 100644 index 0000000..e64fed7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/pendulum.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a00d1f68fbca9877a9f2269e324552a746f6a3babfb651cba0d39ba2bba0e8c5 +size 7820 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/plot.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/plot.tcl new file mode 100644 index 0000000..3c18e00 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/plot.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:897e231aea6c393571494dc4279f3d2d0206a7405740c2f601a1ca01b076e1a1 +size 2854 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/puzzle.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/puzzle.tcl new file mode 100644 index 0000000..c742dfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/puzzle.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0cac223f23af652a21a7ba4807177c968a5edadd08f9bf046b1a0ffc9eac154 +size 2685 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/radio.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/radio.tcl new file mode 100644 index 0000000..3ac9e5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/radio.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dcfe813b024ded726e728e75e8ec718b1a2491d4dac47adb2ae432af0cd1f57 +size 2818 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rmt b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rmt new file mode 100644 index 0000000..356574a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rmt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbd680e536b4eb2a2d733f96bbf3b5712e66a4a9e0a49f440f4668c6ac1b719a +size 5526 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rolodex b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rolodex new file mode 100644 index 0000000..286f1b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/rolodex @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b995670a0afe039aa2051e5fc3ca27a3a42fb1c359f3a32603500385037029c2 +size 8501 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ruler.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ruler.tcl new file mode 100644 index 0000000..fccd8e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ruler.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd94b05bc5e28e8e7a932af964e9544389b5ccd76498916762240e48d382d121 +size 5508 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/sayings.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/sayings.tcl new file mode 100644 index 0000000..30e6149 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/sayings.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd24db3c873d29539ab345a2d4035e22be2360bb61b4d1be8313fc129c57f6d +size 2317 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/search.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/search.tcl new file mode 100644 index 0000000..cf0ea2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/search.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bea80b1b64879f571576e21deb3d909b95418eac230376f3df68f757a7eddf02 +size 4542 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/spin.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/spin.tcl new file mode 100644 index 0000000..aad4a96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/spin.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77c7708062e226c7b55d81b89481ea088935759449dc4af754399bf609f5bebd +size 1873 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/square b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/square new file mode 100644 index 0000000..f74db8b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/square @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fb92b6033f2d05915b984076971db0ef87bad1e463591f5ba9507bdaeb95966 +size 1385 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/states.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/states.tcl new file mode 100644 index 0000000..feb4171 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/states.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12efe21106986b06d1f65bd2734514707fa70a7a8282bbd59c681ba02b0c9361 +size 2102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/style.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/style.tcl new file mode 100644 index 0000000..ae99bf4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/style.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:798f10af8f6dfdcb4f95d075224e6de051565d401aa28604a45005a592efb263 +size 7098 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tclIndex b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tclIndex new file mode 100644 index 0000000..1a9e04a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tclIndex @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb7a61ebdcf654c2ab1ad5b9444a115e40c90e8c88a8dc5b7b4870286ddb9241 +size 5365 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tcolor b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tcolor new file mode 100644 index 0000000..eb86219 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tcolor @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf3f2cf7a612675f640ca71744a5cb5437e94a70bcbfdb899ff3c257d3868eb1 +size 11608 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/text.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/text.tcl new file mode 100644 index 0000000..d3e3f96 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/text.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfbed67317a86fbce94321754ecad255b2de3ff5b7c735682daeabaaa9f0086a +size 4404 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/textpeer.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/textpeer.tcl new file mode 100644 index 0000000..6263783 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/textpeer.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:440f52dbedf0c2e4754c93971d478425c9e78f71db19df3274720903647c9e15 +size 2250 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/timer b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/timer new file mode 100644 index 0000000..7bdd426 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/timer @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a0410f3c13a47eb52d55e781fb54b13d5a0dbeb88ba88ea6e9e74019ae21ddc +size 1139 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/toolbar.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/toolbar.tcl new file mode 100644 index 0000000..64c35e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/toolbar.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c2d3b5fa57a402508fc9a4d9464cdaca10504cf85da8a2742693c42998cba64 +size 3364 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tree.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tree.tcl new file mode 100644 index 0000000..149051a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/tree.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62052568d2cca5ed1d9ff6ccaf3821601f8201106fab9095c20bc19585215535 +size 3267 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkbut.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkbut.tcl new file mode 100644 index 0000000..ed9ed64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkbut.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1e26aa0622d79b6532b54e4ece6d9136d36c96dd6dacea1eddebf2bb07cb9cc +size 3489 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkmenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkmenu.tcl new file mode 100644 index 0000000..baf8971 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkmenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a96e4e93976351658fefb2e4bc7371f68d4ae3bd1775f590938abed0ade103f +size 2444 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttknote.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttknote.tcl new file mode 100644 index 0000000..ae35fc8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttknote.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8ab22ddd00a2583ecb7bc6e0f71a800dffe71d587567b1aaa571af9440175e0 +size 2374 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkpane.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkpane.tcl new file mode 100644 index 0000000..8d056f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkpane.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1c472dcc79ab4826796848e320fc8769bc9daf6fe0378995054686a006d2c14 +size 4289 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkprogress.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkprogress.tcl new file mode 100644 index 0000000..731c9b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkprogress.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340104a560226fd7e82de93b58e3ba4a56423c3d3f8c94b440287edc3ff5119e +size 1582 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkscale.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkscale.tcl new file mode 100644 index 0000000..7d15151 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/ttkscale.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2baa67e262de37b50615a9999c624ee05ce02b255334516c548ea845f7d4c470 +size 1459 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/twind.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/twind.tcl new file mode 100644 index 0000000..3b66ed7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/twind.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36b00de2b67c0974873787b4ff033f169f7201ab88e926fb4058f5cbb0298284 +size 12005 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/unicodeout.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/unicodeout.tcl new file mode 100644 index 0000000..a1ec700 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/unicodeout.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5cc2cd45093b91cefaca4842055b89aa193cdc8a8c21ac5b049d15a7a1d044d +size 4851 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/vscale.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/vscale.tcl new file mode 100644 index 0000000..68d36f3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/vscale.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c54f3b13268f6f96898b974b5bd185dcb59384096a3b1a3deff93b5361eea1a +size 1523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/widget b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/widget new file mode 100644 index 0000000..edd8369 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/demos/widget @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01bef967805998261dc10784f974d86679a8c2d51b49cd1461ffc9b9340a034f +size 24794 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/dialog.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/dialog.tcl new file mode 100644 index 0000000..02b690b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/dialog.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c977052c1d8293cc5fe4198a538beca9bc821af85e76e4eefbfb75b33ce8bed +size 5988 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/entry.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/entry.tcl new file mode 100644 index 0000000..912a277 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/entry.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65ba33a1e0b21e8e074780a51189cee6fd9926c85273e9e7633987fc212a17b2 +size 18440 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/focus.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/focus.tcl new file mode 100644 index 0000000..8801f9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/focus.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8872f236d7e824aec0acd4bacc00fdd7ec9bc5534814ecf2160610c10647b7c5 +size 5035 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/fontchooser.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/fontchooser.tcl new file mode 100644 index 0000000..d9b69e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/fontchooser.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ee521f4980a5056077005b748717d91cb6b17342cdd20135962ab92a665b580 +size 18232 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/iconlist.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/iconlist.tcl new file mode 100644 index 0000000..c87c906 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/iconlist.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07812124d27e47621af74fdb90c777d3219b02f657fc2f97f606c69ef9468a01 +size 17565 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/icons.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/icons.tcl new file mode 100644 index 0000000..fde09b9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/icons.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1264940e62b9a37967925418e9d0dc0befd369e8c181b9bab3d1607e3cc14b85 +size 11037 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/README b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/README new file mode 100644 index 0000000..424fb9e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/README @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6db098ebd8a622164d37d4ab0a8c205db1a83ac3065d5cde3cb5fb61925d283 +size 329 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo.eps b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo.eps new file mode 100644 index 0000000..9361c6d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo.eps @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76207d8dfde189a29dc0e76adb7eaaa606b96bc6c1c831f34d1c85b1c5b51dd3 +size 34991 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo100.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo100.gif new file mode 100644 index 0000000..1594bc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo100.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72f6b34d3c8f424ff0a290a793fcfbf34fd5630a916cd02e0a5dda0144b5957f +size 2341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo64.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo64.gif new file mode 100644 index 0000000..1401554 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logo64.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:138c240382304f350383b02ed56c69103a9431c0544eb1ec5dcd7dec7a555dd9 +size 1670 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoLarge.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoLarge.gif new file mode 100644 index 0000000..b41b8a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoLarge.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f404764d07a6ae2ef9e1e0e8eaac278b7d488d61cf1c084146f2f33b485f2ed +size 11000 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoMed.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoMed.gif new file mode 100644 index 0000000..d55684b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/logoMed.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d0bd3228ab4cc3e5159f4337be969ec7b7334e265c99b7633e3daf3c3fcfb62 +size 3889 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo.eps b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo.eps new file mode 100644 index 0000000..37b45b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo.eps @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87fd9e46dbb5f2bf1529afb411182c9fb9c58e23d830c66a233af0c256bb8eff +size 29706 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo100.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo100.gif new file mode 100644 index 0000000..fc42b03 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo100.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcc0e6458249433e8cba6c58122b7c0efa9557cbc8fb5f9392eed5d2579fc70b +size 1615 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo150.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo150.gif new file mode 100644 index 0000000..e8eb2d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo150.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fc25c30aee76477f1c4e922931cc806823df059525583ff5705705d9e913c1c +size 2489 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo175.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo175.gif new file mode 100644 index 0000000..7e90f13 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo175.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62866e95501c436b329a15432355743c6efd64a37cfb65bcece465ab63ecf240 +size 2981 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo200.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo200.gif new file mode 100644 index 0000000..64fc3bb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo200.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bad9116386343f4a4c394bdb87146e49f674f687d52bb847bd9e8198fda382cc +size 3491 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo75.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo75.gif new file mode 100644 index 0000000..5247cb5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/pwrdLogo75.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:462a8ff8fd051a8100e8c6c086f497e4056ace5b20b44791f4aab964b010a448 +size 1171 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/tai-ku.gif b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/tai-ku.gif new file mode 100644 index 0000000..57fe342 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/images/tai-ku.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e538f8f4934ca6e1ce29416d292171f28e67da6c72ed9d236ba42f37445ea41e +size 5473 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/license.terms b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/license.terms new file mode 100644 index 0000000..a8447cc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/license.terms @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d1e4405f6273f091732764ed89b57066be63ce64869be6c71ea337dc4f2f9b5 +size 2307 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/listbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/listbox.tcl new file mode 100644 index 0000000..3f14856 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/listbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47c75f9f8348bf8f2c086c57b97b73741218100ca38d10b8abdf2051c95b9801 +size 15255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/megawidget.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/megawidget.tcl new file mode 100644 index 0000000..ac94793 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/megawidget.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:848258b946c002e2696ca3815a1589c8120af5cc41fbc11bbd9a3f5754cc21af +size 9862 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/menu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/menu.tcl new file mode 100644 index 0000000..5d5ea37 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/menu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:312af944a276cdbf1ee00757ef141595670984f7f13e19922c25643a040f5339 +size 39790 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/mkpsenc.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/mkpsenc.tcl new file mode 100644 index 0000000..7389386 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/mkpsenc.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5bdca3aba671f03dc4624ab5fd260490f5002491d6c619142ccf5a1a744528a +size 30840 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgbox.tcl new file mode 100644 index 0000000..7c19c77 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a07e3a3809ced3c6c9c1e171dca5ad1f28357734cd41b2b9dd9f58085b3d2842 +size 16786 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/cs.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/cs.msg new file mode 100644 index 0000000..c3cfe07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/cs.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dffbeedbf0d66d84b13088016d1a782ceaad4ded27be1e38842f8969c0e533f +size 4235 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/da.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/da.msg new file mode 100644 index 0000000..9799bdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/da.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feef8f8ad33bb3362c845a25d6ed273c398051047d899b31790474614c7afd2d +size 3987 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/de.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/de.msg new file mode 100644 index 0000000..c363259 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/de.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0f574b14068a049e93421c73873d750c98de28b7b77aa42fe72cbe0270a4186 +size 4914 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/el.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/el.msg new file mode 100644 index 0000000..de177e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/el.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6f155864fe59a341bfd869735e54dd21cee21bbd038433d9b271ad77ba3f7e +size 8784 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en.msg new file mode 100644 index 0000000..650bd19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a33b44b2e220e28eaae7fac407cafe43d97c270da58fa5f3b699a1760bfb2a4 +size 3377 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en_gb.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en_gb.msg new file mode 100644 index 0000000..90a9439 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/en_gb.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01238293356e82f1d298896491f8b299bb7dc9c34f299c9e756254c736da612b +size 66 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/eo.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/eo.msg new file mode 100644 index 0000000..fe62ea5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/eo.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b117857674a2426290946053a61316c5c8c6808f2c6edf0ecc5c4a9c5c72ac +size 4035 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/es.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/es.msg new file mode 100644 index 0000000..ad978e9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/es.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2842b80f1b521eff2d2656a69274b5f2a8f4f5831af2e8ee73e3c37389f981f +size 4024 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fi.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fi.msg new file mode 100644 index 0000000..27f3dc2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fi.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893bedcdaed4602898d988e6248b8bb0857dd66c06194b45f31340ca03d82369 +size 4693 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fr.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fr.msg new file mode 100644 index 0000000..b0fc072 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/fr.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f2ceb4a33695ab6b56e27f61a4c60c029935bb026497d99cb2c246bcb4a63c4 +size 3877 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/hu.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/hu.msg new file mode 100644 index 0000000..51e424e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/hu.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e063ad7ca93f37728a65e4cd7c0433950f22607d307949f6cb056446afeaa4fe +size 4678 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/it.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/it.msg new file mode 100644 index 0000000..ba368d4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/it.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:806930f283fd097195c7850e3486b3815d1564529b4f8e5fa6d26f3175183bc1 +size 3765 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/nl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/nl.msg new file mode 100644 index 0000000..7fdcd0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/nl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0914fba42361227d14fa281e8a9cbf57c16200b4da1e61cc3402ef0113a512c7 +size 4557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pl.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pl.msg new file mode 100644 index 0000000..703ee01 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pl.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaceb1f08de0863ccf726881e07fe5b135ea09646c5253e0cbf7ddb987eb0d92 +size 4932 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pt.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pt.msg new file mode 100644 index 0000000..3a5c9ce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/pt.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d687f71f0432bb0d02efdf576e526d2c19d4136f76c41a3224a2f034168f3f34 +size 3987 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/ru.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/ru.msg new file mode 100644 index 0000000..2a95d57 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/ru.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0d310a2ee9c0af928d822cbb39bcbe54fb2c1c95ee8167dffd55edc1b2fe040 +size 8620 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/sv.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/sv.msg new file mode 100644 index 0000000..b55c255 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/sv.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6821a13d34fb31f1827294b82c4bf9586bb255ca14f78c3ace11181f42ef211 +size 3908 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/zh_cn.msg b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/zh_cn.msg new file mode 100644 index 0000000..f882655 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/msgs/zh_cn.msg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6802b7b080a2d8bc3d81614ec55a609cb5ef673c7a81e93e07925d6710f90dd +size 4951 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/obsolete.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/obsolete.tcl new file mode 100644 index 0000000..c30c6b2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/obsolete.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:540eeecba17207a56290baffdae882bbd4f88364791204ad5d14c7bedd022ccc +size 5772 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/optMenu.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/optMenu.tcl new file mode 100644 index 0000000..d913963 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/optMenu.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40ca505c9784b0767d4854485c5c311829594a4fcbdfd7251e60e6bb7ea74fd1 +size 1629 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/palette.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/palette.tcl new file mode 100644 index 0000000..21cea45 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/palette.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:849b4c57e4644e51beaeaeb3ae59b7ff067e582ecd10f1b2caf6b6e72f11f506 +size 8418 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/panedwindow.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/panedwindow.tcl new file mode 100644 index 0000000..094d488 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/panedwindow.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa4f87e41ac8297f51150f2a9f787607690d01793456b93f0939c54d394731f9 +size 5370 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/pkgIndex.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/pkgIndex.tcl new file mode 100644 index 0000000..62ce00e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/pkgIndex.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d208887a94832328c3a33928a80f3b46aa205c20db4f050a47d940e94071b4 +size 376 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/safetk.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/safetk.tcl new file mode 100644 index 0000000..0c69e10 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/safetk.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:579701605669aadffbcdb7e3545c68442495428ee6e93c2d3a3133583bcd3d33 +size 7632 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scale.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scale.tcl new file mode 100644 index 0000000..9f06fd9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scale.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0747a387fdd1b2c7135eceae7b392ed52e1d1ebf3ffa90febe886dbc0981eb74 +size 8693 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scrlbar.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scrlbar.tcl new file mode 100644 index 0000000..1cb224b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/scrlbar.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eec90404f702d3cfbfaec0f13bf5ed1ebeb736bee12d7e69770181a25401c61f +size 13188 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/spinbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/spinbox.tcl new file mode 100644 index 0000000..8299903 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/spinbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:747889c3086c917a34554a9dc495bc0c08a03fd3a5828353ed2a64b97f376835 +size 16543 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tclIndex b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tclIndex new file mode 100644 index 0000000..3f05c26 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tclIndex @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b04b1a675572e6fcd12c5fe82c4fd0930395548436ff93d848bf340ae202e7e3 +size 20523 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tearoff.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tearoff.tcl new file mode 100644 index 0000000..bd06ba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tearoff.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4a8568633f827b54326640e6d1c3fde4978edc9e9fa1fb1d7b58f189df1b1dc +size 5309 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/text.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/text.tcl new file mode 100644 index 0000000..60b56c6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/text.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab88556e349f03baca2d8dc2121071a4f299db86f484cab2d9249ff4c7007564 +size 34969 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tk.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tk.tcl new file mode 100644 index 0000000..0278e65 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tk.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d5e7518afc1382e36bf13fc5196c8a7cd93a4e9d24acf445522564245a489b0 +size 24102 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tkfbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tkfbox.tcl new file mode 100644 index 0000000..ced607c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/tkfbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aaa66ae8e74b94481c3f6642634e78bb5d7892771e7c27b54dfa56ded0b2f3c +size 39557 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/altTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/altTheme.tcl new file mode 100644 index 0000000..6321e51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/altTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae0437fb4e0ebd31322e4eaca626c12abde602da483bb39d0c5ee1bc00ab0af4 +size 3713 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/aquaTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/aquaTheme.tcl new file mode 100644 index 0000000..48b98f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/aquaTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e199cc9c429b35a09721d0a22543c3729e2b8462e68dfa158c0cec9c70a0d79d +size 3838 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/button.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/button.tcl new file mode 100644 index 0000000..51485c5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/button.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e38a9d1f437981aa6bf0bdd074d57b769a4140c0f7d9aff51743fe4ecc6dfddf +size 3014 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/clamTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/clamTheme.tcl new file mode 100644 index 0000000..bc02450 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/clamTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cffc59931fdd1683ad23895e92522cf49b099128753fcdff34374024e42cf995 +size 4809 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/classicTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/classicTheme.tcl new file mode 100644 index 0000000..cb090a2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/classicTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:424bba4fb6836feebe34f6c176ed666dce51d2fba9a8d7aa756abcbbad3fc1e3 +size 3864 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/combobox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/combobox.tcl new file mode 100644 index 0000000..628699d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/combobox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68eed4af6d2ec5b3ea24b1122a704b040366cbe2f458103137479352ffa1475a +size 12718 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/cursors.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/cursors.tcl new file mode 100644 index 0000000..c14677d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/cursors.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b33f32b0139663347d6cf70a5a838f8e4554e0e881e97c8478b77733162ea73 +size 4674 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/defaults.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/defaults.tcl new file mode 100644 index 0000000..b9f736e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/defaults.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49ae8faf169165bddaf01d50b52943ebab3656e9468292b7890be143d0fcbc91 +size 4553 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/entry.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/entry.tcl new file mode 100644 index 0000000..eec926e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/entry.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:266553eb9eed333dd836ba96204ae008f10686f4f12c404187f1e01cab65d246 +size 17658 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/fonts.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/fonts.tcl new file mode 100644 index 0000000..2c7a77f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/fonts.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b94c319e5a557a5665b1676d602b6495c0887c5bacf7fa5b776200112978bb7b +size 5732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/menubutton.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/menubutton.tcl new file mode 100644 index 0000000..23cf0da --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/menubutton.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54663fbf524cad9d74ab1ec44b7fdde0b87f06e5347191962c97f51f714e29bb +size 6443 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/notebook.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/notebook.tcl new file mode 100644 index 0000000..5b2d700 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/notebook.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22264d8d138e2c0e9a950305b4f08557c5a73f054f8215c0d8ce03854042be76 +size 5825 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/panedwindow.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/panedwindow.tcl new file mode 100644 index 0000000..4d787ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/panedwindow.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20ee6ad9d701709724292a926af93c93784b254b48a656ecc140ef3a0fe10a11 +size 2274 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/progress.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/progress.tcl new file mode 100644 index 0000000..737ff0a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/progress.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:697cc0a75ae31fe9c2d85fb25dca0afa5d0df9c523a2dfad2e4a36893be75fba +size 1138 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scale.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scale.tcl new file mode 100644 index 0000000..d424047 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scale.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b909add0b87fa8ee08fd731041907212a8a0939d37d2ff9b2f600cd67dabd4bb +size 2787 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scrollbar.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scrollbar.tcl new file mode 100644 index 0000000..8212f98 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/scrollbar.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6eaa336b13815a7fc18bcd6b9adf722e794da2888d053c229044784c8c8e9de8 +size 3285 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/sizegrip.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/sizegrip.tcl new file mode 100644 index 0000000..7cb0b29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/sizegrip.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e92d77b5cdca2206376db2129e87e3d744b3d5e31fde6c0bbd44a494a6845ce1 +size 2503 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/spinbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/spinbox.tcl new file mode 100644 index 0000000..03a94db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/spinbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df286bb59f471aa1e19df39af0ef7aa84df9f04dc4a439a747dd8ba43c300150 +size 5003 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/treeview.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/treeview.tcl new file mode 100644 index 0000000..797ab2e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/treeview.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c88b60ffb0f72e095f6fc9786930add7f9ed049eabc713f889f9a7da516e188c +size 10180 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/ttk.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/ttk.tcl new file mode 100644 index 0000000..e0ee851 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/ttk.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c48343b1a47f472d1a6b9ee8d670ce7fb428db0db7244dc323ff4c7a8b4f64b +size 4993 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/utils.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/utils.tcl new file mode 100644 index 0000000..6689430 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/utils.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4aa041c050758b3331dc395381f7fbce81e387908fc7a3c6107c4e7140f56f2e +size 8624 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/vistaTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/vistaTheme.tcl new file mode 100644 index 0000000..3a15857 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/vistaTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec5f203c69df390e9b99944cf3526d6e77dc6f68e9b1a029f326a41afed1ef81 +size 9710 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/winTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/winTheme.tcl new file mode 100644 index 0000000..7113971 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/winTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae82bccce708ff9c303cbcb3d4cc3ff5577a60d5b23822ea79e3e07cce3cbbd1 +size 2865 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/xpTheme.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/xpTheme.tcl new file mode 100644 index 0000000..c03d61a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/ttk/xpTheme.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aedb21c6b2909a4bb4686837d2126e521a8cc2b38414a4540387b801ebd75466 +size 2103 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/unsupported.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/unsupported.tcl new file mode 100644 index 0000000..ebf85ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/unsupported.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b463b366f139ddf7fed31f34c6d2341f9f27845a1a358011dfc801e1333b1828 +size 10521 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/xmfbox.tcl b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/xmfbox.tcl new file mode 100644 index 0000000..83ba229 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk8.6/xmfbox.tcl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4722eadede763fa52e7937d40067b0f8eb86b7a4b707f90212ed3e5289690d0 +size 26991 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk86t.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk86t.lib new file mode 100644 index 0000000..e30d630 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tk86t.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c100e832a76553201c40894263822bb85b98dba4de26b78c6077b117eb1ee3a +size 125062 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tkstub86.lib b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tkstub86.lib new file mode 100644 index 0000000..8974937 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/tcl/tkstub86.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dbe5a85ee5fc504a2abbb3ac77b9928f1370b8d678771b99c11621278111378 +size 7824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcamp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcamp140.dll new file mode 100644 index 0000000..ae6054f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcamp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb7bdd33bb74948c14c388ffcdfcda2cde63a357f1e9dcd01d5912b1008627c8 +size 408144 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vccorlib140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vccorlib140.dll new file mode 100644 index 0000000..f2de61b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vccorlib140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:086fab8accce357da499e6024e4290aa89dfc219867c90d90c62f8247591b95b +size 351824 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcomp140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcomp140.dll new file mode 100644 index 0000000..e1806cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcomp140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48b2cffa42a5064ba299eff1733753f4fa042d9d452c49c11d4fad27360f78ae +size 192104 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140.dll new file mode 100644 index 0000000..9226777 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d292623516f65c80482081e62d5dadb759dc16e851de5db24c3cbb57b87db83 +size 119192 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_1.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_1.dll new file mode 100644 index 0000000..9f03dfe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_1.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a113f192195f245f17389e6ecbed8005990bcb2476ddad33f7c4c6c86327afe5 +size 49528 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_threads.dll b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_threads.dll new file mode 100644 index 0000000..a984ebd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/python-3.12.4.amd64/vcruntime140_threads.dll @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f3540ebe0876c1b173821d2669987c088c3f6db985305d160460f476536a89 +size 38504 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/Noshell.vbs b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/Noshell.vbs new file mode 100644 index 0000000..c1306a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/Noshell.vbs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e668736079c6051cfcd8f6ef719155af41b9b25ee6a72c01398ecb104fd7e864 +size 491 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPythonIni.vbs b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPythonIni.vbs new file mode 100644 index 0000000..fd4fcc0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPythonIni.vbs @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac4fd686e107e956e3b99967a426914f4afad00d4b23590b8a3ec6ce8be465d3 +size 1732 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Interpreter_PS.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Interpreter_PS.bat new file mode 100644 index 0000000..dbb9bdf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Interpreter_PS.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b81efe962a995c20bc49e9c0b5418b22929e775aa598cac316ad150aee8cdd +size 205 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_PS_Prompt.ps1 b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_PS_Prompt.ps1 new file mode 100644 index 0000000..5dc4558 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_PS_Prompt.ps1 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7a3531df565ab56df6b243c158f7533ecf259d3f851972fb6a6441b7f0a7e9d +size 6378 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Terminal.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Terminal.bat new file mode 100644 index 0000000..82f865b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/WinPython_Terminal.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c52cdcbe619865b7b7a7ffd8b632969ee3697a0982df31fb3561da6f28047940 +size 340 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/activate.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/activate.bat new file mode 100644 index 0000000..83f686d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/activate.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:435c71fa8c3ebcb9ea71c06b36c1c8ab58cecffd123d1229cf1ccc1873d57ccd +size 36 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd.bat new file mode 100644 index 0000000..ef954e3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e5884427381e1aa5aa4ca761f76065d8c008ae99cfbe939a6fb90d312fe3bc9 +size 119 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd_ps.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd_ps.bat new file mode 100644 index 0000000..883b272 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/cmd_ps.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3c55964810b6bf8f8bec8ad5e76ced5c00d8bd50cc6063b12ffbfc7562f13cc +size 216 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env.bat new file mode 100644 index 0000000..55154c1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b63f701054fc22ddb1b6d1f48f97762b47d160cc606d985cec2578055a9d771 +size 4516 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env_for_icons.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env_for_icons.bat new file mode 100644 index 0000000..e97e0ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/env_for_icons.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db88263b3adfb51775d63cf8ce953847aca3f069a2f98183d43b0fe812bc2159 +size 1556 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_cython_use_vc.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_cython_use_vc.bat new file mode 100644 index 0000000..51497e1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_cython_use_vc.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08de2345f99c3df83181c48500d72c81f168092449eee235ed3757ca86bc2eb4 +size 134 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_fix.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_fix.bat new file mode 100644 index 0000000..80ef468 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_fix.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d71d2f09f4ace4a33b81d1dc64f523af3fc1e6c89981f3148ffdac35b3190b5b +size 249 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_movable.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_movable.bat new file mode 100644 index 0000000..6e8da32 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_winpython_movable.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00e5c60694a8ad6d6b05810b4611cafaa9d776bd3f6c4c09675952da9f4b8b7e +size 244 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_and_userprofile_be_winpython.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_and_userprofile_be_winpython.bat new file mode 100644 index 0000000..8620d2d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_and_userprofile_be_winpython.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:843c92ce155f8ce367854bbb73afc788746b5e4d4e2eae8b8b5c973846615701 +size 606 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_not_winpython.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_not_winpython.bat new file mode 100644 index 0000000..bb34c93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_not_winpython.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc0389e8293cef48d62c2b2da8d895668c07da8c94087a317f4ddf1836baadd +size 878 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_winpython.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_winpython.bat new file mode 100644 index 0000000..cda2285 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/make_working_directory_be_winpython.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e664929309fe4cb60c02d5653775631f358760665002592423f654d03259a26e +size 607 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/python.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/python.bat new file mode 100644 index 0000000..76c724f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/python.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8121135beec34767a98f851f1a0e98eaee246856854b591732fb2eb2d54d7f2c +size 197 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/readme.txt b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/readme.txt new file mode 100644 index 0000000..c588966 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/readme.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a516f8da48bf459e89c67d0f5928b3d80e9fd5d152c38972061cb83139397be9 +size 249 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python.bat new file mode 100644 index 0000000..40d51f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abfda62aba3207f91559b4d200a97b2c005d67a8b8078bd152bebac3cc5d5067 +size 155 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python_for_all.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python_for_all.bat new file mode 100644 index 0000000..9b826c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/register_python_for_all.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218c6816a729d6403d86e2a07cbb66b0ee64c40ed91df8e5d6d7f2b2136ebfdc +size 69 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/spyder_reset.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/spyder_reset.bat new file mode 100644 index 0000000..0816b99 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/spyder_reset.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec48659378332d6f64d8740631dfd90fe2be94f22a4d53db3b9a324653aa4c4 +size 224 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python.bat new file mode 100644 index 0000000..8fe2d29 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13d6c725fdc58a251ecdb5bd0d58cb25f4cc61d1a79dc779e08a8f183581c4ef +size 157 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python_for_all.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python_for_all.bat new file mode 100644 index 0000000..6ab61e0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/unregister_python_for_all.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6570fb87a12f67b6dfc1c77dcc3e096c76cf18bbd0201a19d8589abc91a1b7f +size 71 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/upgrade_pip.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/upgrade_pip.bat new file mode 100644 index 0000000..c1748e4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/upgrade_pip.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66f8ef734d53328ecb94daf2887a4bf67b587c7c81ce1958d4ddec1ffca9c10a +size 341 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winidle.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winidle.bat new file mode 100644 index 0000000..d7e4556 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winidle.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51da15fea440484ca26f770929b066c6539e2ea73dc401846aa024f1c3970ed9 +size 132 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winipython_notebook.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winipython_notebook.bat new file mode 100644 index 0000000..badbc58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winipython_notebook.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c50d1f89dc587b3d14a270dcd0510be6860742a785c80482fd62aac5ee4cd7a4 +size 115 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winjupyter_lab.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winjupyter_lab.bat new file mode 100644 index 0000000..9b9ea58 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winjupyter_lab.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc7027225c0d17a79792a02b4409afde2f2f42a765d3d29b94734dce11401bb +size 110 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winpython.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winpython.bat new file mode 100644 index 0000000..f906e73 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winpython.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9e1d736a384d5ba1ade888405e4deb55358725e5c198e0e6c290f2e21c399c9 +size 255 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winqtconsole.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winqtconsole.bat new file mode 100644 index 0000000..38b5c05 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winqtconsole.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a667654d5a17c1baf0161a1c6dccdd690cb84965cb67294bfef4dae3c1b6b96 +size 116 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winspyder.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winspyder.bat new file mode 100644 index 0000000..257dc6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winspyder.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dc67fca9bcd641b8530f55223f5e04d684cdcfb1c21d3ce2ed51ae6428e92d3 +size 253 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winvscode.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winvscode.bat new file mode 100644 index 0000000..2478596 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/winvscode.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb7327a6c9c66746acd6e2578a54b188a63ac5586969a14c236a87c6798852cd +size 358 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/scripts/wpcp.bat b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/wpcp.bat new file mode 100644 index 0000000..0cca3c9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/scripts/wpcp.bat @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d8c41df0e04b4784236c8a2dcd1cdf871f7f2c827e940061d1b3a295f0f06bd +size 227 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/settings/.pyzo/config.ssdf b/Plugins/SenseGlove/Handbook/dist/winpython/settings/.pyzo/config.ssdf new file mode 100644 index 0000000..64649dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/settings/.pyzo/config.ssdf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fd99c952b32b8ad5281045cd6a9c9bbfea4b68e7824e881852ad80527867256 +size 113 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/settings/.spyder-py3/workingdir b/Plugins/SenseGlove/Handbook/dist/winpython/settings/.spyder-py3/workingdir new file mode 100644 index 0000000..e9289b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/settings/.spyder-py3/workingdir @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:685ccaeafa014b507bc485f47f0883a6eac4e3fd26ab0ccf0c89f65d25eff61d +size 81 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/settings/pydistutils.cfg b/Plugins/SenseGlove/Handbook/dist/winpython/settings/pydistutils.cfg new file mode 100644 index 0000000..09a4fd8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/settings/pydistutils.cfg @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64ef6d94de1bf44305dd7595521040939c5e95e5971046bacb95ce432b0be0b6 +size 10 diff --git a/Plugins/SenseGlove/Handbook/dist/winpython/settings/winpython.ini b/Plugins/SenseGlove/Handbook/dist/winpython/settings/winpython.ini new file mode 100644 index 0000000..3f16ce3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/dist/winpython/settings/winpython.ini @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66005a4854dbd09b400940929785d23112e28a6b9f966b728304fc5ac5abc419 +size 342 diff --git a/Plugins/SenseGlove/Handbook/src/404.md b/Plugins/SenseGlove/Handbook/src/404.md new file mode 100644 index 0000000..6177861 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/404.md @@ -0,0 +1,8 @@ +# Oops! Document not found (404) + +It seems the page you're looking for doesn't exist. Here are a few options to help you get back on track: + +- Check the URL: Make sure the web address is correct. +- Return to the [home page]({{cname}}): Start from the beginning. +- Search the book: Use the search function to find what you need. +- If you believe this is an error, please contact support. diff --git a/Plugins/SenseGlove/Handbook/src/README.md b/Plugins/SenseGlove/Handbook/src/README.md new file mode 100644 index 0000000..3fc4dda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/README.md @@ -0,0 +1,10 @@ +# Introduction + +Welcome to the documentation for the SenseGlove Unreal Engine Plugin (a.k.a. The SenseGlove Unreal Handbook)! + +This handbook is an ongoing effort and a work in progress to document the SenseGlove Unreal Engine Plugin. Feel free to visit this handbook on a regular basis. + +Due to superior formatting and frequent updates, we recommend [the online version of the handbook]({{ #sg-handbook-revision-url }}); nonetheless, it's available in [PDF format]({{ #sg-handbook-pdf-url }}) as well. + +> [!TIP] +> Feel free to check out [the SenseGlove Unreal Engine Plugin landing page on the UE Marketplace](https://www.unrealengine.com/marketplace/en-US/product/the-senseglove-unreal-engine-plugin) as well. diff --git a/Plugins/SenseGlove/Handbook/src/SUMMARY.md b/Plugins/SenseGlove/Handbook/src/SUMMARY.md new file mode 100644 index 0000000..cca2460 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/SUMMARY.md @@ -0,0 +1,94 @@ +Welcom to the SenseGlove Unreal Engine Handbook! + +# 👋 Welcome + +- [Introduction](README.md) + +# 📖 Overview + +- [Overview](overview/README.md) + +# 🚀 Getting Started + +- [Installation](getting-started/installation/README.md) + - [Through the Epic Games Launcher](getting-started/installation/epic-games-launcher.md) + - [Through Microsoft Azure DevOps Repositories](getting-started/installation/microsoft-azure-devops-repositories.md) +- [Enabling and Verifying the Plugin Version](getting-started/plugin-verify-version-enable/README.md) +- [SenseCom](getting-started/sensecom/README.md) + - [SenseCom on GNU/Linux](getting-started/sensecom/gnu-linux/README.md) + - [Connect to Nova gloves using Blueman Bluetooth Manager](getting-started/sensecom/gnu-linux/blueman-bluetooth-manager.md) + - [Connect to Nova gloves using Command-line](getting-started/sensecom/gnu-linux/command-line.md) + - [SenseCom on Microsoft Windows](getting-started/sensecom/microsoft-windows.md) +- [Enabling XR_EXT_hand_tracking on VR Headsets](getting-started/enabling-xr-ext-hand-tracking-vr-headsets/README.md) +- [Setup SenseGlove Default Classes](getting-started/setup-senseglove-default-classes/README.md) + - [SGGameModeBase](getting-started/setup-senseglove-default-classes/sggamemodebase.md) + - [SGPawn](getting-started/setup-senseglove-default-classes/sgpawn.md) + - [SGPlayerController](getting-started/setup-senseglove-default-classes/sgplayercontroller.md) + - [SGGameInstance](getting-started/setup-senseglove-default-classes/sggameinstance.md) + - [SGGameUserSettings](getting-started/setup-senseglove-default-classes/sggameusersettings.md) +- [Setup the Virtual Hand Meshes](getting-started/setup-virtual-hand-meshes/README.md) +- [Setup the Wrist Tracking Hardware](getting-started/setup-wrist-tracking-hardware/README.md) +- [Setup the Grab/Release System](getting-started/setup-grab-release-system/README.md) +- [Setup the Touch System](getting-started/setup-touch-system/README.md) + +# ⚙️ Plugin Configuration + +- [Plugin Settings](plugin-configuration/plugin-settings/README.md) + - [Initialization](plugin-configuration/plugin-settings/initialization/README.md) + - [Game User Settings](plugin-configuration/plugin-settings/game-user-settings/README.md) + - [Hardware-benchmarking](plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md) + - [Tracking](plugin-configuration/plugin-settings/tracking/README.md) + - [Glove-tracking](plugin-configuration/plugin-settings/tracking/glove-tracking.md) + - [Hand-tracking](plugin-configuration/plugin-settings/tracking/hand-tracking.md) + - [HMD-tracking](plugin-configuration/plugin-settings/tracking/hmd-tracking.md) + - [Wrist-tracking](plugin-configuration/plugin-settings/tracking/wrist-tracking/README.md) + - [Debugging](plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md) + - [Virtual Hand](plugin-configuration/plugin-settings/virtual-hand/README.md) + - [Animation](plugin-configuration/plugin-settings/virtual-hand/animation.md) + - [Debugging](plugin-configuration/plugin-settings/virtual-hand/debugging.md) + - [Grab](plugin-configuration/plugin-settings/virtual-hand/grab.md) + - [Haptics](plugin-configuration/plugin-settings/virtual-hand/haptics.md) + - [Mesh](plugin-configuration/plugin-settings/virtual-hand/mesh.md) + - [Touch](plugin-configuration/plugin-settings/virtual-hand/touch.md) +- [Overriding Settings](plugin-configuration/overriding-settings/README.md) + +# 💡 Miscellaneous + +- [SenseGlove Console Commands](misc/console-commands/README.md) +- [Deploying to Android (Standalone)](misc/android-standalone-deployment/README.md) +- [Upgrade Guide](misc/upgrade-guide/README.md) +- [Optimizing for Higher FPS](misc/optimize-higher-fps/README.md) + +# 🛠️ Advanced Topics + +- [Safe Glove Access in Blueprint](advanced-topics/safe-glove-access-blueprint/README.md) +- [OpenXR](advanced-topics/openxr/README.md) + - [Consuming FXRMotionControllerData](advanced-topics/openxr/consuming-fxrmotioncontrollerdata/README.md) + - [Blueprints](advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md) + - [C++](advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp.md) + +# 🔌 Low-Level API + +- [Low-Level Blueprint API](low-level-api/blueprint.md) +- [Low-Level C++ API](low-level-api/cpp.md) + +# 📑 Appendix + +- [Platform Support Matrix](appendix/platform-support-matrix.md) +- [Planned Features Completion Status](appendix/planned-features-completion-status.md) +- [Changelog](appendix/changelog.md) +- [Directory Structure](appendix/directory-structure.md) +- [Extra Resources](appendix/extra-resources.md) + +# 📜 License + +- [SenseGlove Unreal Engine Plugin License](license/senseglove-unreal-engine-plugin.md) +- [SenseGlove Unreal Engine Handbook License](license/senseglove-unreal-engine-handbook.md) +- [Third-Party Licenses](license/third-party.md) + - [SenseGlove SDK License](license/senseglove-sdk.md) + - [Boost C++ Libraries](license/boost-cpp-libraries.md) + - [Serial Communication Library License](license/serial-communication-library.md) + +----------- + +- [ℹ️](misc/build-information.md) diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/README.md b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/README.md new file mode 100644 index 0000000..c8b2252 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/README.md @@ -0,0 +1,9 @@ +# OpenXR + +The SenseGlove Unreal Engine Plugin has provided OpenXR-compatible hand tracking by implementing `XR_EXT_hand_tracking` since `v2.1.0`. + +Typically a user does not need to know anything about OpenXR to use the plugin, so this section of the handbook is for advanced users who are looking for a way to directly consume the OpenXR data coming directly from either a SenseGlove device or if enabled in the plugin settings from hand-tracking. + +Since the SenseGlove Unreal Engine Plugin registers itself as an `OpenXRHandTracking` motion controller device it becomes a hand-tracking provider for Unreal Engine, thus the OpenXR data from SenseGlove could always be retrieved from the Unreal Engine's `IXTrackingSystem` with one caveat. The caveat is if another OpenXR-compatible hand-tracking plugin, e.g. Epic's own OpenXRHandTracking, is enabled simultaneously it's not guaranteed that the `FXRMotionControllerData` retrieved from the `IXTrackingSystem::GetMotionControllerData()` method is coming from SenseGlove, as this method returns the first hand-tracking plugin it could find. Thus, SenseGlove provides its own implementation of `GetMotionControllerData()` which guarantees the retrieved `FXRMotionControllerData` is coming from the SenseGlove Unreal Engine Plugin; and this is the preferred way to that. + +In the next sections we'll see [how we can directly consume the `FXRMotionControllerData`](consuming-fxrmotioncontrollerdata/) to draw and animate debug virtual hands in both [Blueprint](consuming-fxrmotioncontrollerdata/blueprint.md) and [C++](consuming-fxrmotioncontrollerdata/cpp.md). diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/README.md b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/README.md new file mode 100644 index 0000000..5af42d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/README.md @@ -0,0 +1,243 @@ +# Consuming FXRMotionControllerData + +Taking a closer look at the `FXRMotionControllerData` declaration inside the Unreal Engine's `HeadMountedDisplay` module at `[Engine/Source/Runtime/HeadMountedDisplay/Public/HeadMountedDisplayTypes.h](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Runtime/HeadMountedDisplay/Public/HeadMountedDisplayTypes.h)`, figuring out the data structure might not seem very straightforward: + +```cpp +USTRUCT(BlueprintType) +struct FXRMotionControllerData +{ + GENERATED_USTRUCT_BODY(); + + UPROPERTY(BlueprintReadOnly, Category = "XR") + bool bValid = false; + UPROPERTY(BlueprintReadOnly, Category = "XR") + FName DeviceName; + UPROPERTY(BlueprintReadOnly, Category = "XR") + FGuid ApplicationInstanceID; + UPROPERTY(BlueprintReadOnly, Category = "XR") + EXRVisualType DeviceVisualType = EXRVisualType::Controller; + + UPROPERTY(BlueprintReadOnly, Category = "XR") + EControllerHand HandIndex = EControllerHand::Left; + + UPROPERTY(BlueprintReadOnly, Category = "XR") + ETrackingStatus TrackingStatus = ETrackingStatus::NotTracked; + + // Vector representing an object being held in the player's hand + UPROPERTY(BlueprintReadOnly, Category = "XR") + FVector GripPosition = FVector(0.0f); + // Quaternion representing an object being held in the player's hand + UPROPERTY(BlueprintReadOnly, Category = "XR") + FQuat GripRotation = FQuat(EForceInit::ForceInitToZero); + + // For handheld controllers, gives a vector for pointing at objects + UPROPERTY(BlueprintReadOnly, Category = "XR") + FVector AimPosition = FVector(0.0f); + // For handheld controllers, gives a quaternion for pointing at objects + UPROPERTY(BlueprintReadOnly, Category = "XR") + FQuat AimRotation = FQuat(EForceInit::ForceInitToZero); + + // For handheld controllers, gives a vector for representing the hand + UPROPERTY(BlueprintReadOnly, Category = "XR") + FVector PalmPosition = FVector(0.0f); + // For handheld controllers, gives a quaternion for representing the hand + UPROPERTY(BlueprintReadOnly, Category = "XR") + FQuat PalmRotation = FQuat(EForceInit::ForceInitToZero); + + // The indices of this array are the values of EHandKeypoint (Palm, Wrist, ThumbMetacarpal, etc). + UPROPERTY(BlueprintReadOnly, Category = "XR") + TArray HandKeyPositions; + // The indices of this array are the values of EHandKeypoint (Palm, Wrist, ThumbMetacarpal, etc). + UPROPERTY(BlueprintReadOnly, Category = "XR") + TArray HandKeyRotations; + // The indices of this array are the values of EHandKeypoint (Palm, Wrist, ThumbMetacarpal, etc). + UPROPERTY(BlueprintReadOnly, Category = "XR") + TArray HandKeyRadii; + + UPROPERTY(BlueprintReadOnly, Category = "XR") + bool bIsGrasped = false; +}; +``` + +Which on the Blueprint side it looks like this: + +![FXRMotionControllerData Blueprint representation](consuming-fxrmotioncontrollerdata-blueprint-representation.png "FXRMotionControllerData Blueprint representation") + +But, fear not, we've got you covered! + +## FXRMotionControllerData in Unreal Engine + +`FXRMotionControllerData` is a structure in Unreal Engine designed to hold detailed information about the state of a motion controller device at a given moment. This structure is essential for handling motion controller inputs in virtual reality (VR) applications, providing the necessary data to accurately track and represent the user's hand movements and actions within the virtual environment. + +### Structure Members of FXRMotionControllerData + +1. **bValid** + - **Description**: A boolean flag indicating whether the data is valid or not. + - **Usage**: This is used to check if the motion controller data is correctly initialized and can be used for further processing. + +2. **DeviceName** + - **Type**: `FName` + - **Description**: The name of the device. + - **Usage**: Identifies which motion controller device the data is coming from, useful when multiple devices are in use. + +3. **ApplicationInstanceID** + - **Type**: `FString` + - **Description**: A unique identifier for the application instance. + - **Usage**: Helps in differentiating data from different instances of an application, ensuring the correct instance processes the data. + +4. **TrackingStatus** + - **Type**: `EXRTrackingStatus` + - **Description**: Enum indicating the tracking status of the motion controller. + - **Usage**: Shows whether the controller is being tracked accurately, with possible statuses like `Tracked`, `NotTracked`, etc. + +5. **GripPosition** + - **Type**: `FVector` + - **Description**: The position of the grip in world coordinates. + - **Usage**: Provides the 3D coordinates of the controller's grip, essential for positioning the virtual representation of the controller. + +6. **GripRotation** + - **Type**: `FQuat` + - **Description**: The rotation of the grip in world coordinates. + - **Usage**: Provides the orientation of the controller's grip, allowing for accurate rotation and alignment in the virtual space. + +7. **AimPosition** + - **Type**: `FVector` + - **Description**: The position of the aim point in world coordinates. + - **Usage**: Specifies where the controller is aiming, useful for aiming or pointing actions. + +8. **AimRotation** + - **Type**: `FQuat` + - **Description**: The rotation of the aim point in world coordinates. + - **Usage**: Determines the orientation of the aim direction, important for actions like shooting or selecting objects in VR. + +9. **HandKeyPositions** + - **Type**: `TArray` + - **Description**: An array of vectors representing key positions of the hand. + - **Usage**: Provides detailed positions of key points on the hand, useful for precise hand tracking and interaction. + +10. **HandKeyRotations** + - **Type**: `TArray` + - **Description**: An array of quaternions representing key rotations of the hand. + - **Usage**: Complements the hand key positions with rotational data, ensuring accurate representation of hand movements. + +11. **HandKeyRadii** + - **Type**: `TArray` + - **Description**: An array of floats representing the radii of key points of the hand. + - **Usage**: Gives the size of the hand key points, aiding in collision detection and interaction fidelity. + +12. **bIsGrasped** + - **Type**: `bool` + - **Description**: A boolean indicating whether the controller is currently grasping an object. + - **Usage**: Determines if the user is holding something, affecting interactions and animations. + +### Organization of FXRMotionControllerData + +The structure is organized to encapsulate all relevant data needed for motion controller tracking in a coherent and accessible manner. Boolean flags `bValid` and `bIsGrasped` provide quick checks on the state of the controller data. Identifiers `DeviceName` and `ApplicationInstanceID` ensure the correct association of data. Positional and rotational data `GripPosition`, `GripRotation`, `AimPosition`, and `AimRotation` offer precise tracking of the controller's movement. Arrays `HandKeyPositions`, `HandKeyRotations`, and `HandKeyRadii` allow detailed hand tracking, which is critical for immersive VR experiences. Lastly, the tracking status `TrackingStatus` informs the system of the reliability of the data being processed and whether the motion controller is actively being tracked or it's inactive at the moment. + +### Processing the Data for Drawing and Animating a Virtual Hand + +In order to draw and animate a virtual hand in real-time whether the data is coming from hand-tracking or a SenseGlove device, we could consume the data from the `HandKeyPositions` and `HandKeyRotations` fields of the `FXRMotionControllerData` struct. + +Both `HandKeyPositions` and `HandKeyRotations` contain 26 elements as defined by OpenXR's [`XR_HAND_JOINT_COUNT_EXT`](https://registry.khronos.org/OpenXR/specs/1.1/man/html/XR_HAND_JOINT_COUNT_EXT.html) and [`XrHandJointLocationsEXT`](https://registry.khronos.org/OpenXR/specs/1.0/man/html/XrHandJointLocationsEXT.html), etc. + +Unreal Engine also provides an enum called `EHandKeypoint` naming the 26 joints, and the equivalent of `XR_HAND_JOINT_COUNT_EXT` as `EHandKeypointCount` inside `[Engine/Source/Runtime/HeadMountedDisplay/Public/HeadMountedDisplayTypes.h](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Runtime/HeadMountedDisplay/Public/HeadMountedDisplayTypes.h)` as follows: + +```cpp +/** + * Transforms that are tracked on the hand. + * Matches the enums from WMR to make it a direct mapping + */ +UENUM(BlueprintType) +enum class EHandKeypoint : uint8 +{ + Palm, + Wrist, + ThumbMetacarpal, + ThumbProximal, + ThumbDistal, + ThumbTip, + IndexMetacarpal, + IndexProximal, + IndexIntermediate, + IndexDistal, + IndexTip, + MiddleMetacarpal, + MiddleProximal, + MiddleIntermediate, + MiddleDistal, + MiddleTip, + RingMetacarpal, + RingProximal, + RingIntermediate, + RingDistal, + RingTip, + LittleMetacarpal, + LittleProximal, + LittleIntermediate, + LittleDistal, + LittleTip +}; + +const int32 EHandKeypointCount = static_cast(EHandKeypoint::LittleTip) + 1; + +``` + +So, getting the any joint's position or rotation is as easy as casting the enum value and passing it as the array index. + +```cpp + FXRMotionControllerData MotionControllerData; + const bool bGotMotionControllerData = FSGXRTracker::GetMotionControllerData( + GetWorld(), EControllerHand::Left, MotionControllerData); + + // Return if the struct data is invalid! + if (!bGotMotionControllerData || !MotionControllerData.bValid) + { + return; + } + + // Return if the device is not being tracked! + if (MotionControllerData.TrackingStatus == ETrackingStatus::NotTracked) + { + return; + } + + // Ensure that MotionControllerData.DeviceVisualType is a hand! + if (!ensureAlwaysMsgf(MotionControllerData.DeviceVisualType + == EXRVisualType::Hand, + TEXT("Invalid DeviceVisualType type!"))) + { + } + + // Ensure that MotionControllerData.HandKeyPositions has the position data + // for 26 joints! + if (!ensureAlwaysMsgf(MotionControllerData.HandKeyPositions.Num() + == EHandKeypointCount, + TEXT("Invalid HandKeyPositions count!"))) + { + return; + } + + // Ensure that MotionControllerData.HandKeyPositions has the rotation data + // for 26 joints! + if (!ensureAlwaysMsgf(MotionControllerData.HandKeyRotations.Num() + == EHandKeypointCount, + TEXT("Invalid HandKeyRotations count!"))) + { + return; + } + + static constexpr int32 PalmIndex = static_cast(EHandKeypoint::Palm); + + const FVector& PalmPosition{ + MotionControllerData.HandKeyPositions[PalmIndex] + }; + const FRotator& PalmRotation{ + MotionControllerData.HandKeyRotations[PalmIndex].Rotator() + }; +``` + +The equivalent Blueprint code for the above looks something like this: + +![Get a joint position and rotation from FXRMotionControllerData in Blueprint](consuming-fxrmotioncontrollerdata-blueprint-get-joint-position-rotation.png "Get a joint position and rotation from FXRMotionControllerData in Blueprint") + +OK, now that we've got a glimpse of how the virtual hand's joint data could be processed we are going to draw and animate a virtual hand in both [Blueprint](blueprint.md) and [C++](cpp.md) in the upcoming sections. diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md new file mode 100644 index 0000000..7ef8acf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md @@ -0,0 +1,51 @@ +# Consuming FXRMotionControllerData in Blueprint + +Before continuing this section, please ensure you've studied the [Consuming FXRMotionControllerData](./) section, first. + +## Drawing and Animating Virtual Hands + +1. Create a new Virtual Reality project based [the Unreal VR Template](https://dev.epicgames.com/documentation/en-us/unreal-engine/vr-template-in-unreal-engine). + +2. Make sure the [SenseGlove UnrealEngine plugin is installed and enabled](/getting-started/installation.md) inside your new project. + +![Enabling the SenseGlove Unreal Engine Plugin](enabling-senseglove-unrealp-engine-plugin.png "Enabling the SenseGlove Unreal Engine Plugin") + +3. You could use either hand-tracking or a SenseGlove device as the input data, or both of the inside the same project. Whether you would like to use hand-tracking or a SenseGlove device, please make sure the required steps are taken for each of those first. + +4. You could add the required Blueprint code for drawing virtual hands to either your Level Buleprint or the VRPawn Blueprint Class located at `/Content/VRTemplate/Blueprints/VRPawn`. In this guide we are going to add the code to our VRPawn. + +5. Add a new function named `Draw Hand` with an input parameter of type `EController Hand` named `Hand`. + +![Adding the Blueprint Draw Hand function](consuming-fxrmotioncontrollerdata-blueprint-add-draw-hand-function.png "Adding the Blueprint Draw Hand function") + +6. Inside this function's event graph add a `Get Motion Controller Data` node from `SenseGlove > Tracking > XR Tracker > Get Motion Controller Data`. + +![Adding the Get Motion Controller Data node](consuming-fxrmotioncontrollerdata-blueprint-add-get-motion-controller-data-node.png "Adding the Get Motion Controller Data node") + +7. Then connect the functions `Hand` input parameter to the `Get Motion Controller Data`'s `Hand` input and right-click on the `OutMotionControllerData` parameter and use the `Break XRMotionControllerData` node to break the struct to it's fields. + +![Breaking the XR Motion Controller Data node](consuming-fxrmotioncontrollerdata-blueprint-break-xr-motion-controller-data.png "Breaking the XR Motion Controller Data node") + +8. After this, we need to perform data validation by checking the return status of the `Get Motion Controller Data` function and `FXRMotionControllerData`'s `Valid` field. Then, we check if the motion controller device is being tracked and indeed coming from a hand-tracking source. And, finally, we check whether we have the positions and rotations for exactly `26` joints or not. + +![FXRMotionControllerData validation](consuming-fxrmotioncontrollerdata-blueprint-validation.png "FXRMotionControllerData validation") + +9. OK, now it's time to draw the joints! If we check out the SenseGlove Debug module's draw option, we notice there are various ways to draw the debug virtual hand. Drawing a cube or a gizmo per joint, or draw the whole hand all at once by passing the retrieved `FXRMotionControllerData` to the `DebugVirtualHand::Draw` function! But, since the point of this tutorial is to learn how to consume the `FXRMotionControllerData` we ignore the last option. Between the debug cubes or gizmos, we are going to choose the gizmos since they better represent the rotations than the cubes. + +![Some options for drawing a debug virtual hand](consuming-fxrmotioncontrollerdata-blueprint-debug-virtual-hand-draw-options.png "Some options for drawing a debug virtual hand") + +10. In the last step inside the `Draw Hand` function, in order to draw a virtual hand with `26` joints, we have to first iterate through either of the `Hand Key Positions` or `Hand Key Rotations` arrays from the `FXRMotionControllerData` struct. Since we made sure both arrays have `26` elements before we reached this step, it's safe to just iterate over one and use the `Array Index` inside a `For Each Loop` or a `For Loop` to access the position and rotation of every joint. Then we use each array `Get (a ref)` method to access the position and rotation data inside the loop and call the `Draw` function from `SenseGlove > Debug > Gizmo` per every joint. Please note that there are two `Draw` functions and the only difference between the two is that one accepts an `FQuat` and the other a `FRotator` for its `Rotation` input parameter. In this case, we use the `FQuat` variant to avoid an extra conversion to `FRotator`. Also, please adjust the `Thickness` option for the `Settings` parameter from `1.0` to `0.2`, as the default value might be too thick for drawing a joint gizmo. + +![Drawing a debug gizmo per each hand's joint](consuming-fxrmotioncontrollerdata-blueprint-draw-debug-gizmo-per-joint.png "Drawing a debug gizmo per each hand's joint") + +11. Well, now the full implementation for the `Draw Hand` function insde the `VRPawn` should look something like this: + +![VRPawn Draw Hand function final implementation](consuming-fxrmotioncontrollerdata-blueprint-draw-hand-function-implementation.png "VRPawn Draw Hand function final implementation") + +12. Finally, go back to `VRPawn`'s event graph and the following code to the `Tick` event. Basically what we do here is call our newly implemented `Draw Hand` twice, once for each hand. + +![Attempt to draw the left and right virtual hands every frame from the VR Pawn Tick event](consuming-fxrmotioncontrollerdata-blueprint-vrpawn-draw-virtual-hands-every-frame.png "Attempt to draw the left and right virtual hands every frame from the VR Pawn Tick event") + +13. Now, go back to the `VRTemplateMap` and use the VR Preview button to run the game. If everything's done correctly, you should be able to see the virtual hands inside your VR simulation. + +![FXRMotionControllerData animated debug virtual hands](consuming-fxrmotioncontrollerdata-animated-debug-virtual-hands.gif "FXRMotionControllerData animated debug virtual hands") \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-animated-debug-virtual-hands.gif b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-animated-debug-virtual-hands.gif new file mode 100644 index 0000000..be67d68 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-animated-debug-virtual-hands.gif @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c0f1fbdf9521bbdead363c9ba98987dd0a63a56f3f547b4f8863172fcbb8e19 +size 13726558 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-draw-hand-function.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-draw-hand-function.png new file mode 100644 index 0000000..3c886ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-draw-hand-function.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3d8703b8bc80da4320bece6800694e3e23184415b205590ae598eec2af65d22 +size 331543 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-get-motion-controller-data-node.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-get-motion-controller-data-node.png new file mode 100644 index 0000000..c4b22fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-add-get-motion-controller-data-node.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:141c1530a7d685777ac4c199f9939f6a4077cef7f69c198779bea38c75eae54c +size 121048 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-break-xr-motion-controller-data.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-break-xr-motion-controller-data.png new file mode 100644 index 0000000..28af692 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-break-xr-motion-controller-data.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:712930fb7858e31a4d35707de545f359b05432f4d9c3b5b27ac24f3353c6c0ac +size 113995 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-debug-virtual-hand-draw-options.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-debug-virtual-hand-draw-options.png new file mode 100644 index 0000000..bddb99b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-debug-virtual-hand-draw-options.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6be29be07f0c88334d51ab4ebe428e154bc82350e5a01209569a0e33e8e00dd +size 25411 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-debug-gizmo-per-joint.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-debug-gizmo-per-joint.png new file mode 100644 index 0000000..46b09c0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-debug-gizmo-per-joint.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cfc41b6232d056dd5d94b96f32c59fbd7c8194d783adb5319aeca0044b1e15e +size 363903 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-hand-function-implementation.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-hand-function-implementation.png new file mode 100644 index 0000000..5249e5a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-draw-hand-function-implementation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0c01f481179dedaad17724f074fa83f6fce010affd2533600231f602a97008d +size 521212 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-get-joint-position-rotation.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-get-joint-position-rotation.png new file mode 100644 index 0000000..6fc28d1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-get-joint-position-rotation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:741fd7256ab9f9fd45db535a58fb0248fb0621f23917fb2418333f9595bd8394 +size 372361 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-representation.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-representation.png new file mode 100644 index 0000000..1cad022 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-representation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f028afcb4e7b021700b9dae7c480ff71ec645a5e24512b4b223dd818c1c3d3d7 +size 54379 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-validation.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-validation.png new file mode 100644 index 0000000..2867b07 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-validation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebd49fd6327f7f1151ee32642ab27d9c7f731717917ac7163d2ee32567a029d5 +size 299424 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-vrpawn-draw-virtual-hands-every-frame.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-vrpawn-draw-virtual-hands-every-frame.png new file mode 100644 index 0000000..856f121 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-blueprint-vrpawn-draw-virtual-hands-every-frame.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5abcc48443d71288701c6a3137881e969f269e35e54f9ca3b2e9bcded090afbe +size 259642 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-name.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-name.png new file mode 100644 index 0000000..15cab89 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-name.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cde517c4eb6ba807f24b7f3b861c62b69501ac4ea94b9e6d1d112af860619ab +size 35036 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-parent.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-parent.png new file mode 100644 index 0000000..eb02fdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-add-class-choose-parent.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f0228ee4da1dee629e65f71fefcbe00ab5a52afa8685a3549fc9a4b0143534 +size 38449 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-new-class.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-new-class.png new file mode 100644 index 0000000..8c2e223 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-new-class.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f5c77bab4ac3926bc4292203a1c5684928eb7915e9278739e0f532b9e3b04a1 +size 145613 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent-debug-pawn.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent-debug-pawn.png new file mode 100644 index 0000000..d04f9b4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent-debug-pawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72e5a568596914ccda9e964387c4bda765707c1bace599f0f89b5aed9cf75df6 +size 8368 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent.png new file mode 100644 index 0000000..a394160 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-reparent.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd9b7c5dafd7ff61cb091851f007ae35745201146fe356b3451b704243a92f3 +size 46779 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-verify-parent-class.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-verify-parent-class.png new file mode 100644 index 0000000..d06d9fe --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/consuming-fxrmotioncontrollerdata-cpp-verify-parent-class.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16686ddeefb5375f4e3ed668ebdb61263bf3b98e8bec428b8edf915f75e467df +size 24869 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp.md b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp.md new file mode 100644 index 0000000..e283b31 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp.md @@ -0,0 +1,252 @@ +# Consuming FXRMotionControllerData in C++ + +Before continuing this section, please ensure you've first studied the [Consuming FXRMotionControllerData](./) section. + +## Drawing and Animating Virtual Hands + +1. Create a new Virtual Reality project based [the Unreal VR Template](https://dev.epicgames.com/documentation/en-us/unreal-engine/vr-template-in-unreal-engine). + +2. Make sure the [SenseGlove UnrealEngine plugin is installed and enabled](/getting-started/installation.md) inside your new project. + +![Enabling the SenseGlove Unreal Engine Plugin](enabling-senseglove-unrealp-engine-plugin.png "Enabling the SenseGlove Unreal Engine Plugin") + +3. You could use either hand-tracking or a SenseGlove device as the input data, or both of the inside the same project. Whether you would like to use hand-tracking or a SenseGlove device, please make sure the required steps are taken for each of those first. + +4. From the `Tools` menu choose `New C++ class...`. + +![Creating a new C++ class](consuming-fxrmotioncontrollerdata-cpp-new-class.png "Creating a new C++ class") + +5. Choose the Unreal Engine's `APawn` class as the parent class for the new C++ pawn class. + +![Choosing APawn as the parent class](consuming-fxrmotioncontrollerdata-cpp-add-class-choose-name.png "Choosing APawn as the parent class") + +6. Name the new pawn class `DebugPawn`. + +![Naming the new C++ class DebugPawn](consuming-fxrmotioncontrollerdata-cpp-add-class-choose-parent.png "Naming the new C++ class DebugPawn") + +7. Since we have created a new C++ class, this converts the current Blueprint VRTemplateMap project to a C++ one. That's why the Unreal Editor will give us a few prompts regarding opening the project in the default IDE and rebuilding the code. It might be simpler to just close the editor, then rebuild the source code inside your favorite IDE, and then start the editor with the converted project again. + +8. Find and open the VRPawn Blueprint Class located at `/Content/VRTemplate/Blueprints/VRPawn` inside the Blueprint Editor and from the `File` menu choose the `Reparent Blueprint` class. + +![Reparenting the VRPawn Blueprint class](consuming-fxrmotioncontrollerdata-cpp-reparent.png "Reparenting the VRPawn Blueprint class") + +9. In the new `Reparent blueprint` window choose `DebugPawn` as the new parent. + +![Reparenting the VRPawn Blueprint class to ADebugPawn](consuming-fxrmotioncontrollerdata-cpp-reparent-debug-pawn.png "Reparenting the VRPawn Blueprint class to ADebugPawn") + +10. By looking at the `Parent Class` label located under the Blueprint Editor window control buttons verify that the `ADebugPawn` class has been set as the new parent. + +![Veifying whether the VRPawn Blueprint class set to ADebugPawn or not](consuming-fxrmotioncontrollerdata-cpp-verify-parent-class.png "Veifying whether the VRPawn Blueprint class set to ADebugPawn or not") + +11. Locate the project's main Build file, in our case `VirtualHandCpp/Source/VirtualHandCpp/VirtualHandCpp.Build.cs` and add the `InputDevice`, `OpenXRHMD`, `SenseGloveBuildHacks`, `SenseGloveDebug`, `SenseGloveSettings`, and `SenseGloveTracking` modules as either a private or public dependency. + +```csharp +// Fill out your copyright notice in the Description page of Project Settings. + +using UnrealBuildTool; + +public class VirtualHandCpp : ModuleRules +{ + public VirtualHandCpp(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore" }); + + PrivateDependencyModuleNames.AddRange(new string[] + { + "InputDevice", + "OpenXRHMD", + "SenseGloveBuildHacks", + "SenseGloveDebug", + "SenseGloveSettings", + "SenseGloveTracking" + }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} +``` + +12. Locate the C++ header and source file for the `ADebugPawn` inside the project in your C++ IDE. In our case they are located at `VirtualHandCpp/Source/VirtualHandCpp/DebugPawn.h` and `VirtualHandCpp/Source/VirtualHandCpp/DebugPawn.cpp`. + +13. Modify the `DebugPawn.h` header file to look like this: + +```cpp +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Pawn.h" + +#include "SGSettings/SGDebugGizmoSettings.h" + +#include "DebugPawn.generated.h" + +UCLASS() +class VIRTUALHANDCPP_API ADebugPawn : public APawn +{ + GENERATED_BODY() + +private: + // The virtual hand drawing settings. + UPROPERTY(EditDefaultsOnly, Category="DebugPawn", + meta=(AllowPrivateAccess="false")) + FSGDebugGizmoSettings HandDrawingSettings; + +public: + // Sets default values for this pawn's properties + ADebugPawn(); + +protected: + // Called when the game starts or when spawned + virtual void BeginPlay() override; + +public: + // Called every frame + virtual void Tick(float DeltaTime) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + +private: + // The method responsible for drawing a virtual hand. + void DrawHand(EControllerHand Hand) const; +}; +``` + +14. Modify the `DebugPawn.cpp` implementation file to look like this: + + +```cpp +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "DebugPawn.h" + +#include "SGDebug/SGDebugGizmo.h" +#include "SGTracking/SGXRTracker.h" + +// Sets default values +ADebugPawn::ADebugPawn() +{ + // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = true; + + // Set the default virtual hand drawing settings. + HandDrawingSettings = FSGDebugGizmoSettings{ + 1.0f, + FColor{255, 0, 0, 255}, + FColor{0, 255, 0, 255}, + FColor{0, 0, 255, 255}, + false, + 1.1f, + 0, + 0.2f, + }; +} + +// Called when the game starts or when spawned +void ADebugPawn::BeginPlay() +{ + Super::BeginPlay(); +} + +// Called every frame +void ADebugPawn::Tick(float DeltaTime) +{ + Super::Tick(DeltaTime); + + // Attempt at drawing the left/right virtual hands every frame. + DrawHand(EControllerHand::Left); + DrawHand(EControllerHand::Right); +} + +// Called to bind functionality to input +void ADebugPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); +} + +void ADebugPawn::DrawHand(const EControllerHand Hand) const +{ + // Get the world and cache it, if it's null we return early. + UWorld* World{GetWorld()}; + if (!IsValid(World)) + { + return; + } + + FXRMotionControllerData MotionControllerData; + const bool bGotMotionControllerData = FSGXRTracker::GetMotionControllerData( + World, Hand, MotionControllerData); + + // Return if the struct data is invalid! + if (!bGotMotionControllerData || !MotionControllerData.bValid) + { + return; + } + + // Return if the device is not being tracked! + if (MotionControllerData.TrackingStatus == ETrackingStatus::NotTracked) + { + return; + } + + // Ensure that MotionControllerData.DeviceVisualType is a hand! + if (!ensureAlwaysMsgf(MotionControllerData.DeviceVisualType + == EXRVisualType::Hand, + TEXT("Invalid DeviceVisualType type!"))) + { + } + + // Ensure that MotionControllerData.HandKeyPositions has the position data + // for 26 joints! + if (!ensureAlwaysMsgf(MotionControllerData.HandKeyPositions.Num() + == EHandKeypointCount, + TEXT("Invalid HandKeyPositions count!"))) + { + return; + } + + // Ensure that MotionControllerData.HandKeyPositions has the rotation data + // for 26 joints! + if (!ensureAlwaysMsgf(MotionControllerData.HandKeyRotations.Num() + == EHandKeypointCount, + TEXT("Invalid HandKeyRotations count!"))) + { + return; + } + + // Iterate over the hand joint positions and rotations! + for (int32 JointIndex = 0; JointIndex < EHandKeypointCount; ++JointIndex) + { + const FVector& JointPosition{ + MotionControllerData.HandKeyPositions[JointIndex] + }; + const FQuat& JointRotation{ + MotionControllerData.HandKeyRotations[JointIndex] + }; + + // Draw a single joint's gizmo! + // Please note that we could alternatively: + // Use FSGDebugCube::Draw() to draw a cube. + // Or use the FSGDebugVirtualHand::Draw() method and pass the + // MotionControllerData directly to draw the virtual hand + // all at once without iterating the joints. But, that's not + // goal of this tutorial. + FSGDebugGizmo::Draw(World, JointPosition, JointRotation, HandDrawingSettings); + } +} +``` + +15. Now, rebuild the source code and go back to the `VRTemplateMap`, then use the VR Preview button to run the game. If everything's done correctly, you should be able to see the virtual hands inside your VR simulation. + +![FXRMotionControllerData animated debug virtual hands](consuming-fxrmotioncontrollerdata-animated-debug-virtual-hands.gif "FXRMotionControllerData animated debug virtual hands") \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/enabling-senseglove-unrealp-engine-plugin.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/enabling-senseglove-unrealp-engine-plugin.png new file mode 100644 index 0000000..8bc7134 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/openxr/consuming-fxrmotioncontrollerdata/enabling-senseglove-unrealp-engine-plugin.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc8ff35df13ef30212e5cd69c23556f429041bb141bce64cbce9366c27f8071 +size 48777 diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/README.md b/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/README.md new file mode 100644 index 0000000..7dafa4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/README.md @@ -0,0 +1,20 @@ +# Safe and Reliable Glove Access in Blueprint + +Since the Blueprint API uses the underlying C++ API to access the SenseGlove hardware, it often has to deal with C++ pointers. Those who are familiar with C++ and in particular with the Unreal Engine UObject Garbage Collection System are aware that: + +- As a general rule of thumb, a pointer should be validated before dereferenced, meaning before accessing the pointer a `NULL` check should be performed, otherwise if the pointer is `NULL` the program is going to crash upon access. +- Unreal implements a garbage collection scheme whereby UObjects that are no longer referenced or have been explicitly flagged for destruction will be cleaned up at regular intervals. The engine builds a reference graph to determine which UObjects are still in use and which ones are orphaned. The ones that are orphaned will be evaluated to `NULL` on the next GC cycle and their allocated memory will be released. Hence, `NULL` checks on UObjects are always mandatory. + +Glove objects inside the SenseGlove Unreal Engine Plugin, utilize the UObject system, and since communication for Nova gloves happens over SenseCom and the Bluetooth protocol, and also the gloves are running on battery, there's always the possibility for a glove variable to become `NULL` and therefore invalidated when the glove hardware for any reason is not accessible. + +The recommended way to work with a glove instance without any performance penalty, and in a safe manner in Blueprint is: + +1. Cache the glove instance inside a global variable if it passes certain tests so that you don't have to perform all those checks on every access. This usually could happen inside the `Tick` function. +2. The first check inside the `Tick` function is to check whether the cached glove instance is valid. If it's valid we continue to the next step, if not, we ask the API for a new glove instance. +3. If the glove instance is valid, then it's best to perform a connectivity check next. If the glove is connected we don't have to do anything else in regards to obtaining a new glove instance and caching it. If however the glove is not connected, we might ask the API for a new glove instance. +4. If any of the above steps fail, then we can actually ask the API for a new glove instance, and if the result is successful we're going to cache the new glove instance. +5. From here on, anywhere else inside your code, whenever you need to access the glove data or perform an operation like for example sending or stopping haptics you always perform a validity check and only proceed when the glove instance is valid. This way you will always ensure you are accessing the glove instances in a safe and reliable manner, thus avoiding any unexpected behaviors or crashes. + +The following Blueprint examples implement the above approach and also demonstrate good and bad glove instance accesses: + +![Safe and Reliable Glove Access in Blueprint](safe-reliable-glove-access-blueprint.png "Safe and Reliable Glove Access in Blueprint") diff --git a/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/safe-reliable-glove-access-blueprint.png b/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/safe-reliable-glove-access-blueprint.png new file mode 100644 index 0000000..aef2bd3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/advanced-topics/safe-glove-access-blueprint/safe-reliable-glove-access-blueprint.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0b1aaef09e7e00b2b1c5ebf2dc50f534b5e0b8dd251e01058c26c83871d992c +size 487595 diff --git a/Plugins/SenseGlove/Handbook/src/appendix/changelog.md b/Plugins/SenseGlove/Handbook/src/appendix/changelog.md new file mode 100644 index 0000000..faafe88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/appendix/changelog.md @@ -0,0 +1,678 @@ +# 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). + +## [2.1.0] - 2024-08-16 + +This is a minor release focusing mainly on bringing OpenXR-compatible hand tracking support (`XR_EXT_hand_tracking`) and Head-mounted Display automatic detection for adjusting wrist tracker offsets automatically at runtime. + +### Added + +- Added SenseGloveTracking and module which provides OpenXR-compatible hand tracking by implementing `XR_EXT_hand_tracking` support, HMD auto-detection, and SenseGlove device tracking. +- Added USenseGloveTrackingKismet module in order to expose part of the SenseGloveTracking functionality to Blueprint. +- Added FSGXRTracker, the underlying main class that implements the OpenXR compatibility. +- Added USGXRTrackerKismetLibrary in order to allow Blueprint to retrieve the FXRMotionControllerData directly from our tracking module. +- Added the SGTrackingTypes header to the SenseGloveTypes module in order to define and share SenseGloveTracking module types through this header across the plugin modules. +- A fallback to HMD and wrist tracker hardware auto-detection mechanism has been added to be triggered in situations when automatic detection of the wrist tracker hardware is desired, e.g., either by not setting it explicitly, or setting it to the default None value. Please note that this is still highly experimental and HTC VIVE Focus 3 and HTC XR Elite cannot be distinguished in the current iteration. Though, since the tracker devices and offsets for both headsets are the same in the end it does not make a difference if both headsets are detected as each other. +- Added ESGHeadMountedDisplayDevice enum with supported HMDs list. +- Added ESGViveHMDDetectionPriority enum in order to choose which headset we attempt to detect between VIVE Focus 3 and VIVE XR Elite as we cannot distinguish them, yet. +- Added the FSGHMDTracker utility class, in order to easily gather information about the HMD device at runtime. +- Added USGHMDTrackerKismetLibrary which exposes the equivalent C++ HMD auto-detection functionality to Blueprint. +- Added FSGHMDTrackingSettings config struct. +- Added the FSGGloveTracer utility class, in order to easily check the left or right glove connectivity or retrieve the connected glove instances. +- Added USGGloveTrackerKismetLibrary which exposes the equivalent C++ functionality to Blueprint. +- Added FSGGloveTrackingSettings config struct. +- Added FSGTrackingSettings config struct. +- Added FSGHandTrackingSettings config struct. +- Added FSGWristTrackingDebuggingSettings config struct. +- Added FSGVirtualHandSettings config struct. +- Added FSGVirtualHandAnimationSettings config struct. +- Added FSGVirtualHandDebuggingSettings config struct. +- Added FSGVirtualHandGrabSettings config struct. +- Added FSGVirtualHandHapticsSettings config struct. +- Added FSGVirtualHandMeshSettings config struct. +- Added FSGVirtualHandPhalangesLengthSettings config struct. +- Added FSGVirtualHandTouchSettings config struct. +- Added USGVirtualHandComponent::OnHandVisibilityChanged() event in order to notify other components/actors whenever the virtual hand mesh appears or disappears (for example, this could happen when a glove is connected/disconnected). +- GetMotionControllerData() has been introduced to the USGVitualHandComponent in order to retrieve the OpenXR-compatible glove data in Unreal's FXRMotionControllerData format. +- Added FSGVirtualHandAnimInstanceProxy::GetMotionControllerData and many more accessor methods usable only by child classes to allow consumption of the data required for manipulating the virtual hand mesh animations. +- GetMotionControllerData() has been introduced to the USGWristTrackerComponent in order to retrieve the OpenXR-compatible glove data in Unreal's FXRMotionControllerData format. +- Added USGGrabComponent::SimulatePhysics() method. +- Added FSGDebugCube. +- Added FSGDebugCubeSettings. +- Added the SenseGloveDebugKismet module in order to allow drawing of debugging, cubes, gizmos, and virtual hands from Blueprint. +- Added USGDebugCubeKismetLibrary in order to expose the FSGDebugCube functionalities to Blueprint. +- Added USGDebugGizmoKismetLibrary in order to expose the FSGDebugGizmo functionalities to Blueprint. +- Added USGDebugVirtualHandKismetLibrary in order to expose the FSGDebugVirtualHand functionalities to Blueprint. +- Added a new static Draw() method overload to DebugGizmo which allows passing an FQuat instead of a FRotator. +- Introduced a new FXRMotionControllerData compatible hand animation system with the ability to take the mesh bone's transforms into account for a more reliable hand animation. +- Introduced a new FXRMotionControllerData compatible wrist tracking system. +- Introduced a new FXRMotionControllerData compatible hand interaction manipulation system. +- Added the ability to fallback to hand tracking when a glove is not present and use the bare hands for interactions, or a combination of glove and hand tracking if no motion controller input is detected. +- Added 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 by extending the Unreal Editor. +- Added FSGAssetUtils editor-only class. +- Added FSGContentBrowserExtension editor-only class. +- Added FSGPluginStyle editor-only class. +- Added FSGSocketsEditor editor-only class. +- Added FSGSocketsEditorCommands editor-only class. +- Added the FSGInitializationSettings config struct in order to control how the plugin is initialized. +- Introduced the FSGGameUserSettings for managing the Engine Scalability Settings through the SenseGlove plugin in order to change the graphics settings on the fly. +- Added USGGameUserSettingsKismetLibrary in order to allow all the Engine Scalability Settings to be managed from the Blueprint side. +- Added FSGGameUserSettingsSettings config struct. +- Added the SenseGlove console commands: SG_GetEngineScalabilitySettings() and SG_SetEngineScalabilitySettings(Scalability). +- Added SGHardwareBenchmarkingSettings config struct. +- Introduced ESGEngineScalabilitySettings enum. +- Added FSGVirtualHandSettingsOverrides config struct used by the new settings override system. +- Added SGWristTrackingSettingsOverrides config structured by the new settings override system. +- Added support for Android API level 32 in addition to the API level 29. +- Introduced the SenseGlove Unreal Engine Handbook as an attempt at documenting the SenseGlove Unreal Engine Plugin. +- Merged the `pack` utility branch to the plugin's source code at `/Packager` which adds the SenseGlove Unreal Engine Marketplace Packager v0.4.0-a65bb20 binaries and configurations. + +### Fixed + +- Fixed a bug when the virtual hand inside the game is not visible but still collides with other objects inside the scene, mistakenly triggering events like OnGrabStateUpdated and OnTouchStateUpdated. +- Fixed a bug where USGGrabComponent's `bAffectPhysicsState` does not enables physics on its owning actor at `BeginPlay()`. +- Fixed various wrong Kismet script names and their class exports. +- Fixed the display name for various overloads of the Blueprint-exposed function `Queue Command Vibro Level` to expose sensible display names. +- Some Android UPL tweaks, permission, and build fixes. +- Many other large and small fixes and improvements that might not be listed here. +- A few small bugfixes that have already been backported to the v2.0.x series. + +### Changed + +- Now, if bValidateIfDefaultClassesAreSGCompliant option from FSGInitializationSettings is enabled (default) the SenseGlove plugin checks for default SenseGlove-compliant GameMode, GameInstance, etc, at module initialization and tries to set to default, native SenseGlove classes, if any of those default classes are not a SenseGlove or a SenseGlove-derived class. +- The USGSettings has been fully revamped with more customizations added and categorized in a different manner adding many new structs and removing some, in order to have fine-grained control over the various aspects and functionality of the plugin components. +- The USGSettings constructor visibility has been changed from public to private. +- The Settings override system has been overhauled as well affecting how we override settings from the USGVirtualHandComponent and USGWristTrackerComponent. +- The SenseGlove libraries have been updated to v2.104.1-55fddbd2. +- GetHandPose() has been replaced by GetMotionControllerData inside USGVirtualHandComponent (see the relevant entry in the Added and Removed sections). +- Many functions inside USGVirtualHandComponent for retrieving bone names or reference transforms has been renamed to return different data types; e.g. GetLeftHandFingerBoneNames(), GetRightHandFingerBoneNames(), GetLeftHandFingerBoneName(), and GetRightHandFingerBoneName() renamed to GetLeftHandBoneNames(), GetRightHandBoneNames(), GetLeftHandBoneName(), and GetRightHandBoneName() respectively. +- bHiddenInGameIfNoGloveDetected UPROPERTY from USGVirtualHandComponent has been renamed to bVisibleWhenHandDataUnavailable and accordingly all of its getters and setters; bVisibleWhenHandDataUnavailable = false now acts as bHiddenInGameIfNoGloveDetected = true, and vice-versa. +- USGWristTrackerComponent now uses FXRMotionControllerData for wrist tracking instead of calculating the wrist location by calling the SenseGlove API. +- FSGVirtualHandAnimInstanceProxy now relies on FXRMotionControllerData to animate the hands instead of a TMap of bone names and rotations which allows it to also apply the bone locations. +- The new OpenXR animation system now takes into account the mesh bone's transforms for a more reliable hand animation. +- FSGDebugVirtualHand::Draw now accepts a FXRMotionControllerData parameter instead of all WristLocation, WristRotation, JointPositions, and JointRotations parameters. +- FSGDebugVirtualHandSettings has been renamed to FSGVirtualHandDebuggingSettings. +- The value for USGGrabComponent's AttachmentSocketName uproperty now defaults to the value of the plugin's GrabAttachPointSocketName instead of Name_NONE. +- The USGGrabComponent now enables `bGravityEnabled`, `bSimulatePhysics`, and calls `WakeRigidBody` on its owning actor at `BeginPlay()` if `bAffectPhysicsState` is enabled. +- Updated the Directory Structure section of the main README file to reflect the latest toolchain support status. +- The `/CHANGELOG.md` file has been migrated to `/Handbook/src/overview/changelog.md` +- The `/LICENSE.md` file has been migrated to `/Handbook/src/license/senseglove-unreal-engine-plugin.md` +- The `/LICENSE-THIRD-PARTY.md` file has been migrated to `/Handbook/src/license/third-party.md` and every third-party component's license has been split; adding `/Handbook/src/license/senseglove-sdk.md` for the SenseGlove SDK, `/Handbook/src/license/boost-cpp-libraries.md` for the Boost C++ Libraries, and `/Handbook/src/license/serial-communication-library.md` for the Serial Communication Library. +- The Platform Support Matrix section of the main README file has been migrated to `/Handbook/src/overview/platform-support-matrix.md`. +- The Planned Features Completion Status section of the main README file has been migrated to `/Handbook/src/overview/planned-features-completion-status.md`. +- The Directory Structure section of the main README file has been migrated to `/Handbook/src/overview/directory-structure.md`. +- The SenseGlove settings' main config struct is now marked as DefaultConfig which means it does not require to be saved when settings are changed and they take effect immediately as the user updates them. +- Replaced all bitfield uproperties with booleans. +- Changed the DocsURL from the [old Blueprint docs website](https://senseglove.gitlab.io/unreal-blueprint-docs/) to [the new SenseGlove Unreal Engine Handbook website](https://unreal.docs.senseglove.com/). +- The Blueprint signature for various overloads of the Blueprint-exposed function `Queue Command Vibro Level` has been changed to expose sensible display names. + +### Removed + +- Dropped support for Unreal Engine 5.1 and Epic Native Toolchain v20 (used to build UE 5.0 and 5.1 Linux dependencies). +- Removed the Allbreaker virtual hand model as it's no longer compatible with the SenseGlove plugin. +- Removed ASGVirtualHandActor as it was experimental and we no longer maintain it and haven't been doing so for a long time. +- Removed FSGVirtualHandAnimInstanceProxy::GetBonesRotations(). +- Removed USGVirtualHandComponent::GetHandPose() and it's no longer possible to get the hand pose data from USGVirtualHandComponent as GetHandPose() has been removed. If you need it, you could always use the SenseGlove low-level API to retrieve it from the glove. +- Removed also GetFingerBoneName(), GetFingerBoneRefTransform(), GetFingerBoneRefRotation() and GetFingerBoneRefRotation() from USGVirtualHandComponent. +- Removed some remnants of UE 5.1 and older releases from the C++ code. +- Removed the `pack` utility branch and merge it to the plugin's source code at `/Packager`. + +### Known Issues + +- With the new OpenXR release, the separation of the real and virtual hand rendering is broken. The reason is the animation system now uses the OpenXR data in the world transforms which yields better animations, but comes at the cost of overriding the the hand position set by the wrist tracker component's position and rotation. If `FXRMotionControllerData` is invalid and `bVisibleWhenHandDataUnavailable` is enabled for example, the system works as expected, since the animation system won't proceed to animate the hand meshes without valid `FXRMotionControllerData`. Since the animation system is only aware of the hand mesh it's animating versus the real hand and virtual hand meshes it means either it should become aware of the physics events like begin and end overlap events and also the real vs virtual hands, or it should resort back to animating the virtual hand meshes in local or component space. This release marks this feature as broken for now until we come up with a reasonable solution in the future. +- The `UXRDeviceVisualizationComponent` provided by Unreal Engine is used in the SGPawn class as ControllerVisualizerLeft and ControllerVisualizerRight for implementing the wrist tracking hardware visualization feature. However, it is not compatible with the new OpenXR system in certain scenarios. For instance, when the motion controllers serve as wrist tracking hardware since the SenseGlove plugin is now introduced to the engine as an `OpenXRHandTracking` system, it causes the UXRDeviceVisualizationComponent to visualize the wrist tracking hardware at coordinates (0.0f, 0.0f, 0.0f) instead of their actual location and rotation in the world. This happens because the component incorrectly registers them as inactive, possibly because it's assumed hand tracking and motion controllers cannot be in use at the same time. Currently, we use this feature solely for debugging, and we have an alternative in the form of wrist-tracking debug gizmos, which can be toggled on or off via the settings system. In future releases, we might remove this feature due to its incompatibility, unless we find a solution to make the `UXRDeviceVisualizationComponent` work with the new system. Alternatively, we may develop our own version of the `UXRDeviceVisualizationComponent`. +- Although the SenseGlove OpenXR implementation is fully compatible with the `IOpenXRHMD` interface and the `FOpenXRHMD` `XRTrackingSystem`, it is not compatible with the `FOculusXRHMD` backend provided by the Meta XR plugin. The same issue likely applies to the VIVE OpenXR plugin. So, if these plugins are enabled in your project, the SenseGlove OpenXR will not function as intended, effectively breaking the plugin's functionality. It seems these plugins are necessary in order to make the fallback to the hand-tracking feature work on Android. While we may add support and compatibility with Meta XR and VIVE OpenXR plugins in the future, for the time being, if your project requires these plugins, we advise continuing with the `v2.0.x` release of the SenseGlove Unreal Engine plugin until this issue is addressed. + +## [2.0.7] - 2024-05-29 + +This is a bugfix release with no actual plugin code changes, only fixing issues with binary assets incompatible with UE versions earlier than 5.4. + +### Fixed + +- Make the Allbreaker assets compatible with UE5.1+ again as the v2.0.5 update breaks compatibility with UE versions earlier than 5.4, thus leaving the engine unable to load those assets. + +## [2.0.6] - 2024-05-29 + +This is a bugfix release with no actual plugin code changes, only removing development/test assets from UE 5.3 that were never meant to be shipped. + +### Removed + +- Removed the dev/test virtual hand models that leaked into the 5.3 branch. + +### Fixed + +## [2.0.5] - 2024-05-22 + +This is a bugfix release with no actual plugin code changes, only focusing on fixing the Allbreaker virtual hand model issues. + +### Fixed + +- Fix the wrong palm bone names on the Allbreaker virtual hand models. + +## [2.0.4] - 2024-05-17 + +This is a bugfix release with no actual plugin's code change. + +### Fixed + +- Fix our in-house Unreal Engine Marketplace submission tool's configurations where the Content folder (containing the Allbreaker hand model) is mistakenly ignored during the submission. This release reintroduces the Virtual Hand Model and its material missing from the previous release. +- Fix the SenseGlove.uproject's wrong versioning submitted to the Unreal Engine Marketplace. + +## [2.0.3] - 2024-05-15 + +This is a bugfix release addressing mostly RunUAT build issues on Unreal Engine 5.4. + +### Fixed + +- Fix UE 5.4 RunUAT build issue: "Asking CppCompileEnvironment for a single Architecture, but it has multiple Architectures (arm64, x64)", affecting SenseGloveConnectImpl and SenseGloveCoreImpl modues. +- Improved target platform detection when building SenseGloveConnectImpl and SenseGloveCoreImpl modules and also distinguishing the x64 builds from arm64 on Microsoft Windows. +- Fix other UE 5.4 RunUAT build issues, mostly caused by missing headers. + +### Removed + +- Removed support for Android armeabi-v7a and x86 architectures as they are no longer supported by the supported engine versions. + +## [2.0.2] - 2024-04-25 + +This is a patch release with no code changes. + +### Added + +- Introduce official Unreal Engine 5.4 support to the Unreal Engine Marketplace. + +### Changed + +- Updated the Platform Support Matrix with the latest changes. This is the last release to support Unreal Engine 5.1 as we no longer are able to push updates for this release to the Unreal Engine Marketplace. The v2.0.1 release for Unreal Engine 5.1 can be obtained from the Unreal Engine Marketplace, and v2.0.2 through our Microsoft Azure DevOps repositories. Please note that there are no actual code changes between these two releases and in terms of functionality they are almost identical. + +## [2.0.1] - 2024-04-15 + +This is a bugfix release. + +### Added + +- A fallback to HMD and wrist tracker hardware auto-detection mechanism has been added to be triggered in situations when automatic detection of the wrist tracker hardware is desired, e.g., either by not setting it explicitly, or setting it to the default None value. +- Added the SGHeadMountDisplay utility class, exposed to both C++ and Blueprint, in order to easily gather information about the HMD at runtime. +- Added the SGTypes header to the SenseGloveTypes module in order to define and share SenseGlove module types through this header across the plugin modules. +- Added ESGHeadMountDisplayDevice enum with supported HMDs list. + +### Fixed + +- Fix a bug inside both SGVirtualHandComponent and SGWristTrackerComponent where the connected glove's UObject instance gets destroyed and re-instantiated every frame. With this fix now the glove instance will be created or destroyed only when a glove connects to or disconnects from the system. +- Update the outdated Platform Support Matrix and its remarks section to reflect the latest status information. +- Fix the wrong header file description sections for the header files inside `SenseGloveKismet/Public/SGKismet/`. + +### Changed + +- SenseGlove libraries have been updated to v2.102.0-35d4de3f. +- Together, SenseGlove libraries v2.102.0-35d4de3f and SenseCom v1.6.1 remove the need to call ResetCalibration every time and are able to store and load calibration profiles from disk. +- SesenGloveBackend module is no longer calling FSGHandLayer::ResetCalibration on every backend initialization. + +## [2.0.0] - 2024-03-22 + +This is the second major release of the SenseGlove Unreal Engine Plugin adding support for Nova 2 with enormous breaking changes to the current C++ and Blueprint APIs. + +### Added + +- Added support for the SenseGlove Nova 2 devices. +- Added support for Quest 3 controllers. +- Various classes have been added to the API in order to implement the new functionalities and features from the latest upstream SenseGlove libraries. +- Added initial support for the upcoming Unreal Engine 5.4 release. +- Added a pair of default production-ready virtual hand meshes for the left and right hands, courtesy of [Allbreaker LLC Columbia](https://www.allbreaker.co/). For usage and redistribution, please consult the [LICENSE-THIRD-PARTY.md](LICENSE-THIRD-PARTY.md) file. + +### Fixed + +- A few critical bug fixes that have already been backported to the v1.x.x series through v1.9.3 to v1.9.8 releases. +- Revamped the way we do FVector <-> SGVect3D, FQuat <-> SGQuat, and SenseGlove <-> Unreal Engine angles conversions in order to properly translate between the SenseGlove and Unreal Engine coordinate systems. +- Allow the C++ compiler the opportunity to perform RVO/NRVO if applicable. +- Fix the modules' order inside the .uplugin file. +- Fix a build issue inside FSGArrayUtils::FromStdVector introduced by newer MVSC updates due to stricter implicit uint64 to int32 conversions. +- Fix a build issues inside FSGArrayUtils when performing non-Unity builds due to the missing header. +- Fix other build issues in USGDevice, USGNovaGloveSensorData, FSGDeviceImpl, and FSGSenseGloveVarsImpl when performing non-Unity builds due to the missing relevant headers. +- Fix changelog formatting. +- Some other improverment and fixes. + +### Changed + +- SenseGlove libraries have been updated to v2.101.12-62b1be11. +- The SenseGlove Unreal Engine Plugin now declares the OpenXR plugin as a dependency, so that the OpenXR plugin will be enabled automatically as soon as the SenseGlove Unreal Engine Plugin gets enabled. +- Various classes and parts of the API have been changed in order to reflect and adhere to upstream SenseGlove libraries. +- Reverse the Platform Support Matrix order from newer Unreal Engine versions to the older ones. +- Clarify the engine support policy in the main readme file by adding the corresponding references from the Epic Marketplace Guidelines and a URL to their guidelines page. +- The SGTouchComponent uproperties BuzzDuration and BuzzLevel now utilize different different names in order to correspond to the underlying API changes. They have been renamed to VibrotactileDuration and VibrotacktileLevel. +- The SGTouchComponent uproperties ForceFeedbackLevel and BuzzLevel (now VibrotacktileLevel) parameters type have changed from int32 to float with the value range varying between 0.0f to 1.0f instead of 1 to 100 in order to correspond to the underlying API changes. +- The SGVirtualHandComponent now assumes the default grab point's name as GenericGrabPoint instead of GrabPoint as default if not specified in the Unreal Blueprint Editor. +- The SGPawn on UE 5.2+ now utilizes UXRDeviceVisualizationComponent in order to properly display the controller meshes shipped with Unreal Engine's OpenXR plugin, or a user-provided mesh. On UE 5.1 this could still be set on the WristTrackerLeft and WristTrackerRight components. Please note that despite the fact that on UE 5.2+ it's still possible to utilize the WristTrackerLeft and WristTrackerRight for setting the controller meshes, this has been deprecated in UE 5.2+ and is no longer supported. + +### Removed + +- Various classes and parts of the API have been removed in order to reflect and adhere to upstream SenseGlove libraries. +- Removed the redundant SGIC_int32_Ref interop type. + +## [1.9.8] - 2024-03-12 + +This is a bugfix release that contains bugfixes backported from the next major release of the plugin as documented below. + +### Fixed + +- Fix a bug where the right-hand mesh is always hidden inside the game no matter whether the right glove is connected or not. +- Fix a crash inside the USGHandPose::FromHandAngles method. +- Some performance optimizations by utilizing MoveTemp in return statements. +- Some improvements applied to the source code. +- Some other minor fixes. + +### Changed + +- The BonesRotations TMap is no longer a public field of FSGVirtualHandAnimInstanceProxy and instead could be retrieved by calling the GetBonesRotations() method. + +## [1.9.7] - 2024-02-18 + +This is a bugfix release that contains 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. diff --git a/Plugins/SenseGlove/Handbook/src/appendix/directory-structure.md b/Plugins/SenseGlove/Handbook/src/appendix/directory-structure.md new file mode 100644 index 0000000..2959752 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/appendix/directory-structure.md @@ -0,0 +1,139 @@ +# Directory Structure + +``` +/ + │ + ├── Config + │ + ├── Documentation (this will be generated by running the make command inside the Handbook directory) + │ + ├── Handbook (this is the mdBook source code, used to generate the Documentation folder and not distributed to the Unreal Engine Marketplace) + │ + ├── Resources + │ + └── Source (various plug-in modules) + │ + ├── SenseGlove (the UE-specific high-level API) + │ + ├── SenseGloveAndroid (the Android-specific module) + │ + ├── SenseGloveBackend (responsible for initialization and deinitialization of the backend libraries) + │ + ├── SenseGloveBackendKismet (exposes Blueprints-specific functionality from the SenseGloveBackend module) + │ + ├── SenseGloveBuildHacks (uses Exceptions and RTTI, internally used for compiler-specific build hacks) + │ + ├── SenseGloveConnect (exposes part of the SGConnect low-level API to C++) + │ + ├── SenseGloveConnectImpl (uses Exceptions and RTTI, intended for internal use only) + │ + ├── SenseGloveConnectKismet (SGConnect functionality exposed to Blueprints) + │ + ├── SenseGloveCore (exposes part of the SGCoreCpp low-level API to C++) + │ + ├── SenseGloveCoreImpl (uses Exceptions and RTTI, intended for internal use only) + │ + ├── SenseGloveCoreKismet (SGCoreCpp functionality exposed to Blueprints) + │ + ├── SenseGloveDebug (a utility debug module) + │ + ├── SenseGloveDebugKismet (exposes Blueprints-specific functionality from the SenseGloveDebug module) + │ + ├── SenseGloveEditor (the Editor module) + │ + ├── SenseGloveInterop (internally used for interoperability between RTTI disabled/enabled modules) + │ + ├── SenseGloveKismet (exposes Blueprints-specific functionality from the SenseGlove module) + │ + ├── SenseGloveLog (the internal log module) + │ + ├── SenseGloveSettings (the plugin's settings manager) + │ + ├── SenseGloveSettingsKismet (exposes Blueprints-specific functionality from the SenseGloveSettings module) + │ + ├── SenseGloveTracking (provides XR_EXT_hand_tracking support, HMD auto-detection, and SenseGlove device tracking) + │ + ├── SenseGloveTrackingKismet (exposes Blueprints-specific functionality from the SenseGloveTracking module) + │ + ├── SenseGloveTypes (exposes various enums from the backend libraries and also types from the SenseGlove module) + │ + ├── SenseGloveUtils (the internal utility module) + │ + └── ThirdParty (3rd-party dependencies) + │ + ├── android (.jar file Java libraries for Android) + │ + ├── include (header files) + │ │ + │ ├── boost + │ │ + │ ├── SenseGlove + │ │ │ + │ │ ├── Connect (SGConnect headers) + │ │ │ + │ │ └── Core (SGCoreCpp headers) + │ │ + │ └── serial + │ + └── lib (platform-specific pre-built binary dependencies) + │ + ├── android + │ │ + │ └── r25b (Android NDK r25b dependencies for UE 5.1+) + │ │ + │ ├── arm64 (64-bit ARM variant of Android) + │ │ │ + │ │ ├── debug + │ │ │ + │ │ └── release + │ │ + │ └── x64 (64-bit x86-64 variant of Android) + │ │ + │ ├── debug + │ │ + │ └── release + │ + ├── linux + │ │ + │ ├── v21 (UE 5.2 Linux dependencies) + │ │ │ + │ │ ├── aarch64 (dependencies targeting AArch64 Linux architecture) + │ │ │ │ + │ │ │ ├── debug + │ │ │ │ + │ │ │ └── release + │ │ │ + │ │ └── x86-64 (dependencies targeting x86-64 Linux architecture) + │ │ │ + │ │ ├── debug + │ │ │ + │ │ └── release + │ │ + │ └── v22 (UE 5.3 and 5.4 Linux dependencies) + │ │ + │ ├── aarch64 (dependencies targeting AArch64 Linux architecture) + │ │ │ + │ │ ├── debug + │ │ │ + │ │ └── release + │ │ + │ └── x86-64 (dependencies targeting x86-64 Linux architecture) + │ │ + │ ├── debug + │ │ + │ └── release + │ + └── win64 + │ + ├── msvc142 (Microsoft Visual Studio 2019 dependencies) + │ │ + │ ├── debug + │ │ + │ └── release + │ + └── msvc143 (Microsoft Visual Studio 2022 dependencies) + │ + ├── debug + │ + └── release +``` diff --git a/Plugins/SenseGlove/Handbook/src/appendix/extra-resources.md b/Plugins/SenseGlove/Handbook/src/appendix/extra-resources.md new file mode 100644 index 0000000..36b4f0a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/appendix/extra-resources.md @@ -0,0 +1,27 @@ +# Extra Resources + +There are various resources available for older versions of the SenseGlove Unreal Engine Plugin prior to `v2.1.x` that might still be partially relevant. These include example projects, demo scenes, and tutorials. Plans are underway to provide new example projects, demo scenes, and tutorials for the latest release. In the meantime, the outdated resources can still be beneficial + +## Examples and Demo Projects + +- [A basic OpenXR-compatible Blueprint demo demonstrating basic functionality such as grab/release, touch with buzz and force-feedback, etc (compatible with versions v2.1.0+).](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo-OpenXR) +- [A basic Blueprint demo demonstrating basic functionality such as grab/release, touch with buzz and force-feedback, etc (compatible with versions >= v1.4.x and <= v2.0.x).](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo) +- [Example C++ API Project (only compatible with early v1.x.x releases)](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGPlaygroundCpp) +- [Example Blueprint API Project (only compatible with early v1.x.x releases)](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGPlaygroundBP) + +## Tutorials + +- [Finding out your SenseGlove plugin version](https://youtu.be/iF0JU2kpNhw) +- [Plugin installation guide for Microsoft Windows](https://youtu.be/QqWeRHNceqY) +- [C++ & Blueprint examples for Microsoft Windows](https://youtu.be/qRaNOc3OHqU) +- [Plugin and examples installation guide for GNU/Linux](https://youtu.be/1T7LAGp3e6I) +- [How to connect to Nova gloves on GNU/Linux using Blueman Bluetooth Manager](https://youtu.be/f34ofFkx_Ow) +- [How to connect to Nova gloves on GNU/Linux using command-line](https://youtu.be/Swkk_KmXwq8) +- [The basic C++ and Blueprint API usage](https://youtu.be/9ICAH2ZUvVk) +- [How to setup the virtual hand model & the SenseGlove pawn](https://youtu.be/_PEppB_yPCU) +- [How to deploy to Oculus Quest 2 and Android](https://youtu.be/zU8Nf4ssOO0) +- [Setting up Grabbing and Haptic Feedback functionalities (SGBasicDemo)](https://youtu.be/jN4VcfXVrTA) +- [Setting up VIVE Pro & VIVE Trackers in Unreal Engine](https://youtu.be/jvFDNdq_4xQ) +- [Setting up VIVE Focus 3 & VIVE Wrist Trackers in Unreal Engine](https://youtu.be/SGmQevkzsY4) +- [SGBasicDemo: setup throwing objects and physics settings for the real and virtual hands](https://youtu.be/K9Qr_LqgTcY) +- [SGBasicDemo v2: upgrading your projects to the SenseGlove Unreal Engine Plugin v2.0.0](https://youtu.be/VbWfoep-Hsg) diff --git a/Plugins/SenseGlove/Handbook/src/appendix/planned-features-completion-status.md b/Plugins/SenseGlove/Handbook/src/appendix/planned-features-completion-status.md new file mode 100644 index 0000000..a9eb6d5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/appendix/planned-features-completion-status.md @@ -0,0 +1,52 @@ +## Planned Features Completion Status + +### Implemented as of v2.1.0 + +- [X] Full SenseGlove low-level core API access through Unreal C++. +- [X] Full SenseGlove low-level core API access through Blueprint. +- [X] DK 1 Support. +- [X] Nova 1 Support. +- [X] Nova 2 Support. +- [X] Support for Microsoft Windows as a development platform. +- [X] Support for GNU/Linux as a development platform. +- [X] Support for Microsoft Windows as a deployment platform. +- [X] Support for GNU/Linux x64 as a deployment platform. +- [X] Support for GNU/Linux AArch64 as a deployment platform. +- [X] Support for Android as a deployment platform. +- [X] Support for Oculus Quest 2 and Oculus Quest Pro. +- [X] Support for HTC VIVE Pro and HTC VIVE Focus 3. +- [X] Support for HTC VIVE Trackers and HTC VIVE Wrist Trackers. +- [X] On-device calibration for Android without the need for SenseCom. +- [X] Haptic feedback including force feedback, buzz, and thumper commands. +- [X] A customizable Grab component that could be added to any actor. +- [X] A customizable Touch component that could be added to any actor. +- [X] Ability to grab, release, and throw objects around. +- [X] Separation of the real and virtual hand rendering. +- [X] An out-of-the-box customizable SGPawn with the ability to be extended in C++ and Blueprint. +- [X] Easy wrist/hand tracking debugging using the SenseGlove Debug module. +- [X] A generic Settings module with the ability to override settings. +- [X] C++/Blueprint interaction events such as OnGrabStateUpdated, OnTouchStateUpdated, OnActorGrabbed, OnActorReleased, OnActorBeginTouch, and OnActorEndTouch. +- [X] A fallback to HMD and wrist tracker hardware auto-detection mechanism when automatic detection of the wrist tracker hardware is desired. +- [X] OpenXR-compatible hand tracking (XR_EXT_hand_tracking) support. +- [X] FXRMotionControllerData compatible hand animation system. +- [X] FXRMotionControllerData compatible wrist tracking system. +- [X] FXRMotionControllerData compatible hand interaction manipulation system. +- [X] Ability to fallback to hand tracking when a glove is not present and use the bare hands for interactions, or a combination of glove and hand tracking if no motion controller input is detected. +- [X] 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. +- [X] A flexible virtual hand animation system that can take the mesh bone's transforms into account for a more reliable hand animation. +- [X] Ability to manage the Engine Scalability Settings through the SenseGlove plugin in order to change the graphics settings on the fly. + +### Upcoming features planned for the v2.2.0 release + + +### Planned features long-term + +- [ ] Get tracking input from sources other than a SenseGlove device. +- [ ] Be able to assign behaviors to different objects (meshes) in the scene (e.g. Slider, Hinge, basic Grabables, etc). +- [ ] Make it so developers can define or extend their own behavior(s) to an object through Code / Blueprints (e.g. I want a car door that is like a slider, but follows a path rather than a straight line). +- [ ] Make the hand(s) able to push around physics-driven objects (for as much as their behaviors allow) (in backlog). +- [ ] Be able to grab objects with up to 2 hands (and move them around with both hands at the same time in a way that seems realistic). +- [ ] Ensure that our virtual hands (and the objects they hold) do not phase through other physics objects (e.g. walls and tables). +- [ ] Allow other scripts to force a grab and/or release to occur (for example, when you place it apart at the designated location, it gets removed from your hand and snaps into place). +- [ ] Have some form of weight simulation by making certain objects harder to push, lowering manipulation speed, or making objects only moveable with two hands. +- [ ] (Optional) Make it so the fingers of your virtual hands do not clip inside the meshes you are holding (certain people see this as an indicator of how fast the Force-Feedback activates - but it's basically just rendering). diff --git a/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md b/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md new file mode 100644 index 0000000..0485bdd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/appendix/platform-support-matrix.md @@ -0,0 +1,27 @@ +## Platform Support Matrix + +| | **Windows (MSVC 2017)** | **Windows (MSVC 2019)** | **Windows (MSVC 2022)** | **Linux x86-64 (Native Toolchain)** | **Linux AArch64 (Native Toolchain)** | **Meta Quest Stand-alone (Android NDK)** | **HTC VIVE Stand-alone (Android NDK)** | **UE Marketplace Version** | **Azure DevOps Version** | +|:--------:|:-----------------------:|:-----------------------:|:-----------------------:|:-----------------------------------:|:------------------------------------:|:----------------------------------------:|:--------------------------------------:|:--------------------------:|:------------------------:| +| **5.4** | ❌ | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.0 | ✅ v2.1.0 | +| **5.3** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.0 | ✅ v2.1.0 | +| **5.2** | ❌ | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x | ✅ v2.1.x (r25b) | ❓ | ✅ v2.1.0 | ✅ v2.1.0 | +| **5.1** | ❌ | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x | ⚠️ v2.0.x (r25b) | ❓ | ⚠️ v2.0.1 | ⚠️ v2.0.2 | +| **5.0** | ❌ | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x | ⚠️ v1.6.x (r21e) | ❓ | ⚠️ v1.6.1 | ⚠️ v1.6.1 | +| **4.27** | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x | ⚠️ v1.4.x (r21e) | ❓ | ⚠️ v1.3.1 | ⚠️ v1.4.3 | +| **4.26** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ❌ | ⚠️ v1.0.4 | +| **4.25** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ❌ | ⚠️ v1.0.4 | +| **4.24** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ❌ | ⚠️ v1.0.4 | +| **4.23** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ❌ | ⚠️ v1.0.4 | +| **4.22** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ❌ | ⚠️ v1.0.4 | + +* Supported +* ⚠️ Not supported by the latest release and might be lacking features +* Not supported at all +* Unknown or untested + +Remarks: +* Per [Epic's Marketplace Guidelines](https://www.unrealengine.com/en-US/marketplace-guidelines) in regards to Code Plugins (sections `2.6.3`.d and `3.1.b`), 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. +* All third-party libraries on Windows built against Windows SDK `10.0`. +* Oculus and VIVE support is only provided through the recommended Android NDK versions by Epic Games. +* [wjwwood/serial](https://github.com/wjwwood/serial) requires Android NDK API Level `28+` in order to be built successfully. +* All third-party libraries target Android NDK API Level `29`, thus any project relying on the plug-in should be build with the same NDK API Level. diff --git a/Plugins/SenseGlove/Handbook/src/favicon.svg b/Plugins/SenseGlove/Handbook/src/favicon.svg new file mode 100644 index 0000000..8ff138f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/favicon.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/README.md new file mode 100644 index 0000000..f5971ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/README.md @@ -0,0 +1,41 @@ +# Enabling XR_EXT_hand_tracking OpenXR extension on VR Headsets + +> [!IMPORTANT] +> Starting from version `v2.1.0`, the SenseGlove Unreal Engine Plugin requires +> the `XR_EXT_hand_tracking` OpenXR extension to function. Without this +> OpenXR extension the plugin won't output any glove data. + +Starting from version `v2.1.0`, the SenseGlove Unreal Engine Plugin requires the `XR_EXT_hand_tracking` OpenXR extension to function. If you are streaming from your PC to your VR headset, to enabling `XR_EXT_hand_tracking` support, might require additional settings depending on the vendor. + +For Meta Quest headsets, enable the `Developer runtime features` under the `Settings > Beta` section: + +![Meta Quest Link - Developer Runtime Features - Enabling XR_EXT_hand_tracking](meta-quest-link-developer-runtime-features.png "Meta Quest Link - Developer Runtime Features - Enabling XR_EXT_hand_tracking") + +> [!CAUTION] +> Streaming to Meta Quest headsets from SteamVR is no longer supported because +> the migration to OpenXR has caused controller offsets for Meta Quest HMDs to +> break on SteamVR. One possible reason is that +> [SteamVR lists `XR_FB_hand_tracking` as an unsupported feature](https://steamcommunity.com/app/250820/discussions/8/3121550424355682585/). +> Further investigation is needed to identify the exact underlying cause. + +For VIVE headsets relying on VIVE Business Streaming, ensure the Hand Tracking settings under `Input` are enabled: + +![VIVE Business Streaming - Hand tracking - Enabling XR_EXT_hand_tracking](vive-business-streaming-hand-tracking.png "VIVE Business Streaming - Hand tracking - Enabling XR_EXT_hand_tracking") + +> [!NOTE] +> Tracking and accessing `FXRMotionControllerData` output from SenseGlove +> devices do not require Hand and Body Tracking to be enabled on the HMD device. +> Enabling this feature is only necessary if you wish to use hand-tracking as a +> fallback option when no glove is connected to your PC. + +As mentioned in the `v2.1.0` release changelog, enabling the Meta XR plugin—and potentially the VIVE OpenXR plugin—alongside the SenseGlove Unreal Engine Plugin in the same project will disrupt the OpenXR functionality provided by the SenseGlove Plugin, rendering it unusable. + +> [!CAUTION] +> As noted in the +> [v2.1.0 release changelog](../../appendix/changelog.html), since this release +> enabling the Meta XR plugin, —and potentially the VIVE OpenXR plugin— +> alongside the SenseGlove Unreal Engine Plugin in the same project will disrupt +> the OpenXR functionality provided by the SenseGlove Unreal Engine Plugin, +> rendering it unusable. +> +> `Although the SenseGlove OpenXR implementation is fully compatible with the IOpenXRHMD interface and the FOpenXRHMD XRTrackingSystem, it is not compatible with the FOculusXRHMD backend provided by the Meta XR plugin. The same issue likely applies to the VIVE OpenXR plugin. So, if these plugins are enabled in your project, the SenseGlove OpenXR will not function as intended, effectively breaking the plugin's functionality. It seems these plugins are necessary in order to make the fallback to the hand-tracking feature work on Android. While we may add support and compatibility with Meta XR and VIVE OpenXR plugins in the future, for the time being, if your project requires these plugins, we advise continuing with the v2.0.x release of the SenseGlove Unreal Engine plugin until this issue is addressed.` diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/meta-quest-link-developer-runtime-features.png b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/meta-quest-link-developer-runtime-features.png new file mode 100644 index 0000000..e726d72 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/meta-quest-link-developer-runtime-features.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d96f8f33e57bd7cfa26ea426691515a7bf4f16a4bf22d289b2f3905cf9a70a6 +size 141814 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/vive-business-streaming-hand-tracking.png b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/vive-business-streaming-hand-tracking.png new file mode 100644 index 0000000..c04ef3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/enabling-xr-ext-hand-tracking-vr-headsets/vive-business-streaming-hand-tracking.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ebb54ff5c785ca492b9a087726064325a312e70b758d6f5af99ab2de8cfa18f +size 88738 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/installation/README.md new file mode 100644 index 0000000..3981fdc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/README.md @@ -0,0 +1,27 @@ +# Plugin Installation + +The SenseGlove Unreal Engine Plugin could be installed using various methods: + +- Through [the Epic Games Launcher](https://store.epicgames.com/en-US/download) by navigating to [the SenseGlove Unreal Engine Plugin landing page on the Unreal Engine Marketplace](https://www.unrealengine.com/marketplace/en-US/product/the-senseglove-unreal-engine-plugin). +- Through [the SenseGlove Unreal Engine Plugin Microsoft Azure DevOps repository](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal). + +In the following chapters, we discover each of those methods: + +- [Installation through the Epic Games Launcher](epic-games-launcher.md) +- [Installation through Microsoft Azure DevOps Repositories](microsoft-azure-devops-repositories.md) + +## Video Tutorials + +We also have older videos demonstrating both installation methods on Microsoft Windows and GNU Linux in more detail. + +- [Plugin installation guide for Microsoft Windows](https://youtu.be/QqWeRHNceqY): + +
+ +
+ +- [Plugin and examples installation guide for GNU/Linux](https://youtu.be/1T7LAGp3e6I): + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-001.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-001.png new file mode 100644 index 0000000..72aac7e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dda98796f2f6bfe8a934110d2ab7f534fc42e263b71c39697fc94a7406be88c +size 782449 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-002.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-002.png new file mode 100644 index 0000000..4a2f490 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eeb410c70a268b729acd53e8897f42ea53d31a0a8f5b258012eea0d86f47dab0 +size 1400479 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-003.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-003.png new file mode 100644 index 0000000..fb4cc2a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-003.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17472ebf888d79b0909f83dec5d8379598c28b3514582a2fa3115bae760d9af4 +size 1407599 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-004.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-004.png new file mode 100644 index 0000000..3e5b430 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-004.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:690cf9af1992acedd0cc39396a3499dfcd7b4b4795eabe634d3a9629b55ca174 +size 499900 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-005.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-005.png new file mode 100644 index 0000000..ced0623 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-005.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45e3c1af739a3e46ae11ce5f377819bcad0b3f76804cf068da831553acec6676 +size 212462 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-006.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-006.png new file mode 100644 index 0000000..f4f11f5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-006.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57deab574ac9bf2a2ec6b9be7793dd5729e071457f263b5753db33a2c18f6126 +size 475915 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-007.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-007.png new file mode 100644 index 0000000..dd37d94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-007.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdcbf36097aa6b64af29fa50469fcecad7484e79ed75c87a2bd436a411346aed +size 238763 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-008.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-008.png new file mode 100644 index 0000000..07bf89c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-008.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce0742e02678dce3d9baf929d4f332efa8d56e74b855e8daf163173ef35a56c0 +size 196427 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-009.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-009.png new file mode 100644 index 0000000..20391ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-009.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e101133f3d4c70846dcb8cac36e4451af1d3dca558a04a6fe67a864dcce77993 +size 168715 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-010.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-010.png new file mode 100644 index 0000000..6c6b7cf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher-010.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38df4bc2772c1b460b82690a1e05e25b8b3c75d01a068d5ba70fbe68a705d6b1 +size 92351 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher.md b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher.md new file mode 100644 index 0000000..2e8f2d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/epic-games-launcher.md @@ -0,0 +1,52 @@ +# Plugin Installation through the Epic Games Launcher + +Before we start the plugin installation through [the Epic Games Launcher](https://store.epicgames.com/en-US/download) please make sure you have [a signed-in Epic Games account on your installed Epic Games Launcher and a supported Unreal Engine version already installed](https://dev.epicgames.com/documentation/en-us/unreal-engine/installing-unreal-engine). The supported engine versions are listed on [the Platform Support Matrix](../../appendix/platform-support-matrix.md). + +1. Run the Epic Games Launcher. + +![Plugin installation through the Epic Games Launcher - step 1](epic-games-launcher-001.png "Plugin installation through the Epic Games Launcher - step 1") + +2. Navigate to the `Marketplace` tab. + +![Plugin installation through the Epic Games Launcher - step 2](epic-games-launcher-002.png "Plugin installation through the Epic Games Launcher - step 2") + +3. On the `Marketplace` tab, inside the search box, start typing `SenseGlove` which filters the plugin matching that search phrase in real-time. Select `The SenseGlove Unreal Engine Plugin`. + +![Plugin installation through the Epic Games Launcher - step 3](epic-games-launcher-003.png "Plugin installation through the Epic Games Launcher - step 3") + +4. Once on [the SenseGlove Unreal Engine Plugin marketplace page](https://www.unrealengine.com/marketplace/en-US/product/the-senseglove-unreal-engine-plugin), click on the `Install to Engine` button. + +![Plugin installation through the Epic Games Launcher - step 4](epic-games-launcher-004.png "Plugin installation through the Epic Games Launcher - step 4") + +5. You'll be prompted to choose a compatible engine version. Select your desired engine version and hit this `Install` button. + +![Plugin installation through the Epic Games Launcher - step 5](epic-games-launcher-005.png "Plugin installation through the Epic Games Launcher - step 5") + +6. The launcher will show the download and installation progress. Please wait for it to finish. + +![Plugin installation through the Epic Games Launcher - step 6](epic-games-launcher-006.png "Plugin installation through the Epic Games Launcher - step 6") + +7. While the download and installation are in progress you can see the progress in more detail by clicking on the `Downloads` section on the sidebar. + +![Plugin installation through the Epic Games Launcher - step 7](epic-games-launcher-007.png "Plugin installation through the Epic Games Launcher - step 7") + +8. Once the download and installation are done, you can head to the `Library` tab to verify the installation. In case you have lots of assets or plugins installed, you could search the term `SenseGlove` inside the search box for the `Vault` section and you should be able to see that the SenseGlove Unreal Engine Plugin has been added to your vault. + +![Plugin installation through the Epic Games Launcher - step 8](epic-games-launcher-008.png "Plugin installation through the Epic Games Launcher - step 8") + +9. If you click on the `Installed Plugins` link under the engine you've just installed the plugin to, you should be able to see the SenseGlove Unreal Engine Plugin listed as installed. + +![Plugin installation through the Epic Games Launcher - step 9](epic-games-launcher-009.png "Plugin installation through the Epic Games Launcher - step 9") + +10. One last confirmation could be navigating to `YourEngineInstallationPath/Engine/Plugins/Marketplace` directory. The SenseGlove Unreal Engine Plugin source and binaries can be found inside this directory. This is especially useful in case one desires to copy the plugin for example to their own project's source code to run it at the project level instead of running it at the engine level. + +![Plugin installation through the Epic Games Launcher - step 10](epic-games-launcher-010.png "Plugin installation through the Epic Games Launcher - step 10") + +> [!WARNING] +> Please note that it is best practice to install the plugin either at the +> project level or the engine level, but not both. Having the plugin installed +> in both locations, at the same time, can lead to various issues, especially if +> the version of the plugin installed at the engine level differs from the one +> installed at the plugin level. +> A guide on [verifying the plugin version](../../getting-started/plugin-verify-version-enable/) +> is also available as well. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown-choose-tag.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown-choose-tag.png new file mode 100644 index 0000000..000dbe3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown-choose-tag.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dc84ba8212da52778ef6365bdf49149a64f3d249df6a1b75a99aef27e3c5f07 +size 109105 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown.png new file mode 100644 index 0000000..0d70183 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-branch-dropdown.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99affb50c7f73b8c82e4dae78d746bd90e5637f17eeea6577b57613d469853c4 +size 106388 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-building-missing-modules.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-building-missing-modules.png new file mode 100644 index 0000000..be9cd54 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-building-missing-modules.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91bb4840af315445a78bec2f8f3fc50a72ed803dcf858f3cd458c5362a90e242 +size 38748 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-branch-tag-zip.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-branch-tag-zip.png new file mode 100644 index 0000000..2f3ecc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-branch-tag-zip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ca79686f520399fb3aa66a6629b833936a8cce36ca4bfbc1bb18bb1d0bb2e05 +size 125119 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-dev.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-dev.png new file mode 100644 index 0000000..2982be0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-download-dev.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8551dc349dfa561df0f3409ad5bc78b60287303c7fc8319bf3cd85ae7c265f05 +size 124329 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files-progress.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files-progress.png new file mode 100644 index 0000000..8498d7b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files-progress.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86c40da40fffa0c26939a196a82306c7d8f7a860101789d2eabe952005050ce1 +size 35753 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files.png new file mode 100644 index 0000000..72dc2a3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-generate-visual-studio-project-files.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb00bad5c00ac82c1cb00437778b759c67f4a37dc05c2a719b6935466ad22335 +size 43677 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-missing-modules.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-missing-modules.png new file mode 100644 index 0000000..65f589a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-missing-modules.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d00ce4583c246f173803b2362f8c5fbb86f68abee7961655d7f1da9259c8d99 +size 106253 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-download-zip.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-download-zip.png new file mode 100644 index 0000000..e596c52 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-download-zip.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0a68040f555e447bde134d154a417dc15222469d19817a800b96416a280fc3b +size 124189 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-history.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-history.png new file mode 100644 index 0000000..3a8dcbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-history.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:895d0aab7b841388a0b3264ad7b2820cd4d657654e9280fb8617ad41f1833207 +size 139920 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-release-commit.png b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-release-commit.png new file mode 100644 index 0000000..5b266e5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories-specific-version-release-commit.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c22bd3d4ac25e3272cca4a59d880dcd7d020a2d2e95bdd9a9af4aac6b4594931 +size 122228 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories.md b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories.md new file mode 100644 index 0000000..ed15ae1 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/installation/microsoft-azure-devops-repositories.md @@ -0,0 +1,365 @@ +# Plugin Installation through Microsoft Azure DevOps Repositories + +While [plugin installation through the Epic Games Launcher](epic-games-launcher.md) is the most convenient method for most users to obtain and install the latest version of [the SenseGlove Unreal Engine Plugin marketplace page](https://www.unrealengine.com/marketplace/en-US/product/the-senseglove-unreal-engine-plugin), there might be valid reasons to instead download and install the plugin directly from [the SenseGlove Unreal Engine Plugin Microsoft Azure DevOps Repository](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal). These reasons may include: + +- Downloading an older version that is no longer available on [the Unreal Engine Marketplace](https://www.unrealengine.com/marketplace/en-US/store). +- Downloading a recent version that has been submitted to the Unreal Engine Marketplace, but is still awaiting approval and publication by the Unreal Engine Marketplace Team. +- Downloading an under-development, unstable release of the plugin for testing purposes. +- Or, any other specific needs that require direct access to the repository. + +Nonetheless, here is a step-by-step guide to downloading and installing the plugin from the Microsoft Azure DevOps Repositories. + +## Download a Specific Version + +To download a specific version of the plugin, follow these steps: + +1. Navigate to the [the SenseGlove Unreal Engine Plugin Microsoft Azure DevOps Repository](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal). + +2. Locate the branch dropdown menu at the top of the page, just below the navigation bar, and next to the `Copy to clipboard` icon. There you'll find a dropdown menu. By default, it usually selects the [master](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal?path=%2F&version=GBmaster&_a=contents) branch. + +![Plugin Installation through Microsoft Azure DevOps Repositories - The branch dropdown menu](microsoft-azure-devops-repositories-branch-dropdown.png "Plugin Installation through Microsoft Azure DevOps Repositories - The branch dropdown menu") + +3. Use the dropdown menu to choose a desired branch containing the source code for a specific version of Unreal Engine or a specific release of the plugin marked with a release tag. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Choosing a tag from the branch dropdown menu](microsoft-azure-devops-repositories-branch-dropdown-choose-tag.png "Plugin Installation through Microsoft Azure DevOps Repositories - Choosing a tag from the branch dropdown menu") + +> [!NOTE] +> A branch named with engine version numbers, such as `5.4`, `5.3`, etc., +> ususally contains the source code for the latest stable version of the plugin +> compatible with that specific Unreal Engine version, provided that version is +> still supported. +> For a comprehensive list of supported engine versions please refer to +> [the Platform Support Matrix](../../appendix/platform-support-matrix.md). +> +> As a general rule of thumb, the `master` branch should work with any supported +> Unreal Engine version. This is because it does not specify any `EngineVersion` +> inside the main `.uplugin` file. However, there may be rare exceptions where +> it does not work due to breaking changes between engine versions that the +> plugin cannot accommodate. One such a instance occurred with version `2.0.x` +> of the plugin, where +> [some breaking changes prevented UE `5.1` from sharing similar code with versions `5.2+`](https://dev.azure.com/SenseGlove/SenseGlove-Unreal/_git/SenseGlove-Unreal/commit/b2861b0068ca59f283b983ed41efa84086826079?refName=refs%2Fheads%2F5.1&path=%2FSource%2FSenseGlove%2FSenseGlove.Build.cs&_a=compare). +> For this reason, it is generally recommended to select a branch specific to +> the version of the Unreal Engine you intend to use with the plugin. +> +> The same principles that apply to the `master` branch also apply to the `dev` +> branch, which will discuss later. +> +> We will also cover how to obtain a working version from a tag for scenarios +> like the one mentioned above. + +4. After selecting your desired branch or tag, click on the kebab menu (three vertical dots) located at the top right of the screen and choose `Download as Zip` to obtain the source code for that branch or tag. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a branch or tag as Zip](microsoft-azure-devops-repositories-download-branch-tag-zip.png "Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a branch or tag as Zip") + +## Download a Specific Version for a Specifc Unreal Engine Version + +As mentioned earlier, due to breaking changes between Unreal Engine versions, it might not be feasible to share the same source code across different Unreal Engine versions. Since release tags are created from the `master` branch, they contain code compatible only with the latest version of Unreal Engine. Therefore, the instructions for downloading a specific version from a release tag might not work with some Unreal Engine versions. In such cases, you can use an alternative approach: + +1. First, choose the appropriate branch for your desired Unreal Engine version from the branch dropdown menu, as discussed earlier. Then navigate to the `History` tab. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - History tab](microsoft-azure-devops-repositories-specific-version-history.png "Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - History tab") + +2. Look through the commit history for a commit message that says `bump the plugin version to vX.X.X` as all releases are finalized with this exact commit message and the plugin version. Next, click on the commit message for the version you are looking for. + +3. Once you've selected the correct commit, click on the `Browse Files` button next to the kebab menu (three vertical dots) at the top right of the screen. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - Release commit](microsoft-azure-devops-repositories-specific-version-release-commit.png "Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - Release commit") + +4. You should now be in the `Content` tab, with the branch dropdown menu displaying the commit hash instead of a branch name or tag. Click on the kebab menu (three vertical dots) again, and select `Download as Zip`. This will give you a zip file containing the exact release you need, compatible with your chosen Unreal Engine version. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - Download as Zip](microsoft-azure-devops-repositories-specific-version-download-zip.png "Plugin Installation through Microsoft Azure DevOps Repositories - Downloading a specific version for a specifc Unreal Engine version - Download as Zip") + +## Download the Bleeding-edge Development Branch + +> [!CAUTION] +> The `dev` branch is an active development branch that is constant and +> ongoing changes. As a result, the code on this branch is primarily untested +> and therefore not production-ready. It may not even compile successfully or +> may lack comprehensive documentation. +> For any serious development, it is generally recommended to use a stable +> release of the plugin. The `dev` branch is publicly accessible to give you a +> preview of upcoming features and for trial purposes only. +> +> The most up-to-date documentation for the dev branch can usually be found at: +> at: +> [https://unreal.dev.senseglove.com/next](https://unreal.dev.senseglove.com/next). + +Downloading the [`dev`](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal?path=%2F&version=GBdev&_a=contents) branch is as easy as choosing the `dev` branch from the branch dropdown menu (as discussed earlier) and then choosing `Download as Zip` from the kebab menu (three vertical dots). + +![Plugin Installation through Microsoft Azure DevOps Repositories - Downloading the bleeding-edge development branch](microsoft-azure-devops-repositories-download-dev.png "Plugin Installation through Microsoft Azure DevOps Repositories - Downloading the bleeding-edge development branch") + +## Installation + +Once you have obtained the desired plugin version compatible with the Unreal Engine version you have in mind using any of the methods mentioned above, it's time to build and install the plugin. There are two ways to install the SenseGlove Unreal Engine Plugin, one is at the engine level, and the other is per project. + +- **Engine-level installation**: this method makes the plugin accessible to any project within that Unreal Engine version. + +- **Per-project installation**: this method makes the plugin accessible only to a specific project. + +> [!WARNING] +> Please note that it is best practice to install the plugin either at the +> project level or the engine level, but not both. Having the plugin installed +> in both locations, at the same time, can lead to various issues, especially if +> the version of the plugin installed at the engine level differs from the one +> installed at the plugin level. +> A guide on [verifying the plugin version](../../getting-started/plugin-verify-version-enable/) +> is also available as well. + +### Engine-level installation + +### Per-project installation + +1. Locate your existing C++ or Blueprint project, or create a new project from scratch. + +> [!IMPORTANT] +> Before proceeding, make sure your project's Unreal Editor is closed, and you +> do not have your project open in your C++ IDE to avoid any issues. + +2. Inside your project's root directory create a new `Plugins` directory if you don't have one already. + +3. Inside the `Plugins` directory create a new directory named `SenseGlove`. + +4. Extract the content of your downloaded zip file into the `SenseGlove` directory. + +5. Remove any directories or files that are only meant for use by the SenseGlove Unreal Engine Plugin maintainers. These are not part of the distributed plugin package and are not required by either Unreal Engine or the SenseGlove Unreal Engine Plugin to function correctly. + +The mandatory files and folders to stay are as follows: + +``` +Config +Content +Resources +Source +SenseGlove.uplugin +``` + +Anything else can be safely removed. For example, these files and folders can be safely deleted: + +``` +Handbook +Packager +.clang-format +.editorconfig +.gitattributes +.gitignore +README.md +``` + +6. Ensure your project has the correct structure. + +For a Blueprint-only project, it should look something like this: + +``` +MyBlueprintProject + │ + ├── Config + │ + ├── Content + │ + ├── Plugins + │ │ + │ └── SenseGlove + │ │ + │ ├── Config + │ │ + │ ├── Content + │ │ + │ ├── Resources + │ │ + │ ├── SenseGlove.uplugin + │ │ + │ └── Source + │ + └── MyBlueprintProject.uproject +``` + +For a C++ project, the structure should look like this: + +``` +MyCppProject + │ + ├── Config + │ + ├── Content + │ + ├── Plugins + │ │ + │ └── SenseGlove + │ │ + │ ├── Config + │ │ + │ ├── Content + │ │ + │ ├── Resources + │ │ + │ ├── SenseGlove.uplugin + │ │ + │ └── Source + │ + ├── Source + │ + └── MyCppProject.uproject +``` + +> [!TIP] +> If you are keeping your project under Git and Git LFS, consider keeping the `.gitignore` and `.gitattributes` as they help keep irrelevant files out of the remote repository, or manage binary blobs efficiently. + +7. OK, now it's time to build the plugin. + +> [!NOTE] +> For Linux build instructions see the [Linux Build Instructions section](#linux-build-instructions). + +For a Blueprint-only project, on Microsoft Windows simply double-clicking the project's `.uproject` file should present you with a pop-up informing you that some binary modules are missing. + +![Plugin Installation through Microsoft Azure DevOps Repositories - Missing Modules dialog](microsoft-azure-devops-repositories-missing-modules.png "Plugin Installation through Microsoft Azure DevOps Repositories - Missing Modules dialog") + +After confirming, the build process will start automatically, and a dialog indicating the build progress will be shown: + +![Plugin Installation through Microsoft Azure DevOps Repositories - Building missing modules progress dialog](microsoft-azure-devops-repositories-building-missing-modules.png "Plugin Installation through Microsoft Azure DevOps Repositories - Building missing modules progress dialog") + +Once finished successfully, the project will be loaded. + +> [!NOTE] +> Sometimes, due to an esoteric bug in some versions of Unreal Engine, the build process for Blueprint-only projects may immediately fail after choosing `Yes` in the `Missing Modules` dialog. If this happens, one workaround would be to try to build the plugin inside a temporary C++ project, then copy the `Plugins/SenseGlove` folder containing the binaries, from the C++ project to your Blueprint project and then try to reopen the project again. + +For C++ projects, on Microsoft Windows, right-click on your C++ `.uproject` file and choose `Generate Visual Studio project files`: + +![Plugin Installation through Microsoft Azure DevOps Repositories - Generating Visual Studio project files](microsoft-azure-devops-repositories-generate-visual-studio-project-files.png "Plugin Installation through Microsoft Azure DevOps Repositories - Generating Visual Studio project files") + +A dialog will pop up shows you the progress of generating the Visual Studio project files: + +![Plugin Installation through Microsoft Azure DevOps Repositories - Generating Visual Studio project files progress](microsoft-azure-devops-repositories-generate-visual-studio-project-files-progress.png "Plugin Installation through Microsoft Azure DevOps Repositories - Generating Visual Studio project files progress") + +Once the project files are generated, open up the C++ project in your preferred C++ IDE and build the project. After this, the project can be loaded in the Unreal Editor. + +8. Once the plugin has been built successfully, [ensure the SenseGlove Unreal Engine is enabled and verify the plugin version matches the expected version](../../getting-started/plugin-verify-version-enable/). + +#### Linux Build Instructions + +When building the SenseGlove Unreal Engine Plugin on Linux, you won't encounter the `Missing Modules` dialog that appears on Microsoft Windows. Instead, examining the Unreal Editor logs reveals that the Unreal Editor automatically chooses `No` in response to the `Would you like to rebuild them now?` question as the `No is implied` states. + +```sh +$ /path/to/UnrealEngine/Engine/Binaries/Linux/UnrealEditor \ + /path/to/MyBlueprintProject/MyBlueprintProject.uproject + +LogLinux: Warning: MessageBox: The following modules are missing or built with a different engine version: + + SenseGlove + SenseGloveAndroid + SenseGloveBackend + SenseGloveBackendKismet + SenseGloveBuildHacks + SenseGloveConnect + SenseGloveConnectImpl + SenseGloveConnectKismet + SenseGloveCore + SenseGloveCoreImpl + SenseGloveCoreKismet + SenseGloveDebug + SenseGloveDebugKismet + SenseGloveEditor + SenseGloveInterop + (+8 others, see log for details) + +Would you like to rebuild them now?: Missing MyBlueprintProject Modules: No is implied. +LogCore: Engine exit requested (reason: EngineExit() was called) +LogExit: Preparing to exit. +LogPakFile: Destroying PakPlatformFile +LogExit: Exiting. +LogInit: Tearing down SDL. +Exiting abnormally (error code: 1) +``` + +If your Unreal Engine installation on Linux was obtained from the [GitHub Sources](https://github.com/EpicGames/UnrealEngine) y you can generate the project files using the following command: + +```sh +$ /path/to/UnrealEngine/GenerateProjectFiles.sh \ + /path/to/MyProject/MyProject.uproject \ + -editor -game -makefile +``` + +However, if you are using [a prebuilt Linux version of Unreal Engine](https://www.unrealengine.com/en-US/linux), the main `GenerateProjectFiles.sh` script at the engine root does not exists. Instead, we have to invoke the underlying `GenerateProjectFiles.sh` script located elsewhere. This is a different script which shares the same name and is also present in the GitHub sources. The main `GenerateProjectFiles.sh` script at the engine root is actually a wrapper around this script. + +```sh +$ /path/to/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh \ + /path/to/MyProject/MyProject.uproject \ + -editor -game -makefile +``` + +Still, running the any of the above commands on a Blueprint project results in the following error: + +``` +$ /path/to/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh \ + /path/to/MyBlueprintProject/MyBlueprintProject.uproject \ + -editor -game -makefile + +Setting up Unreal Engine project files... + +Setting up bundled DotNet SDK +Log file: /home/mamadou/.config/Epic/UnrealBuildTool/Log_GPF.txt +Project file formats specified via the command line will be ignored when generating +project files from the editor and other engine tools. + +Consider setting your desired IDE from the editor preferences window, or modify your +BuildConfiguration.xml file with: + + + + + Make + + + + +Generating Make project files: +Discovering modules, targets and source code for project... +Total execution time: 0.35 seconds +Directory '/path/to/MyBlueprintProject/MyBlueprintProject' is missing 'Source' folder. +``` + +For a C++ project, however, the project files will generate without any issues: + +```sh +$ /path/to/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh \ + /path/to/MyCppProject/MyCppProject.uproject \ + -editor -game -makefile + +Setting up Unreal Engine project files... + +Setting up bundled DotNet SDK +Log file: /home/mamadou/.config/Epic/UnrealBuildTool/Log_GPF.txt +Project file formats specified via the command line will be ignored when generating +project files from the editor and other engine tools. + +Consider setting your desired IDE from the editor preferences window, or modify your +BuildConfiguration.xml file with: + + + + + Make + + + + +Generating Make project files: +Discovering modules, targets and source code for project... +Generating data for project indexing... 100% + +Generating QueryTargets data for editor... +Total execution time: 2.98 seconds +``` + +So, the workaround for Blueprint projects is to build the plugin inside a C++ project and then copy the `Plugin/SenseGlove` directory, which contains the built binary modules, to the corresponding directory in your Blueprint project. + +```sh +$ /path/to/UnrealEngine/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh \ + /path/to/MyCppProject/MyCppProject.uproject \ + -editor -game -makefile +$ make MyCppProjectEditor -C /path/to/MyCppProject/ +$ cp -vr \ + /path/to/MyCppProject/Plugins/SenseGlove \ + /path/to/MyBlueprintProject/Plugins/ +$ /path/to/UnrealEngine/Engine/Binaries/Linux/UnrealEditor \ + /path/to/MyBlueprintProject/MyBlueprintProject.uproject +``` diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/README.md new file mode 100644 index 0000000..01a9c51 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/README.md @@ -0,0 +1,29 @@ +# Enabling The SenseGlove Unreal Engine Plugin and Veirfying the Plugin Version + +Enabling the SenseGlove Unreal Engine Plugin is a very simple and straightforward procedure. Furthermore, checking which version of the plugin your project is using may sometimes come in handy, especially if you have multiple versions of the plugin installed on different engine versions or various projects. + +1. Inside the Unreal Editor for your project, select the `Plugins` from the `Edit` menu. + +![Veirfying the SenseGlove Unreal Engine Plugin version - step 1](verify-version-001.png "Veirfying the SenseGlove Unreal Engine Plugin version - step 1") + +2. Once the plugin window/tab is open, start typing `SenseGlove` until you're able to spot the SenseGlove Unreal Engine Plugin. There you could find the plugin version, and other useful resources, such as the documentation website or support contact. + +![Veirfying the SenseGlove Unreal Engine Plugin version - step 2](verify-version-002.png "Veirfying the SenseGlove Unreal Engine Plugin version - step 2") + +3. If the plugin is not enabled, it does not have the checkmark next to it. + +![Enabling the SenseGlove Unreal Engine Plugin - step 1](enable-plugin-001.png "Vnabling the SenseGlove Unreal Engine Plugin - step 1") + +4. It should be easy to click the checkmark and enable the plugin if that's not the case. Once the plugin is enabled, the Unreal Editor asks to be restarted. Click on the `Restart Now` button as this is mandatory to activate the plugin inside your project. + +![Enabling the SenseGlove Unreal Engine Plugin - step 2](enable-plugin-002.png "Vnabling the SenseGlove Unreal Engine Plugin - step 2") + +5. The source code for the plugin might be required to be rebuilt depending on how you have obtained and installed the plugin, usually the Unreal Editor lets you know and does this automatically. If it's required to build the plugin source, and it fails to do so, it usually suggests an alternative approach such as opening your regenerating the project files and rebuilding the project inside a C++ IDE. Once this is done the Editor for your projects re-opens and you can follow steps `1` and `2` in order to verify the plugin's version and availability inside your project. + +## Video Tutorial + +A [video demonstrating the same instructions in more detail](https://youtu.be/iF0JU2kpNhw) is also available on [the SenseGlove YouTube channel](https://www.youtube.com/@senseglove4021). + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-001.png b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-001.png new file mode 100644 index 0000000..fb5a50e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d21124eae24b1a5e10194ddb707a6270c3b823a70d22d415adc3c38d869d4a8 +size 95103 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-002.png b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-002.png new file mode 100644 index 0000000..f6b2e90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/enable-plugin-002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94ac348d168b49a656d54cbb236406c57800032f7a5593566c53332dece2b074 +size 102921 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-001.png b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-001.png new file mode 100644 index 0000000..fcc05e2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-001.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f24ad9fbd8a75dd848b0ad151f42f87118af52fc79a1167996e03af445e65dc3 +size 210052 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-002.png b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-002.png new file mode 100644 index 0000000..3a4ffb8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/plugin-verify-version-enable/verify-version-002.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d631bf85d139a43add23bfbafa58f04c4026210cea61d721710bbe07fbd7455 +size 73313 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/README.md new file mode 100644 index 0000000..d4f0ec6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/README.md @@ -0,0 +1,13 @@ +# SenseCom + +SenseCom (short for SenseGlove Communications) is a background program that runs alongside your Unreal Engine application. Its primary function is to discover, and connect to SenseGlove devices on your system, exchanging data with them, much like a "SteamVR for Haptic Gloves." The SenseGlove Unreal Engine Plugin relies on SenseCom to communicate with any SenseGlove hardware. + +> [!NOTE] +> SenseCom is required only for communication on Windows or Linux. For +> standalone Android devices, the communication functionality is embedded +> directly into your application. + +> [!NOTE] +> For more detailed information and troubleshooting, consult the +> [SenseCom documentation page on SGDocs](https://senseglove.gitlab.io/SenseGloveDocs/sensecom/overview.html), +> please. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/README.md new file mode 100644 index 0000000..24763c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/README.md @@ -0,0 +1,91 @@ +# SenseCom on GNU/Linux + +Follow these steps to quickly set up and run SenseCom on GNU/Linux: + +1. First, obtain the SenseCom binaries from its [GitHub repository](https://github.com/Adjuvo/SenseCom). + +![SenseCom on GNU/Linux - Downloading from GitHub](../sensecom-github-download.png "SenseCom on GNU/Linux - Downloading from GitHub") + +2. Extract the SenseCom `.zip` file to a location on your computer. + +```sh +$ unzip SenseCom-main.zip -d /some/path/ +``` + +3. Navigate to the `SenseCom_Linux_Latest` folder containing the SenseCom binaries for GNU/Linux: + +```sh +$ cd /some/path/SenseCom-main/Linux/SenseCom_Linux_Latest/ +``` + +4. List the files and check the executable permissions for the main SenseCom binary, `SenseCom.x86_64`: + +```sh +$ ls -ahl + +total 20M +drwxr-xr-x 3 mamadou mamadou 5 Apr 10 11:24 . +drwxr-xr-x 3 mamadou mamadou 5 Apr 10 11:24 .. +drwxr-xr-x 7 mamadou mamadou 34 Apr 10 11:24 SenseCom_Data +-rw-r--r-- 1 mamadou mamadou 15K Apr 10 11:24 SenseCom.x86_64 +-rw-r--r-- 1 mamadou mamadou 33M Apr 10 11:24 UnityPlayer.so +``` + +5. As seen above the `SenseCom.x86_64` binary does not have the executable permission. Run the following command to set the executable permission for all users: + +```sh +$ chmod a+x SenseCom.x86_64 +``` + +6. Veirfy the executable permission has been set on `SenseCom.x86_64`: + +```sh +$ ls -l SenseCom.x86_64 + +-rwxr-xr-x 1 mamadou mamadou 14720 Apr 10 11:24 SenseCom.x86_64 +``` + +7. Time to run the SenseCom executable: + +``` +$ ./SenseCom.x86_64 + +[UnityMemory] Configuration Parameters - Can be set up in boot.config + "memorysetup-bucket-allocator-granularity=16" + "memorysetup-bucket-allocator-bucket-count=8" + "memorysetup-bucket-allocator-block-size=4194304" + "memorysetup-bucket-allocator-block-count=1" + "memorysetup-main-allocator-block-size=16777216" + "memorysetup-thread-allocator-block-size=16777216" + "memorysetup-gfx-main-allocator-block-size=16777216" + "memorysetup-gfx-thread-allocator-block-size=16777216" + "memorysetup-cache-allocator-block-size=4194304" + "memorysetup-typetree-allocator-block-size=2097152" + "memorysetup-profiler-bucket-allocator-granularity=16" + "memorysetup-profiler-bucket-allocator-bucket-count=8" + "memorysetup-profiler-bucket-allocator-block-size=4194304" + "memorysetup-profiler-bucket-allocator-block-count=1" + "memorysetup-profiler-allocator-block-size=16777216" + "memorysetup-profiler-editor-allocator-block-size=1048576" + "memorysetup-temp-allocator-size-main=4194304" + "memorysetup-job-temp-allocator-block-size=2097152" + "memorysetup-job-temp-allocator-block-size-background=1048576" + "memorysetup-job-temp-allocator-reduction-small-platforms=262144" + "memorysetup-temp-allocator-size-background-worker=32768" + "memorysetup-temp-allocator-size-job-worker=262144" + "memorysetup-temp-allocator-size-preload-manager=262144" + "memorysetup-temp-allocator-size-nav-mesh-worker=65536" + "memorysetup-temp-allocator-size-audio-worker=65536" + "memorysetup-temp-allocator-size-cloud-worker=32768" + "memorysetup-temp-allocator-size-gfx=262144" +Loading in SingleInstance mode +``` + +8. If you have already paired any glove with your system, SenseCom should recognize and connect to your glove(s) shortly. If not, please follow the instructions on [How to connect to Nova gloves using Blueman Bluetooth Manager](blueman-bluetooth-manager.md) or [How to connect to Nova gloves using Command-line](command-line.md). + +![SenseCom on GNU/Linux - A successful SenseCom and Nova Glove connection](successful-senscom-nova-glove-connection.png "SenseCom on GNU/Linux - A successful SenseCom and Nova Glove connection") + +> [!NOTE] +> For more detailed information and troubleshooting, consult the +> [SenseCom documentation page on SGDocs](https://senseglove.gitlab.io/SenseGloveDocs/sensecom/overview.html), +> please. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-bluetooth-manager.md b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-bluetooth-manager.md new file mode 100644 index 0000000..37bdf41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-bluetooth-manager.md @@ -0,0 +1,87 @@ +# Connect to Nova gloves using Blueman Bluetooth Manager + +Follow these steps to pair a Nova glove with your PC on GNU/Linux usng the Blueman Bluetooth Manager: + +1. Install Blueman Bluetooth Manager on your Linux distribution using the appropriate package manager: + +```sh +# Gentoo +$ emerge -atuv net-wireless/blueman + +# Arch, Manjaro +$ sudo pacman -S blueman + +# CentOS, Fedora, AlmaLinux, Rocky Linux +$ sudo dnf install blueman + +# CentOS/RHEL +$ sudo yum install epel-release +$ sudo yum install blueman + +# Debian, Ubuntu +$ sudo apt install blueman + +# openSUSE +sudo zypper install blueman + +# Solus +$ sudo eopkg install blueman + +# Void Linux +$ sudo xbps-install -S blueman +``` + +> [!IMPORTANT] +> To properly set up the Bluetooth stack on your Linux distribution, additional +> steps may be required. For example, on +> [Gentoo](https://wiki.gentoo.org/wiki/Bluetooth) and +> [Arch](https://wiki.archlinux.org/title/Bluetooth) consult each distribution's +> official guide. + +2. Ensure any glove you would like to pair with and connect to your system is not paired, or connected to any other device, such as another PC or VR headset. + +3. Make sure the glove is turned on. + +4. Start the Blueman Bluetooth Manager and verify you have a recent version installed by selecting `Help > About` from the application's menu. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Version](blueman-version.png "Connect to Nova gloves using Blueman Bluetooth Manager - Version") + +5. If you don't see your glove, click the `Search` button on the toolbar or select `Adapter > Search` from the application's menu to look for new Bluetooth devices. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Search button](blueman-search-button.png "Connect to Nova gloves using Blueman Bluetooth Manager - Search button") + +> [!IMPORTANT] +> Before starting the search operation, ensure that your PC's Bluetooth +> controller is turned on by verifying its status on the right side of the +> toolbar next to the Bluetooth logo. If disabled, the Search button will be +> grayed out. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Verifying the Bluetooth controller status](blueman-verify-bluetooth-controller-status.png "Connect to Nova gloves using Blueman Bluetooth Manager - Verifying the Bluetooth controller status") + +6. A progress bar will appear on the application's status bar. If a new device is found, it will be listed in the main device list area. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Searching and finding a glove](blueman-searching.png "Connect to Nova gloves using Blueman Bluetooth Manager - Searching and finding a glove") + +7. Once the glove is found, click on it to select it. + +8. Either right-click on the device, or go to the `Device` menu, then choose `Pair`. + +9. Blueman will prompt you to pair the glove with a notification. Click `Confirm` to proceed. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Pairing confirmation](blueman-confirm-pairing.png "Connect to Nova gloves using Blueman Bluetooth Manager - Pairing confirmation") + +9. After pairing, either right-click on the device again, or go to the `Device` menu, then choose `Trust`. + +10. If everything has been successful, the key icon indicates successful pairing, and the checkmark confirms the device is trusted. + +![Connect to Nova gloves using Blueman Bluetooth Manager - Paired and trusted](blueman-paired.png "Connect to Nova gloves using Blueman Bluetooth Manager - Paired and trusted") + +11. Follow the [SenseCom on GNU/Linux](./) instructions and you should be able to successfully connect to the newly paired glove from SenseCom. + +## Video Tutorial + +There is also a [video tutorial demonstrating how to connect to Nova gloves on GNU/Linux using Blueman Bluetooth Manager](https://youtu.be/f34ofFkx_Ow). + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-confirm-pairing.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-confirm-pairing.png new file mode 100644 index 0000000..9b46938 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-confirm-pairing.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ada405d7525eef2a7c4c4c2ee5c1589711b9c6f7ed9338b43a0e7debb97b0f97 +size 32559 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-paired.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-paired.png new file mode 100644 index 0000000..7873737 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-paired.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef96d0892d73e93124224c1228c4276252109e2faded768828525d44c2770746 +size 107088 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-search-button.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-search-button.png new file mode 100644 index 0000000..2f41d3f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-search-button.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5685be8aee7d0163d084bb291e3c1481d2ae908c818fef879d2c326a9a87d35 +size 99071 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-searching.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-searching.png new file mode 100644 index 0000000..5bf120d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-searching.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0ca45b8cddeb6ad79af8e8a860a96fd438dcd8284b1fe1f162de575b34bbf30 +size 110574 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-verify-bluetooth-controller-status.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-verify-bluetooth-controller-status.png new file mode 100644 index 0000000..fd6ba0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-verify-bluetooth-controller-status.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9df626a7e0e2cbdc39d1cb368838730ec382f69060eb153edef7e77ace97fe71 +size 90400 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-version.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-version.png new file mode 100644 index 0000000..167b5e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/blueman-version.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:297d689ba2dbc92fee11c35e174ad208e1487b3dad6d55bd18e5fd7bd1353b7b +size 37440 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/command-line.md b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/command-line.md new file mode 100644 index 0000000..e85c597 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/command-line.md @@ -0,0 +1,473 @@ +# Connect to Nova gloves using Command-line + +Follow these steps to pair a Nova glove to your PC on GNU/Linux usng command-line and Bluez: + +1. Some Linux distributions include BlueZ in their default installation. If yours doesn't, install it using the appropriate package manager: + +```sh +# Gentoo +$ emerge -atuv net-wireless/bluez + +# Arch, Manjaro +$ sudo pacman -S bluez + +# CentOS, Fedora, AlmaLinux, Rocky Linux +$ sudo dnf install bluez + +# CentOS/RHEL +$ sudo yum install bluez + +# Debian, Ubuntu +$ sudo apt install bluez + +# openSUSE +sudo zypper install bluez + +# Solus +$ sudo eopkg install bluez + +# Void Linux +$ sudo xbps-install -S bluez +``` + +> [!IMPORTANT] +> To properly set up the Bluetooth stack on your Linux distribution, additional +> steps may be required. For example, on +> [Gentoo](https://wiki.gentoo.org/wiki/Bluetooth) and +> [Arch](https://wiki.archlinux.org/title/Bluetooth) consult each distribution's +> official guide. + +2. Run the following command to ensure that BlueZ is installed and check your `bluetoothctl` version: + +```sh +bluetoothctl version +Version 5.77 +``` + +3. Ensure that the `bluetooth` service is started and running. For example, on Gentoo Linux: + +```sh +$ rc-service bluetooth start +``` + +You might see one of these outputs based on whether it's already running or not: + +```sh + * Starting bluetooth ... +# or + * WARNING: bluetooth has already been started +``` + +4. Ensure any glove you would like to pair with and connect to your system is not paired, or connected to any other device, such as another PC or VR headset. + +5. Make sure the glove is turned on. + +6. Use `bluetoothctl list` or `bluetoothctl show` command to extract your PC's Bluetooth Controller MAC Address which is useful for later on: + +```sh +$ bluetoothctl list + +Controller CC:15:31:90:69:87 BlueZ 5.77 [default] + +$ bluetoothctl show +Controller CC:15:31:90:69:87 (public) + Manufacturer: 0x0002 (2) + Version: 0x0b (11) + Name: BlueZ 5.77 + Alias: BlueZ 5.77 + Class: 0x007c010c (8126732) + Powered: yes + PowerState: on + Discoverable: no + DiscoverableTimeout: 0x0000003c (60) + Pairable: no + UUID: Message Notification Se.. (00001133-0000-1000-8000-00805f9b34fb) + UUID: A/V Remote Control (0000110e-0000-1000-8000-00805f9b34fb) + UUID: OBEX Object Push (00001105-0000-1000-8000-00805f9b34fb) + UUID: Message Access Server (00001132-0000-1000-8000-00805f9b34fb) + UUID: PnP Information (00001200-0000-1000-8000-00805f9b34fb) + UUID: IrMC Sync (00001104-0000-1000-8000-00805f9b34fb) + UUID: Headset (00001108-0000-1000-8000-00805f9b34fb) + UUID: A/V Remote Control Target (0000110c-0000-1000-8000-00805f9b34fb) + UUID: Generic Attribute Profile (00001801-0000-1000-8000-00805f9b34fb) + UUID: Phonebook Access Server (0000112f-0000-1000-8000-00805f9b34fb) + UUID: Audio Sink (0000110b-0000-1000-8000-00805f9b34fb) + UUID: Device Information (0000180a-0000-1000-8000-00805f9b34fb) + UUID: Generic Access Profile (00001800-0000-1000-8000-00805f9b34fb) + UUID: Handsfree Audio Gateway (0000111f-0000-1000-8000-00805f9b34fb) + UUID: Audio Source (0000110a-0000-1000-8000-00805f9b34fb) + UUID: OBEX File Transfer (00001106-0000-1000-8000-00805f9b34fb) + Modalias: usb:v1D6Bp0246d054D + Discovering: no + Roles: central + Roles: peripheral +Advertising Features: + ActiveInstances: 0x00 (0) + SupportedInstances: 0x0c (12) + SupportedIncludes: tx-power + SupportedIncludes: appearance + SupportedIncludes: local-name + SupportedSecondaryChannels: 1M + SupportedSecondaryChannels: 2M + SupportedCapabilities.MinTxPower: 0xffffffde (-34) + SupportedCapabilities.MaxTxPower: 0x0007 (7) + SupportedCapabilities.MaxAdvLen: 0xfb (251) + SupportedCapabilities.MaxScnRspLen: 0xfb (251) + SupportedFeatures: CanSetTxPower + SupportedFeatures: HardwareOffload +``` + +7. Ensure the controller is powered on: + +```sh +$ bluetoothctl power on + +Changing power on succeeded +``` + +8. Enable the agent to listen for Bluetooth events that require user interaction, such as pairing requests and managing device authorizations: + +```sh +$ bluetoothctl agent on +``` + +9. Set the current agent as the default agent: + +```sh +$ bluetoothctl default-agent + +No agent is registered +``` + +10. Set the controller to be discoverable for `180` seconds: + +```sh +$ bluetoothctl discoverable on + +bluetoothctl discoverable on +hci0 new_settings: powered connectable ssp br/edr le secure-conn wide-band-speech +hci0 new_settings: powered connectable discoverable ssp br/edr le secure-conn wide-band-speech +Changing discoverable on succeeded +``` + +> [!NOTE] +> To change the default discoverable timeout, you can set it manually using the +> `bluetoothctl discoverable-timeout` command. + +```sh +$ bluetoothctl discoverable-timeout 300 + +Changing discoverable-timeout 300 succeeded +``` + +11. Then, make the controller pairable as well: + +```sh +$ bluetoothctl pairable on + +hci0 new_settings: powered connectable discoverable bondable ssp br/edr le secure-conn wide-band-speech +Changing pairable on succeeded +``` + +12. Begin scanning for devices: + +```sh +$ bluetoothctl scan on + +SetDiscoveryFilter success +``` + +13. After a few seconds, list the discovered devices: + +bluetoothctl devices + +```sh +Device 78:D2:52:42:33:2F 78-D2-52-42-33-2F +Device 94:3C:C6:47:65:72 NOVA-1217-L +Device AC:F1:08:37:9F:93 LG DSN7CY(93) +Device 70:D6:10:9D:73:8F 70-D6-10-9D-73-8F +Device 7F:2C:8C:8D:09:9F 7F-2C-8C-8D-09-9F +Device F9:56:4B:86:1E:13 F9-56-4B-86-1E-13 +Device C9:A3:07:41:91:B0 iLamp +Device 4F:9D:F8:20:43:F3 Bedroom +Device CC:B1:1A:2D:A8:A4 [TV] UE40J5500 +Device A0:D7:F3:76:14:51 [TV] Samsung AU7100 75 TV +Device 5C:17:CF:1D:35:37 OnePlus 8 Pro +Device E2:F8:03:F6:D8:CB E2-F8-03-F6-D8-CB +Device 38:18:4C:E9:69:7A LE_WH-1000XM3 +Device B8:D6:1A:BA:81:32 Nova 2 0667-L +``` + +> [!NOTE] +> If your device is not listed yet, you can run this command multiple times as +> `bluetoothctl` continues the device discovery in the background. + +14. Use the following command to pair with the discoved glove: + +```sh +$ bluetoothctl pair GLOVE_MAC_ADDRESS +``` + +For example: + +```sh +$ bluetoothctl pair 94:3C:C6:47:65:72 + +Attempting to pair with 94:3C:C6:47:65:72 +[CHG] Device 94:3C:C6:47:65:72 Connected: yes +[CHG] Device 94:3C:C6:47:65:72 Bonded: yes +[CHG] Device 94:3C:C6:47:65:72 UUIDs: 00001101-0000-1000-8000-00805f9b34fb +[CHG] Device 94:3C:C6:47:65:72 ServicesResolved: yes +[CHG] Device 94:3C:C6:47:65:72 Paired: yes +Pairing successful +``` + +> [!NOTE] +> If you encounter the +> `Failed to pair: org.bluez.Error.AuthenticationFailed` error message, it might +> be misleading. Check if there is a line with the glove's MAC address followed by +> `Connected: yes`, which indicates that the connection was actually successful. + +``` +Attempting to pair with 94:3C:C6:47:65:72 +[CHG] Device 94:3C:C6:47:65:72 Connected: yes +Failed to pair: org.bluez.Error.AuthenticationFailed +``` + +15. Mark the device as trusted by issuing the following command: + +``` +$ bluetoothctl trust GLOVE_MAC_ADDRESS +``` + +For example: + +```sh +$ bluetoothctl trust 94:3C:C6:47:65:72 + +[CHG] Device 94:3C:C6:47:65:72 Trusted: yes +Changing 94:3C:C6:47:65:72 trust succeeded +``` + +16. Attempt to connect to the glove again: + +``` +$ bluetoothctl connect GLOVE_MAC_ADDRESS +``` + +For example: + +``` +$ bluetoothctl connect 94:3C:C6:47:65:72 + +Attempting to connect to 94:3C:C6:47:65:72 +[CHG] Device 38:18:4C:E9:69:7A RSSI: 0xffffffd0 (-48) +[CHG] Device 94:3C:C6:47:65:72 Connected: yes +[CHG] Device 94:3C:C6:47:65:72 UUIDs: 00001101-0000-1000-8000-00805f9b34fb +[CHG] Device 94:3C:C6:47:65:72 ServicesResolved: yes +Failed to connect: org.bluez.Error.NotAvailable br-connection-profile-unavailable +``` + +> [!NOTE] +> Again, the error message may be misleading. The connection is often successful +> despite the error. + +17. If desired, you can extract some information from the glove using: + +```sh +$ bluetoothctl info GLOVE_MAC_ADDRESS +``` + +For example: + +```sh +bluetoothctl info 94:3C:C6:47:65:72 +Device 94:3C:C6:47:65:72 (public) + Name: NOVA-1217-L + Alias: NOVA-1217-L + Class: 0x00001f00 (7936) + Paired: yes + Bonded: yes + Trusted: yes + Blocked: no + Connected: yes + LegacyPairing: no + UUID: Serial Port (00001101-0000-1000-8000-00805f9b34fb) +``` + +18. Create an RFCOMM device: + +```sh +$ sudo rfcomm connect /dev/rfcommX GLOVE_MAC_ADDRESS CHANNEL_NUMBER +``` + +For example: + +```sh +$ sudo rfcomm connect /dev/rfcomm0 94:3C:C6:47:65:72 1 + +Connected /dev/rfcomm0 to 94:3C:C6:47:65:72 on channel 1 +Press CTRL-C for hangup +``` + +> [!NOTE] +> The `rfcomm` command requires root permision, so it must be run with `sudo`. + +> [!Tip] +> To determine the channel number, run the following command: + +```sh +$ sdptool browse GLOVE_MAC_ADDRESS +``` + +```sh +$ sdptool browse 94:3C:C6:47:65:72 +Browsing 94:3C:C6:47:65:72 ... +Service Name: SPP_SERVER +Service RecHandle: 0x10000 +Service Class ID List: + "Serial Port" (0x1101) +Protocol Descriptor List: + "L2CAP" (0x0100) + "RFCOMM" (0x0003) + Channel: 1 +Profile Descriptor List: + "Serial Port" (0x1101) + Version: 0x010 +``` + +> [!NOTE] +> If you have more than one glove or in general multiple serial Bluetooth +> devices connected to your device connected to your PC, then `/dev/rfcomm0` may +> already be allocated to another device. In that case, increment the number +> until finding a free rfcomm device. You can query the existing rfcomm devices +> using the command: `ls /dev/rfcomm*`. + +19. Follow the [SenseCom on GNU/Linux](./) instructions and you should be able to successfully connect to the newly paired glove from SenseCom. + +20. Once the SenseCom is closed and we are done with the gloves, we can disconnect the gloves using: + +```sh +$ bluetoothctl disconnect ${SG_DEVICE} +$ sudo rfcomm release ${SG_RFCOMM} +``` + +For example: + +```sh +$ bluetoothctl disconnect 94:3C:C6:47:65:72 +$ sudo rfcomm release /dev/rfcomm0 +``` + +> [!NOTE] +> Again, the `rfcomm` command requires elevated permissions, so it must be run +> with the `sudo` command. + +## Scripts to Easily Connect and Disconnect from a Glove + +You can automate the above tedious process using scripts for connecting and disconnecting gloves. + +`sg-connect.sh`: + +```sh +#!/usr/bin/env sh + +CTRL_DEVICE="YOUR_BLUETOOTH_CONTROLLER_MAC_ADDRESS" +SG_DEVICE="YOUR_SENSEGLOVE_MAC_ADDRESS" +SG_RFCOMM="/dev/rfcomm0" + +bluetoothctl pairable on +bluetoothctl discoverable on +bluetoothctl pair ${SG_DEVICE} +bluetoothctl trust ${SG_DEVICE} +bluetoothctl connect ${SG_DEVICE} +rfcomm connect ${SG_RFCOMM} ${SG_DEVICE} 1 & +``` + +`sg-disconnect.sh`: + +```sh +#!/usr/bin/env sh + +SG_DEVICE="YOUR_SENSEGLOVE_MAC_ADDRESS" +SG_RFCOMM="/dev/rfcomm0" + +bluetoothctl disconnect ${SG_DEVICE} +rfcomm release ${SG_RFCOMM} +``` + +### Example Scripts for a Left-Handed Glove + +```sh +$ cat sg-connect-left.sh + +#!/usr/bin/env sh + +CTRL_DEVICE="CC:15:31:90:69:87" +SG_DEVICE="94:3C:C6:47:65:72" +SG_RFCOMM="/dev/rfcomm0" + +bluetoothctl pairable on +bluetoothctl discoverable on +bluetoothctl pair ${SG_DEVICE} +bluetoothctl trust ${SG_DEVICE} +bluetoothctl connect ${SG_DEVICE} +rfcomm connect ${SG_RFCOMM} ${SG_DEVICE} 1 & + +$ cat sg-disconnect-left.sh + +#!/usr/bin/env sh + +SG_DEVICE="94:3C:C6:47:65:72" +SG_RFCOMM="/dev/rfcomm0" + +bluetoothctl disconnect ${SG_DEVICE} +rfcomm release ${SG_RFCOMM} + +# Set the executable permissions for all users: +$ chmod a+x sg-connect-left.sh +$ chmod a+x sg-disconnect-left.sh + +# Before running SenseCom: + +$ sudo ./sg-connect-left.sh + +Password: + +Changing pairable on succeeded +hci0 new_settings: powered connectable bondable ssp br/edr le secure-conn wide-band-speech +hci0 new_settings: powered connectable discoverable bondable ssp br/edr le secure-conn wide-band-speech +Changing discoverable on succeeded +Attempting to pair with 94:3C:C6:47:65:72 +Failed to pair: org.bluez.Error.AlreadyExists +Changing 94:3C:C6:47:65:72 trust succeeded +Attempting to connect to 94:3C:C6:47:65:72 +hci0 94:3C:C6:47:65:72 type BR/EDR connected eir_len 18 +[CHG] Device 94:3C:C6:47:65:72 Connected: yes +[CHG] Device 94:3C:C6:47:65:72 ServicesResolved: yes +Failed to connect: org.bluez.Error.NotAvailable br-connection-profile-unavailable + +# Run SenseCom in between! + +# Once SenseCom is closed: + +$ sudo ./sg-disconnect-left.sh + +sudo ./sg-disconnect-left.sh + +Password: + +Attempting to disconnect from 94:3C:C6:47:65:72 +hci0 94:3C:C6:47:65:72 type BR/EDR disconnected with reason 2 +[CHG] Device 94:3C:C6:47:65:72 ServicesResolved: no +Successful disconnected +Can't release device: No such device +``` + +## Video Tutorial + +There is also a [video tutorial demonstrating how to connect to Nova gloves on GNU/Linux using the command line](https://youtu.be/Swkk_KmXwq8). + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/successful-senscom-nova-glove-connection.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/successful-senscom-nova-glove-connection.png new file mode 100644 index 0000000..05b905c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/gnu-linux/successful-senscom-nova-glove-connection.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b789e3478a8946df2cafb6017da0fab2230b81bbeadc8adb9ed0ace7fd6ed9 +size 27363 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-connect.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-connect.png new file mode 100644 index 0000000..74bf268 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-connect.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c1556b49ae3b62fb4f064c1c67da838c6dd412bfc456143fc2f63f1fec4051f +size 28539 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-discover.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-discover.png new file mode 100644 index 0000000..806febb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-discover.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b513a2e9c8c967022b71d2b7ac9803d52171e2e8c881a9b977b5c86fa64d6560 +size 19728 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-paired.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-paired.png new file mode 100644 index 0000000..fd7cbc4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device-paired.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c2f9b6b8327025afe25dc3f7ba8155b58eccfbdeccb281890a0c69d11b03890 +size 12702 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device.png new file mode 100644 index 0000000..bcb5835 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-add-bluetooth-device.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e13a78b02cabf43b839ee7088158620658dfe59321243ac23354e03559224845 +size 27086 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings-paired-devices-list.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings-paired-devices-list.png new file mode 100644 index 0000000..d024fed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings-paired-devices-list.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a37bbee401f48671dc720d2587182ca9e335b587685795c711126bcf6c851e54 +size 608691 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings.png new file mode 100644 index 0000000..19194b5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-bluetooth-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eff33dbadfe8031e27a5e562e536257a8769d2772e215093fa4765cee31247f +size 607274 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-run-sensecom.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-run-sensecom.png new file mode 100644 index 0000000..85c0b64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-run-sensecom.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93fcba411f332d00313924789a7825b15949e7a9a32374f4e96fa11a1451fdb8 +size 98628 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-successful-senscom-nova-glove-connection.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-successful-senscom-nova-glove-connection.png new file mode 100644 index 0000000..bc595e7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows-successful-senscom-nova-glove-connection.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49633799ca0a83afa4e3e8a8404f4399f1474abb2153c017aff6ebb0b2b05f62 +size 18867 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows.md b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows.md new file mode 100644 index 0000000..03e1a88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/microsoft-windows.md @@ -0,0 +1,59 @@ +# SenseCom on Microsoft Windows + +Follow these steps to quickly set up and run SenseCom on Microsoft Windows: + +1. First, obtain the SenseCom binaries from its [GitHub repository](https://github.com/Adjuvo/SenseCom). + +![SenseCom on Microsoft Windows - Downloading from GitHub](sensecom-github-download.png "SenseCom on Microsoft Windows - Downloading from GitHub") + +2. Extract the SenseCom `.zip` file to a location on your computer after downloading it. + +3. Ensure any glove you would like to pair with and connect to your system is not paired, or connected to any other device, such as another PC or VR headset. + +4. Make sure the glove is powered on. + +5. Access Windows Bluetooth Settings by navigating to `Settings > Devices > Bluetooth & other devices`. + +![SenseCom on Microsoft Windows - Bluetooth Settings](microsoft-windows-bluetooth-settings.png "SenseCom on Microsoft Windows - Bluetooth Settings") + +6. Click on `Add Bluetooth or other devices`. + +7. In the new window click on `Bluetooth`. + +![SenseCom on Microsoft Windows - Add a Bluetooth device](microsoft-windows-add-bluetooth-device.png "SenseCom on Microsoft Windows - Add a Bluetooth device") + +8. Wait for the glove to be discovered, then click on it. + +![SenseCom on Microsoft Windows - Discovering Bluetooth devices](microsoft-windows-add-bluetooth-device-discover.png "SenseCom on Microsoft Windows - Discovering Bluetooth devices") + +9. Click `Connect` to connect and pair the glove. + +![SenseCom on Microsoft Windows - Connecting to a Bluetooth device](microsoft-windows-add-bluetooth-device-connect.png "SenseCom on Microsoft Windows - Connecting to a Bluetooth device") + +10. Once the glove is paired, you're good to go. Click on `Done`. + +![SenseCom on Microsoft Windows - A paired Bluetooth device](microsoft-windows-add-bluetooth-device-paired.png "SenseCom on Microsoft Windows - A paired Bluetooth device") + +11. Once you are back to Windows Bluetooth settings, verify that the glove is listed as a paired device. + +![SenseCom on Microsoft Windows - Bluetooth settings paired devices list](microsoft-windows-bluetooth-settings-paired-devices-list.png "SenseCom on Microsoft Windows - Bluetooth settings paired devices list") + +12. After successfully paring your glove, it's time to run SenseCom. Navigate to the folder where you extracted SenseCom and go to to `/path/to/extracted/SenseCom/directory/Win/SenseCom_Win_Latest`. + +![SenseCom on Microsoft Windows - Running SenseCom](microsoft-windows-run-sensecom.png "SenseCom on Microsoft Windows - Running SenseCom") + +> [!NOTE] +> Inside the `/path/to/extracted/SenseCom/directory/Win/` folder, a SenseCom +> installer is available if you wish to permanently install it on your +> operating system. + +13. In a moment, SenseCom should recognize and connect to your glove(s): + +![SenseCom on Microsoft Windows - A successful SenseCom and Nova Glove connection](microsoft-windows-successful-senscom-nova-glove-connection.png "SenseCom on Microsoft Windows - A successful SenseCom and Nova Glove connection") + +> [!NOTE] +> For more detailed information and troubleshooting, consult the +> [SenseCom documentation page on SGDocs](https://senseglove.gitlab.io/SenseGloveDocs/sensecom/overview.html), +> please. + +14. At this stage, SenseCom is ready and you should be able to connect to and communicate with SenseGlove devices from inside your Unreal Engine applications. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/sensecom-github-download.png b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/sensecom-github-download.png new file mode 100644 index 0000000..55d3def --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/sensecom/sensecom-github-download.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d07f70e9f6733df9347bef51529240e358971e48985d30bdb9e829792c0f1045 +size 133521 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/README.md new file mode 100644 index 0000000..1e55ab3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/README.md @@ -0,0 +1,52 @@ +# Setting up the Grab/Release System + +Setting up the SenseGlove Grab/Release System involves two main steps. The first step, configuring the virtual hand meshes for both real and virtual hands, is handled automatically by the plugin. The second step, which is also straightforward, involves setting up any existing actor in the Unreal Blueprint Editor that you want to respond to with haptic feedback when your SenseGlove device comes into contact with it: + +1. Open any existing actor in the Unreal Blueprint Editor that you would like to respond to with haptic feedback when your SenseGlove device comes into contact with it. + +2. In the `Components` panel, click the `+ Add` button, then type `SGGrab` into the `Search Components` input field. Once found, click on `SGGrab` to add it to the current actor. You can rename the `SGGrab` component to your desired name. + +![Setting up the Grab/Release System - Adding the SGGrabComponent to an actor](adding-sggrabcomponent.png "Setting up the Grab/Release System - Adding the SGGrabComponent to an actor") + +3. With the `SGGrab` component selected in the `Components` panel, navigate to the `Details` panel. Under the `SenseGlove` section, adjust the settings for the grab/release system to suit your needs. + +![Setting up the Grab/Release System - The SGGrabComponent settings](sggrabcomponent-settings.png "Setting up the Grab/Release System - The SGGrabComponent settings") + +> [!NOTE] +> Any property prefixed with `Attachment` is a parameter directly passed to +> Unreal's `FAttachmentTransformRules` during the grab process, while any +> property prefixed with `Detachment` is a parameter directly passed to +> Unreal's `FDetachmentTransformRules` during the release process. + +> [!CAUTION] +> If `AttachmentSocketName` is unspecified, or incorrect the grabbable object +> will be attached to the root bone of the virtual hand mesh, which probably is +> not ideal. + +4. A key setting for the release system is located within your [`SGPawn`](../setup-senseglove-default-classes/sgpawn.md) instance. In the `Details` panel for your `SGPawn`, find the `Max Number of Hand Velocity Samples` setting and adjust it according to your needs. This setting determines the velocity of objects released from the hands by averaging the specified number of frames. Optimizing this value depends on the framerate of your simulation at runtime. + +![Setting up the Grab/Release System - Max number of hand velocity samples on release](release-max-velocity-samples.png "Setting up the Grab/Release System - Max number of hand velocity samples on release") + +5. One last aspect of the grabbable actors to take into account for the grab system to function properly is the collision settings of their mesh components. If you'd like to prevent the virtual hand meshes from passing through a grabbable actor, it's necessary to set the `Collision Presets` to `Block All` inside the `Details` panel for the actor's mesh components. + +![Setting up the Grab/Release System - Setting Collision Presets to Block All](collision-presets-block-all.png "Setting up the Grab/Release System - Setting Collision Presets to Block All") + +6. Additionally, enabling `Simulation Generates Hit Events` and `Generate Overlap Events` on the actors mesh components is mandatory. These settings are crucial for notifying the grab system when the virtual hand meshes come into contact with the actor. + +![Setting up the Grab/Release System - Enabling Simulation Generates Hit Events and Generate Overlap Events](collision-generate-hit-overlap-events.png "Setting up the Grab/Release System - Enabling Simulation Generates Hit Events and Generate Overlap Events") + +## Video Tutorials + +The following tutorials, though for much older releases of the plugin, still provide in-depth guidance on the same process: + +- [Setting up Grabbing and Haptic Feedback functionalities (SGBasicDemo)](https://youtu.be/jN4VcfXVrTA) + +
+ +
+ +- [SGBasicDemo: setup throwing objects and physics settings for the real and virtual hands](https://youtu.be/K9Qr_LqgTcY) + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/adding-sggrabcomponent.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/adding-sggrabcomponent.png new file mode 100644 index 0000000..66713af --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/adding-sggrabcomponent.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7967c60bb2402e61959d30b8a1418190795d407b68ff6d82badb4c3038d461fb +size 267347 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-generate-hit-overlap-events.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-generate-hit-overlap-events.png new file mode 100644 index 0000000..423f6cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-generate-hit-overlap-events.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:438a07cd41bdfbf52b36a8ea89167aa53a90afa6ef4bfa898fc5476054ff99e5 +size 266140 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-presets-block-all.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-presets-block-all.png new file mode 100644 index 0000000..e80c163 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/collision-presets-block-all.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42ffe3bac1c9d31dd2d99c96bf2bf193e1d01c169bbd23f9e3782aa44afcd576 +size 304683 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/release-max-velocity-samples.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/release-max-velocity-samples.png new file mode 100644 index 0000000..e67c534 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/release-max-velocity-samples.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:299cb9bfb54b5aa0a18121e5dbba0157054361033512d437324079e85cf23b35 +size 276510 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/sggrabcomponent-settings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/sggrabcomponent-settings.png new file mode 100644 index 0000000..0789d1e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-grab-release-system/sggrabcomponent-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84c9c01c794e4e35a2ad2dfbaaab9404ff15ebf6e1f79cdbcfe3ee46be07187b +size 308551 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/README.md new file mode 100644 index 0000000..a6884a7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/README.md @@ -0,0 +1,15 @@ +# Setting Up the SenseGlove Default Classes + +Setting up the default SenseGlove classes is recommended if you want to take full advantage of the quality-of-life features provided by the SenseGlove Unreal Engine Plugin. These features are designed to streamline the development process within the Unreal Engine environment. For instance, if you need a quick setup with a virtual hand mesh already integrated into a pawn, enabling you to get started with your project in just a few minutes, it is essential to configure the default classes and familiarize yourself with these classes. + +If you wish to extend the functionality of these classes, you can do so by subclassing them. The default SenseGlove classes, which are prefixed with `SG`, include: + +- [SGGameModeBase](ggamemodebase.md) +- [SGPawn](sgpawn.md) +- [SGPlayerController](sgplayercontroller.md) +- [SGGameInstance](sggameinstance.md) +- [SGGameUserSettings](sggameusersettings.md) + +However, if you prefer a different approach or do not require the functionality provided by the default SenseGlove classes, you can opt to utilize individual components like `SGVirtualHandComponent`, `SGWristTrackerComponent`, etc., directly within your own actors. Alternatively, you can develop a completely custom system from scratch, leveraging the low-level SenseGlove [C++](../../low-level-api/cpp.md) or [Blueprint](../../low-level-api/blueprint.md) APIs. + +Additionally, you can [enforce setting the default SenseGlove classes during initialization](../../plugin-configuration/plugin-settings/initialization/) via [the plugin settings](../../plugin-configuration/plugin-settings/), if desired. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/add-blueprint-class.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/add-blueprint-class.png new file mode 100644 index 0000000..cc140b8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/add-blueprint-class.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:014ed6eaa0a4431ca2823c301cfc2a0bcbbd2b086d0ceb0f40d7ae3a7f6b4cab +size 629157 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameinstance.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameinstance.png new file mode 100644 index 0000000..e6e2171 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameinstance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac3e5dd7af2fe44ef35caa3b6b7ca7500f8cf2af2bd18f8997046c5aa6954ef0 +size 86306 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggamemodebase.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggamemodebase.png new file mode 100644 index 0000000..dbc1978 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggamemodebase.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70a8cc536400b66efdb2496678aada9707bf2818ad0722f9ade5b20464625936 +size 90703 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameusersettings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameusersettings.png new file mode 100644 index 0000000..04ae53b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sggameusersettings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a42f815d7fce0d08fa14b0c59f2f2e9cf284c71f6b7df733184fe8e0b12fb4e +size 87507 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgpawn.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgpawn.png new file mode 100644 index 0000000..cb213d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgpawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ed1de3490b4d8d175de4b11b2492bafdbad7f5288b580e9f430b099490f7116 +size 84972 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgplayercontroller.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgplayercontroller.png new file mode 100644 index 0000000..1944083 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class-sgplayercontroller.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa3ef67c83ad84e646485a18fe693ccccdb08f2afccdc46a5592467142071ac7 +size 90586 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class.png new file mode 100644 index 0000000..88aa8f9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/pick-parent-class.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c2f251517e602dcdc353498bfd703c15afab262d3234b2b7200d46205abbb09 +size 69918 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/rename-new-blueprint.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/rename-new-blueprint.png new file mode 100644 index 0000000..b6abe93 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/rename-new-blueprint.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bb0816bf2579c10e06ca55aff8241ce02be20d2a427d97f76a0581bcfc39c58 +size 83247 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameinstance.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameinstance.png new file mode 100644 index 0000000..a46bcac --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameinstance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:345cb67fe7530dc87b1dbd1db7b7c8648e6f3cf8d3b3fbfe8c6345b50c02b3b4 +size 92076 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggamemodebase.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggamemodebase.png new file mode 100644 index 0000000..4d95c33 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggamemodebase.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:509f9ef6b791f35dde4788b1996548e6a3a3fb89a6d4d9f982a3916fa5eed915 +size 88632 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameusersettings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameusersettings.png new file mode 100644 index 0000000..3a77cd7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sggameusersettings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:417fc3c195904bb62192c52dbfaf9981b70efdd2e1ab7c3cf34704d9a71d6d16 +size 92836 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgpawn.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgpawn.png new file mode 100644 index 0000000..c4e6368 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgpawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed51abbd640c9e67d2aeaf6d7ff26ff9078512495f262463292e412d3797bcfc +size 88708 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgplayercontroller.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgplayercontroller.png new file mode 100644 index 0000000..7f01a19 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/renamed-new-blueprint-sgplayercontroller.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:610d54eb4d32f7aaab4c34c4f4bc6084ffb90144bf0031152d1ae5a30f69289a +size 90938 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameinstance.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameinstance.png new file mode 100644 index 0000000..fbbabda --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameinstance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccad58f45a086d45a1a403050e470964c9f372e9f7618911096289f61ed1fa87 +size 147231 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggamemode.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggamemode.png new file mode 100644 index 0000000..fb18ab3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggamemode.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36e3d7cefcced7ac71dc1d9fc05d8aec6cfea1afc8ed1bff995a3a73f6ce6425 +size 151315 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameusersettings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameusersettings.png new file mode 100644 index 0000000..e2174d6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsggameusersettings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dffffb3033e74724d643c89f1ab2d519e634f34dad1cd4db942efcd8faa6856 +size 233679 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgpawn.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgpawn.png new file mode 100644 index 0000000..abd9679 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgpawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3d3d29e86458ad052b3eee8aeeedc50696a80caa9445c2887378a6025fdd49b +size 134593 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgplayercontroller.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgplayercontroller.png new file mode 100644 index 0000000..3ceafbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-bpsgplayercontroller.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d382cf66dfe5778737fc6fab30a7633cd999193b86625a54df8000478e59ee7 +size 134510 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameinstance.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameinstance.png new file mode 100644 index 0000000..5654beb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameinstance.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:248e8b8f84c9803f28e8c42188d5a1e530fa5ffb1dd1bb808d7eebd88541d3c5 +size 144390 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggamemodebase.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggamemodebase.png new file mode 100644 index 0000000..fa784c3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggamemodebase.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14ec2556e4646600ee5cc44992a054bac0803b398f350bbc0e3954d10c9ceb03 +size 147735 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameusersettings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameusersettings.png new file mode 100644 index 0000000..d386eea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sggameusersettings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bced58b2232d7d878853b2bc92066df46e20c1a5d2a020009983fe8543181899 +size 233712 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgpawn.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgpawn.png new file mode 100644 index 0000000..e687a3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgpawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0752793e150749040a0e28c14130bddedca46724f0e7f10692abd795d32a050 +size 134215 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgplayercontroller.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgplayercontroller.png new file mode 100644 index 0000000..e687a3d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/set-default-class-sgplayercontroller.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0752793e150749040a0e28c14130bddedca46724f0e7f10692abd795d32a050 +size 134215 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameinstance.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameinstance.md new file mode 100644 index 0000000..58b62fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameinstance.md @@ -0,0 +1,44 @@ +# Setting Up SGGameInstance + +Setting `SGGameInstance` as the default `Game Instance Class` is very straightforward. You can do this by navigating to `Project Settings > Project > Maps & Modes > Game Instance > Game Instance Class`. + +![Setting Up SGGameInstance - Setting the default class SGGameInstance](set-default-class-sggameinstance.png "Setting Up SGGameInstance - Setting the default class SGGameInstance") + +> [!TIP] +> For greater control and customization, consider +> [extending the SGGameInstance](#extending-sggameinstance). + +> [!IMPORTANT] +> Currently, setting `SGGameModeBase` or a subclass of it as the default +> `Game Instance Class` is not a strict requirement. However, if you intend to +> use any [SenseGlove console command](../../misc/console-commands/) it becomes +> mandatory. If not set, SenseGlove console commands will not be recognized by +> Unreal Engine. + +## Extending SGGameInstance + +Follow these steps to extend and set up your own version of `SGGameInstance`: + +1. In the Content Browser, click the `+ Add` button, then select `Blueprint Class from the menu`. Alternatively, right-click inside the Content Browser and choose `Blueprint Class` from the context menu. + +![Extending SGGameInstance - Adding a Blueprint Class](add-blueprint-class.png "Extending SGGameInstance - Adding a Blueprint Class") + +2. A dialog will appear asking you to choose a parent class. Click on the `ALL CLASSES` section to expand the list of available classes. + +![Extending SGGameInstance - Picking a Parent Class](pick-parent-class.png "Extending SGGameInstance - Picking a Parent Class") + +3. In the expanded `ALL CLASSES` section, start typing `SGGameInstance` in the Search box. When `SGGameInstance` appears, select it and click the `Select` button to create your new Blueprint class based on it. + +![Extending SGGameInstance - Picking SGGameInstance as the Parent Class](pick-parent-class-sggameinstance.png "Extending SGGameInstance - Picking SGGameInstance as the Parent Class") + +4. After returning to the Content Browser, the Unreal Editor will prompt you to rename `NewBlueprint` to your desired class name. You can rename the class at any time by pressing `F2` or by right-clicking on it and selecting `Rename` from the context menu. + +![Extending SGGameInstance - Renaming NewBlueprint](rename-new-blueprint.png "Extending SGGameInstance - Renaming NewBlueprint") + +5. Once you have renamed the `NewBlueprint` class to your desired name, click on `Save All` to save the new class to disk. + +![Extending SGGameInstance - Renamed NewBlueprint to BP_SGGameInstance](renamed-new-blueprint-sggameinstance.png "Extending SGGameInstance - Renamed NewBlueprint to BP_SGGameInstance") + +6. Finally, set your newly created subclass of `SGGameInstance` as the default `Game Instance Class`. You can do this by navigating to `Project Settings > Project > Maps & Modes > Game Instance > Game Instance Class`. + +![Extending SGGameInstance - Setting the default class BP_SGGameInstance](set-default-class-bpsggameinstance.png "Extending SGGameInstance - Setting the default class BP_SGGameInstance") diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggamemodebase.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggamemodebase.md new file mode 100644 index 0000000..f6513bc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggamemodebase.md @@ -0,0 +1,58 @@ +# Setting Up SGGameModeBase + +After [installing](../installation/) and [enabling](../plugin-verify-version-enable/) the SenseGlove Unreal Engine Plugin, the easiest and most straightforward approach to get started is to just set the default GameMode to `SGGameModeBase` from `Edit > Project Settings... > Maps & Modes > Default Mode > Default GameMode`. By doing this, the `Default Pawn Class` is automatically set to [`SGPawn`](sgpawn.md), and the `Player Controller Class` is set to [`SGPlayerController`](sgplayercontroller.md). This setup ensures that a SenseGlove pawn will automatically spawn when you hit the play button in the editor. + +![Setting Up SGGameModeBase - Setting the default class SGGameModeBase](set-default-class-sggamemodebase.png "Setting Up SGGameModeBase - Setting the default class SGGameModeBase") + +> [!TIP] +> For greater control and customization, consider +> [extending the SGGameModeBase](#extending-sggamemodebase). + +> [!NOTE] +> Currently, setting `SGGameModeBase` or a subclass of it as the +> `Default GameMode` is not a strict requirement. Its primary function is to +> ensure that a default `SGPawn` and `SGPlayerController` are set. However, this +> might change in the future, and it could become a mandatory setting. + +> [!IMPORTANT] +> While setting `SGGameModeBase` as the `Default GameMode` will automatically +> spawn the default SGPawn at BeginPlay and initiate communication with the +> SenseGlove devices, it will not display any virtual hands in your simulation +> by default. You might still need to configure the +> [Virtual Hand Meshes](../setup-virtual-hand-meshes/) and the +> [Wrist Tracking Hardware](../setup-wrist-tracking-hardware/) separately. + +> [!IMPORTANT] +> Before starting the simulation in the editor, make sure that +> [SenseCom](../sensecom/) is running and +> [XR_EXT_hand_tracking](../enabling-xr-ext-hand-tracking-vr-headsets/) +> is enabled. Without these, your simulation will not receive hand pose data +> from the SenseGlove devices. + +## Extending SGGameModeBase + +Follow these steps to extend and set up your own version of `SGGameModeBase`: + +1. In the Content Browser, click the `+ Add` button, then select `Blueprint Class from the menu`. Alternatively, right-click inside the Content Browser and choose `Blueprint Class` from the context menu. + +![Extending SGGameModeBase - Adding a Blueprint Class](add-blueprint-class.png "Extending SGGameModeBase - Adding a Blueprint Class") + +2. A dialog will appear asking you to choose a parent class. Click on the `ALL CLASSES` section to expand the list of available classes. + +![Extending SGGameModeBase - Picking a Parent Class](pick-parent-class.png "Extending SGGameModeBase - Picking a Parent Class") + +3. In the expanded `ALL CLASSES` section, start typing `SGGameModeBase` in the Search box. When `SGGameModeBase` appears, select it and click the `Select` button to create your new Blueprint class based on it. + +![Extending SGGameModeBase - Picking SGGameModeBase as the Parent Class](pick-parent-class-sggamemodebase.png "Extending SGGameModeBase - Picking SGGameModeBase as the Parent Class") + +4. After returning to the Content Browser, the Unreal Editor will prompt you to rename `NewBlueprint` to your desired class name. You can rename the class at any time by pressing `F2` or by right-clicking on it and selecting `Rename` from the context menu. + +![Extending SGGameModeBase - Renaming NewBlueprint](rename-new-blueprint.png "Extending SGGameModeBase - Renaming NewBlueprint") + +5. Once you have renamed the `NewBlueprint` class to your desired name, click on `Save All` to save the new class to disk. + +![Extending SGGameModeBase - Renamed NewBlueprint to BP_SGGameMode](renamed-new-blueprint-sggamemodebase.png "Extending SGGameModeBase - Renamed NewBlueprint to BP_SGGameMode") + +6. Finally, set your newly created subclass of `SGGameModeBase` as the `Default GameMode`. You can do this by navigating to `Project Settings > Project > Maps & Modes > Default Modes > Default GameMode`. + +![Extending SGGameModeBase - Setting the default class BP_SGGameMode](set-default-class-bpsggamemode.png "Extending SGGameModeBase - Setting the default class BP_SGGameMode") diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameusersettings.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameusersettings.md new file mode 100644 index 0000000..9dea79d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sggameusersettings.md @@ -0,0 +1,45 @@ +# Setting Up SGGameUserSettings + +Setting `SGGameUserSettings` as the default `Game User Settings Class` is very straightforward. You can do this by navigating to `Project Settings > Engine > General Settings > Default Classes > Advanced > Game User Settings Class`. Once you change the default `Game User Settings Class` the Unreal Editor will prompt you with `Restart required to apply new settings`. For the changes to take effect, click on the `Restart Now` button and wait for the editor to reopen. + +![Setting Up SGGameUserSettings - Setting the default class SGGameUserSettings](set-default-class-sggameusersettings.png "Setting Up SGGameUserSettings - Setting the default class SGGameUserSettings") + +> [!TIP] +> For greater control and customization, consider +> [extending the SGGameUserSettings](#extending-sggameusersettings). + +> [!IMPORTANT] +> Currently, setting `SGGameUserSettings` or a subclass of it as the default +> `Game User Settings Class` is not a strict requirement. However, if you intend +> to use any +> [SGGameUserSettings-related SenseGlove console command](../../misc/console-commands/) +> it becomes mandatory. If not set, calling any SGGameUserSettings-related +> SenseGlove console command will cause your simulation or editor to crash. + +## Extending SGGameUserSettings + +Follow these steps to extend and set up your own version of `SGGameUserSettings`: + +1. In the Content Browser, click the `+ Add` button, then select `Blueprint Class from the menu`. Alternatively, right-click inside the Content Browser and choose `Blueprint Class` from the context menu. + +![Extending SGGameUserSettings - Adding a Blueprint Class](add-blueprint-class.png "Extending SGGameUserSettings - Adding a Blueprint Class") + +2. A dialog will appear asking you to choose a parent class. Click on the `ALL CLASSES` section to expand the list of available classes. + +![Extending SGGameUserSettings - Picking a Parent Class](pick-parent-class.png "Extending SGGameUserSettings - Picking a Parent Class") + +3. In the expanded `ALL CLASSES` section, start typing `SGGameUserSettings` in the Search box. When `SGGameUserSettings` appears, select it and click the `Select` button to create your new Blueprint class based on it. + +![Extending SGGameUserSettings - Picking SGGameUserSettings as the Parent Class](pick-parent-class-sggameusersettings.png "Extending SGGameUserSettings - Picking SGGameUserSettings as the Parent Class") + +4. After returning to the Content Browser, the Unreal Editor will prompt you to rename `NewBlueprint` to your desired class name. You can rename the class at any time by pressing `F2` or by right-clicking on it and selecting `Rename` from the context menu. + +![Extending SGGameUserSettings - Renaming NewBlueprint](rename-new-blueprint.png "Extending SGGameUserSettings - Renaming NewBlueprint") + +5. Once you have renamed the `NewBlueprint` class to your desired name, click on `Save All` to save the new class to disk. + +![Extending SGGameUserSettings - Renamed NewBlueprint to BP_SGGameUserSettings](renamed-new-blueprint-sggameusersettings.png "Extending SGGameUserSettings - Renamed NewBlueprint to BP_SGGameUserSettings") + +6. Finally, set your newly created subclass of `SGGameUserSettings` as the default `Game User Settings Class`. You can do this by navigating to `Project Settings > Engine > General Settings > Default Classes > Advanced > Game User Settings Class`. Once you change the default `Game User Settings Class` the Unreal Editor will prompt you with `Restart required to apply new settings`. For the changes to take effect, click on the `Restart Now` button and wait for the editor to reopen. + +![Extending SGGameUserSettings - Setting the default class BP_SGGameUserSettings](set-default-class-bpsggameusersettings.png "Extending SGGameUserSettings - Setting the default class BP_SGGameUserSettings") diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-components.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-components.png new file mode 100644 index 0000000..b245f87 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-components.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c3bc0dc61c609f29f30006bbb3c403a2491aa0b78cd37081039c664c81f65b2 +size 188568 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-filtered-details-panel.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-filtered-details-panel.png new file mode 100644 index 0000000..ec617a0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn-filtered-details-panel.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a69392006d8097064617663fab9f4fb0b124ac83197d29978713f0db6ef02eb +size 84663 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn.md new file mode 100644 index 0000000..f710635 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgpawn.md @@ -0,0 +1,76 @@ +# Setting Up SGPawn + +Depening on the Unreal Engine version and your project's type and configuration, you might be able to set `SGPawn` as the `Default Pawn Class` by navigating to `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Default Pawn Class`. However, regardless of the engine version or project type and configuration, you can always configure this by opening your [`Default GameMode`](sggamemodebase.md) and setting the `Default Pawn Class` directly from there. Once set, click on the `Compile` button and save your game mode Blueprint asset. + +![Setting Up SGPawn - Setting the default class SGPawn](set-default-class-sgpawn.png "Setting Up SGPawn - Setting the default class SGPawn") + +> [!TIP] +> For greater control and customization, consider +> [extending the SGPawn](#extending-sgpawn). + +> [!CAUTION] +> Setting `SGPawn` or a subclass of it as the `Default Pawn Class` without +> setting +> [`SGPlayerController` or a subclass of it as the default `Player Controller Class`](sgplayercontroller.md) +> will cause the `SGPawn` to not function properly. So, it's a strict +> requirement. + +> [!IMPORTANT] +> To have a fully functional `SGPawn`, simply setting it up is not enough. You +> still need to +> [setup the Virtual Hand Meshes](../../getting-started/setup-virtual-hand-meshes/) +> and +> [setup the Wrist Tracking Hardware](../../getting-started/setup-wrist-tracking-hardware/). + +## Extending SGPawn + +Follow these steps to extend and set up your own version of `SGPawn`: + +1. In the Content Browser, click the `+ Add` button, then select `Blueprint Class from the menu`. Alternatively, right-click inside the Content Browser and choose `Blueprint Class` from the context menu. + +![Extending SGPawn - Adding a Blueprint Class](add-blueprint-class.png "Extending SGPawn - Adding a Blueprint Class") + +2. A dialog will appear asking you to choose a parent class. Click on the `ALL CLASSES` section to expand the list of available classes. + +![Extending SGPawn - Picking a Parent Class](pick-parent-class.png "Extending SGPawn - Picking a Parent Class") + +3. In the expanded `ALL CLASSES` section, start typing `SGPawn` in the Search box. When `SGPawn` appears, select it and click the `Select` button to create your new Blueprint class based on it. + +![Extending SGPawn - Picking SGPawn as the Parent Class](pick-parent-class-sgpawn.png "Extending SGPawn - Picking SGPawn as the Parent Class") + +4. After returning to the Content Browser, the Unreal Editor will prompt you to rename `NewBlueprint` to your desired class name. You can rename the class at any time by pressing `F2` or by right-clicking on it and selecting `Rename` from the context menu. + +![Extending SGPawn - Renaming NewBlueprint](rename-new-blueprint.png "Extending SGPawn - Renaming NewBlueprint") + +5. Once you have renamed the `NewBlueprint` class to your desired name, click on `Save All` to save the new class to disk. + +![Extending SGPawn - Renamed NewBlueprint to BP_SGPawn](renamed-new-blueprint-sgpawn.png "Extending SGPawn - Renamed NewBlueprint to BP_SGPawn") + +6. Finally, set your newly created subclass of `SGPawn` as the `Default Pawn Class`. Depening on the Unreal Engine version and your project's type and configuration, you might be able do this by navigating to `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Default Pawn Class`. However, regardless of the engine version or project type and configuration, you can always configure this by opening your [`Default GameMode`](sggamemodebase.md) and setting the `Default Pawn Class` directly from there. Once set, click on the `Compile` button and save your game mode Blueprint asset. + +![Extending SGPawn - Setting the default class BP_SGPawn](set-default-class-bpsgpawn.png "Extending SGPawn - Setting the default class BP_SGPawn") + +> [!IMPORTANT] +> To have a fully functional `SGPawn`, simply setting it up is not enough. You +> still need to +> [setup the Virtual Hand Meshes](../../getting-started/setup-virtual-hand-meshes/) +> and +> [setup the Wrist Tracking Hardware](../../getting-started/setup-wrist-tracking-hardware/). + +## Customizing SGPawn + +Customizing the `SGPawn` after subclassing is straightforward and flexible. + +The `SGPawn` class includes several key subcomponents: + +- `Wrist Tracker Left` and `Wrist Tracker Right` of type `SGWristTrackerComponent`. +- `HandLeft` and `HandRight` of type `SGVirtualHandComponent` and represent the virtual hand models visible to the user in the simulation. +- `RealHandLeft` and `RealHandRight` of type `SGVirtualHandComponent`. By default, these are hidden and represent the real hands within the simulation. These components are useful if you need to separate the rendering of the virtual hands from the real hands. For instance, the virtual hands typically have collisions and cannot pass through objects, while the real hands are not constrained in this way. + +![Customizing SGPawn - The SGPawn components](sgpawn-components.png "Customizing SGPawn - The SGPawn components") + +Also, it's possible to filter the properties for these SenseGlove components inside the `Details` panel inside the `SGPawn` Blueprint Editor by typing the word `SenseGlove` inside `Search` box of the `Details` panel. + +![Customizing SGPawn - Filtered SGPawn Details panel](sgpawn-filtered-details-panel.png "Customizing SGPawn - Filtered SGPawn Details panel") + +Please visit [how to setup the Virtual Hand Meshes](../../getting-started/setup-virtual-hand-meshes/), [The Virtual Hand Mesh Settings](../../plugin-configuration/plugin-settings/virtual-hand/mesh.md), and [how to setup the Wrist Tracking Hardware](../../getting-started/setup-wrist-tracking-hardware/) sections for more information. diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgplayercontroller.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgplayercontroller.md new file mode 100644 index 0000000..9b5f891 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-senseglove-default-classes/sgplayercontroller.md @@ -0,0 +1,43 @@ +# Setting Up SGPlayerController + +Depening on the Unreal Engine version and your project's type and configuration, you might be able to set `SGPlayerController` as the default `Player Controller Class` by navigating to `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Player Controller Class`. However, regardless of the engine version or project type and configuration, you can always configure this by opening your [`Default GameMode`](sggamemodebase.md) and setting the default `Player Controller Class` directly from there. Once set, click on the `Compile` button and save your game mode Blueprint asset. + +![Setting Up SGPlayerController - Setting the default class SGGameModeBase](set-default-class-sgplayercontroller.png "Setting Up SGPlayerController - Setting default the class SGGameModeBase") + +> [!TIP] +> For greater control and customization, consider +> [extending the SGPlayerController](#extending-sgplayercontroller). + +> [!CAUTION] +> Setting `SGPlayerController` or a subclass of it as the default +> `Player Controller Class` without setting +> [`SGPawn` or a subclass of it as the `Default Pawn Class`](sgpawn.md) will +> cause your simulation or editor to crash. So, it's a strict requirement. + +## Extending SGPlayerController + +Follow these steps to extend and set up your own version of `SGPlayerController`: + +1. In the Content Browser, click the `+ Add` button, then select `Blueprint Class from the menu`. Alternatively, right-click inside the Content Browser and choose `Blueprint Class` from the context menu. + +![Extending SGPlayerController - Adding a Blueprint Class](add-blueprint-class.png "Extending SGPlayerController - Adding a Blueprint Class") + +2. A dialog will appear asking you to choose a parent class. Click on the `ALL CLASSES` section to expand the list of available classes. + +![Extending SGPlayerController - Picking a Parent Class](pick-parent-class.png "Extending SGPlayerController - Picking a Parent Class") + +3. In the expanded `ALL CLASSES` section, start typing `SGPlayerController` in the Search box. When `SGPlayerController` appears, select it and click the `Select` button to create your new Blueprint class based on it. + +![Extending SGPlayerController - Picking SGPlayerController as the Parent Class](pick-parent-class-sgplayercontroller.png "Extending SGPlayerController - Picking SGPlayerController as the Parent Class") + +4. After returning to the Content Browser, the Unreal Editor will prompt you to rename `NewBlueprint` to your desired class name. You can rename the class at any time by pressing `F2` or by right-clicking on it and selecting `Rename` from the context menu. + +![Extending SGPlayerController - Renaming NewBlueprint](rename-new-blueprint.png "Extending SGPlayerController - Renaming NewBlueprint") + +5. Once you have renamed the `NewBlueprint` class to your desired name, click on `Save All` to save the new class to disk. + +![Extending SGPlayerController - Renamed NewBlueprint to BP_SGPlayerController](renamed-new-blueprint-sgplayercontroller.png "Extending SGPlayerController - Renamed NewBlueprint to BP_SGPlayerController") + +6. Finally, set your newly created subclass of `SGPlayerController` as the default `Player Controller Class`. Depening on the Unreal Engine version and your project's type and configuration, you might be able do this by navigating to `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Player Controller Class`. However, regardless of the engine version or project type and configuration, you can always configure this by opening your [`Default GameMode`](sggamemodebase.md) and setting the default `Player Controller Class` directly from there. Once set, click on the `Compile` button and save your game mode Blueprint asset. + +![Extending SGPlayerController - Setting the default class BP_SGGameMode](set-default-class-bpsgplayercontroller.png "Extending SGPlayerController - Setting the default class BP_SGGameMode") diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/README.md new file mode 100644 index 0000000..f6ed4dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/README.md @@ -0,0 +1,38 @@ +# Setting up the Touch System + +Configuring the SenseGlove Touch System involves two key steps. The first step, which is automatically handled by the plugin, is configuring the virtual hand meshes for both real and virtual hands. The second step, which is also straightforward, involves setting up any existing actor in the Unreal Blueprint Editor that you want to respond to with haptic feedback when your SenseGlove device comes into contact with it: + +1. Open any existing actor in the Unreal Blueprint Editor that you would like to respond to with haptic feedback when your SenseGlove device comes into contact with it. + +2. In the `Components` panel, click the `+ Add` button, then type `SGTouch` into the `Search Components` input field. Once found, click on `SGTouch` to add it to the current actor. You can rename the `SGTouch` component to your desired name. + +![Setting up the Touch System - Adding the SGTouchComponent to an actor](adding-sgtouchcomponent.png "Setting up the Touch System - Adding the SGTouchComponent to an actor") + +3. With the `SGTouch` component selected in the `Components` panel, navigate to the `Details` panel. Under the `SenseGlove` section, adjust the settings for the touch system to suit your needs. + +![Setting up the Touch System - The SGTouchComponent settings](sgtouchcomponent-settings.png "Setting up the Touch System - The SGTouchComponent settings") + +4. One last aspect of the touchable actors to take into account for the touch system to function properly is the collision settings of their mesh components. If you'd like to prevent the virtual hand meshes from passing through a touchable actor, it's necessary to set the `Collision Presets` to `Block All` inside the `Details` panel for the actor's mesh components. + +![Setting up the Touch System - Setting Collision Presets to Block All](collision-presets-block-all.png "Setting up the Touch System - Setting Collision Presets to Block All") + +5. Additionally, enabling `Simulation Generates Hit Events` and `Generate Overlap Events` on the actors mesh components is mandatory. These settings are crucial for notifying the touch system when the virtual hand meshes come into contact with the actor. + +![Setting up the Touch System - Enabling Simulation Generates Hit Events and Generate Overlap Events](collision-generate-hit-overlap-events.png "Setting up the Touch System - Enabling Simulation Generates Hit Events and Generate Overlap Events") + + +## Video Tutorials + +The following tutorials, though for much older releases of the plugin, still provide in-depth guidance on the same process: + +- [Setting up Grabbing and Haptic Feedback functionalities (SGBasicDemo)](https://youtu.be/jN4VcfXVrTA) + +
+ +
+ +- [SGBasicDemo: setup throwing objects and physics settings for the real and virtual hands](https://youtu.be/K9Qr_LqgTcY) + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/adding-sgtouchcomponent.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/adding-sgtouchcomponent.png new file mode 100644 index 0000000..6889aad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/adding-sgtouchcomponent.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06d1d4347c6a558f1fa8343775642bb1328584a79c4b939b54acf8ba5a135fb4 +size 267405 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-generate-hit-overlap-events.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-generate-hit-overlap-events.png new file mode 100644 index 0000000..423f6cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-generate-hit-overlap-events.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:438a07cd41bdfbf52b36a8ea89167aa53a90afa6ef4bfa898fc5476054ff99e5 +size 266140 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-presets-block-all.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-presets-block-all.png new file mode 100644 index 0000000..e80c163 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/collision-presets-block-all.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42ffe3bac1c9d31dd2d99c96bf2bf193e1d01c169bbd23f9e3782aa44afcd576 +size 304683 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/sgtouchcomponent-settings.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/sgtouchcomponent-settings.png new file mode 100644 index 0000000..dc31816 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-touch-system/sgtouchcomponent-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205e843cc7e39a61c146fbd230de2ec9237f4e662ce8e7e58deddc79ab87bdfc +size 296193 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/README.md new file mode 100644 index 0000000..736afe4 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/README.md @@ -0,0 +1,287 @@ +# Setting Up the Virtual Hand Meshes + +Setting up Virtual Hand Meshes involves two key steps: + +1. Importing the virtual hand meshes into your project. +2. Configuring the virtual hand settings. + +In this section we focus on the first part. For detailed information on step two, please visit [the Virtual Hand configuration section](../../plugin-configuration/plugin-settings/virtual-hand/). + +## Compatible Virtual Hand Meshes + +The SenseGlove Unreal Engine Plugin is compatible with any virtual hand mesh that adheres to the Epic rig and bone structure. Additionally, the virtual hand meshes must be exported with specific settings to meet all requirements. If you're planning to model and rig your own virtual hand meshes, the [Epic FBX Skeletal Mesh Pipeline](https://dev.epicgames.com/documentation/en-us/unreal-engine/fbx-skeletal-mesh-pipeline) is a useful starting point. + +However, if you're looking to get up and running with the SenseGlove Unreal Engine Plugin quickly, the process is much simpler. Unreal Engine has included two sets of compatible virtual hand models with the Unreal Engine VR Template since version `5.1`. This guide will walk you through how to export these virtual hand models from the VR Template and import them into your VR simulation. + +> [!CAUTION] +> While it is possible to migrate the virtual hand meshes directly from the +> Content Browser of the VR Template, this approach is not recommended. As part +> of the setup process, it is necessary to configure the SenseGlove Grab and +> Touch sockets. Although it's possible to set up these sockets manually, +> [as demonstrated in one of our older tutorials](https://youtu.be/jN4VcfXVrTA), +> we no longer recommend doing so. Since version +> [`v2.1.0`](../../appendix/changelog.html) of the SenseGlove Unreal Engine +> Plugin, we’ve included a tool that automates the socket setup with a single +> click, eliminating the need for the tedious manual process. +> +> Unfortunately, the SenseGlove Sockets Editor tool does not support skeletal +> meshes that share their skeleton. This is the case with the hand models +> included in the VR Template. Because of this limitation, we will be +> reimporting the virtual hand meshes with separate skeletons to ensure full +> compatibility with the SenseGlove Sockets Editor. + +## Exporting the Virtual Hand Meshes from the VRTemplate + +1. Start by creating a new Unreal Engine project using the VR Template. In the Unreal Project Browser, select `GAMES > Virtual Reality`. + +![Exporting the Virtual Hand Meshes from the VRTemplate - Creating a new VRTemplate project](export-virtual-hand-meshes-new-vrtemplate-project.png "Exporting the Virtual Hand Meshes from the VRTemplate - Creating a new VRTemplate project") + +2. Once the Unreal Editor opens with your new project, navigate to the Content Browser. Go to `All > Content > Characters > MannequinsXR > Meshes`. Here, you'll find two sets of virtual hand meshes: `SDKM_MannyXR_left` and `SDKM_MannyXR_right` (male hands), and `SDKM_QuinnXR_left` and `SDKM_QuinnXR_right` (female hands). + +![Exporting the Virtual Hand Meshes from the VRTemplate - Locating the virtual hand meshes in the Content Browser](export-virtual-hand-meshes-content-browser-location.png "Exporting the Virtual Hand Meshes from the VRTemplate - Locating the virtual hand meshes in the Content Browser") + +3. Choose the pair of hand meshes you want to export. Right-click on them, then select `Asset Actions` followed by `Bulk Export...` from the context menu. + +![Exporting the Virtual Hand Meshes from the VRTemplate - Bulk exporting the virtual hand meshes](export-virtual-hand-meshes-bulk-export.png "Exporting the Virtual Hand Meshes from the VRTemplate - Bulk exporting the virtual hand meshes") + +4. In the file dialog that appears, choose a folder to save the exported hands, and click the `Select Folder` button to export the meshes in FBX format. + +![Exporting the Virtual Hand Meshes from the VRTemplate - Selecting the export folder](export-virtual-hand-meshes-select-folder.png "Exporting the Virtual Hand Meshes from the VRTemplate - Selecting the export folder") + +5. The Unreal Editor will then display the `FBX Export Options` dialog. Leave the default settings unchanged and click `Export All` to proceed. + +![Exporting the Virtual Hand Meshes from the VRTemplate - The FBX export options](export-virtual-hand-meshes-fbx-export-options.png "Exporting the Virtual Hand Meshes from the VRTemplate - The FBX export options") + +> [!TIP] +> If you're unsure whether the options are set to their defaults, you can click +> the `Reset to Default` button in the top-right corner of the dialog to restore +> the default settings. + +6. After exporting, you can find the FBX files for both hands in the directory you selected: `/path/you/chose/for/bulk/export/Game/Characters/MannequinsXR/Meshes/`. + +![Exporting the Virtual Hand Meshes from the VRTemplate - Exported virtual hand meshes in FBX format](export-virtual-hand-meshes-exported.png "Exporting the Virtual Hand Meshes from the VRTemplate - Exported virtual hand meshes in FBX format") + +## Importing the Virtual Hand Meshes into Your Own Project + +1. Start by creating a new folder inside your project's Content Browser. Navigate to that folder, then press the `Import` button next to the `+ Add` button at the top of the Content Browser. + +![Importing the Virtual Hand Meshes into Your Own Project - Create an empty folder and importing](import-virtual-hand-meshes-create-empty-folder.png "Importing the Virtual Hand Meshes into Your Own Project - Create an empty folder and importing") + +2. In the `Import` dialog that appears, navigate to the folder containing the virtual hand meshes. Select both FBX files and click the `Open` button. + +![Importing the Virtual Hand Meshes into Your Own Project - Selecting virtual hand mesh FBX files](import-virtual-hand-meshes-select-fbx-files.png "Importing the Virtual Hand Meshes into Your Own Project - Selecting virtual hand mesh FBX files") + +3. The Unreal Editor will display the `FBX Import Options` dialog. Leave the default settings unchanged and click `Import All` to proceed. + +![Importing the Virtual Hand Meshes into Your Own Project - The FBX import options](import-virtual-hand-meshes-fbx-import-options.png "Importing the Virtual Hand Meshes into Your Own Project - The FBX import options") + +> [!TIP] +> If you're unsure whether the options are set to their defaults, you can click +> the `Reset to Default` button in the top-right corner of the dialog to restore +> the default settings. + +4. After the import process is done, a dialog will display the import logs. Any errors or warnings encountered during the import process will be shown here. + +![Importing the Virtual Hand Meshes into Your Own Project - The FBX import logs](import-virtual-hand-meshes-fbx-import-logs.png "Importing the Virtual Hand Meshes into Your Own Project - The FBX import logs") + +> [!NOTE] +> The following warning can be safely ignored: +> +> `FBXImport: Warning: No smoothing group information was found in this FBX scene. Please make sure to enable the 'Export Smoothing Groups' option in the FBX Exporter plug-in before exporting the file. Even for tools that don't support smoothing groups, the FBX Exporter will generate appropriate smoothing data at export-time so that correct vertex normals can be inferred while importing.` + +5. The imported virtual hand meshes should now appear in the folder you selected in the Content Browser. Unreal Engine will create a Skeletal Mesh, a Skeleton, and a Physics Asset for each imported mesh, along with a default Material asset shared between both virtual hand meshes. + +![Importing the Virtual Hand Meshes into Your Own Project - Imported virtual hand meshes](import-virtual-hand-meshes-imported.png "Importing the Virtual Hand Meshes into Your Own Project - Imported virtual hand meshes") + +6. You can choose to keep or modify the default material. However, since the SenseGlove Unreal Engine Plugin provides a default material, we choose to delete the default material created by Unreal Engine during the import process. We'll assign the SenseGlove default material to the imported virtual hand meshes in the next steps. Right-click on the default material and select `Delete`. + +![Importing the Virtual Hand Meshes into Your Own Project - Deleting the default material](import-virtual-hand-meshes-delete-default-material.png "Importing the Virtual Hand Meshes into Your Own Project - Deleting the default material") + +7. In the `Delete Assets` dialog, click `Force Delete` to confirm the deletion of the default material. + +![Importing the Virtual Hand Meshes into Your Own Project - Deleting the default material confirmation](import-virtual-hand-meshes-delete-default-material-confirm.png "Importing the Virtual Hand Meshes into Your Own Project - Deleting the default material confirmation") + +8. Open the Skeletal Mesh asset for the left hand and assign the `M_SenseGlove_VirtualHand` material from the `Asset Details` panel. + +![Importing the Virtual Hand Meshes into Your Own Project - Assigning the SenseGlove material to the left virtual hand mesh](import-virtual-hand-meshes-assing-senseglove-material-left-hand-mesh.png "Importing the Virtual Hand Meshes into Your Own Project - Assigning the SenseGlove material to the left virtual hand mesh") + +9. Repeat the process for the Skeletal Mesh asset of the right hand, and assign the `M_SenseGlove_VirtualHand` material in the `Asset Details` panel. + +![Importing the Virtual Hand Meshes into Your Own Project - Assigning the SenseGlove material to the right virtual hand mesh](import-virtual-hand-meshes-assing-senseglove-material-right-hand-mesh.png "Importing the Virtual Hand Meshes into Your Own Project - Assigning the SenseGlove material to the right virtual hand mesh") + +10. Return to the Content Browser by closing all asset windows and click the `Save All` button to save all imported virtual hand mesh assets to disk. + +![Importing the Virtual Hand Meshes into Your Own Project - Saving all virtual hand mesh assets](import-virtual-hand-meshes-fbx-save-all.png "Importing the Virtual Hand Meshes into Your Own Project - Saving all virtual hand mesh assets") + +11. In the `Save Content` dialog, choose `Save Selected` to confirm the saving all action. + +![Importing the Virtual Hand Meshes into Your Own Project - Saving all virtual hand mesh assets confirmation](import-virtual-hand-meshes-fbx-save-all-confirm.png "Importing the Virtual Hand Meshes into Your Own Project - Saving all virtual hand mesh assets confirmation") + +## Setting up the Rigid Bodies + +1. Open the Physics Asset for the left virtual hand mesh by double-clicking it in the Content Browser. This will open the PhAT (Physics Asset Tool) editor, where the virtual hand mesh for the left hand will appear with a default physics body, usually shaped as a capsule. + +![Setting up the Rigid Bodies - The Unreal PhAT Editor](rigid-body-setup-phat-editor.png "Setting up the Rigid Bodies - The Unreal PhAT Editor") + +2. In the `Tools` panel, under the `Body Creation` section, locate the `Primitive Type` dropdown and select `Box` instead of the default `Capsule` shape. Then, click the `Generate All Bodies` button at the bottom of the `Tools` panel to create a new physics body. + +![Setting up the Rigid Bodies - Generating a Box physics body](rigid-body-setup-generate-box-physics-body.png "Setting up the Rigid Bodies - Generating a Box physics body") + +3. After generating the new body, some adjustments are required for optimal interactions inside your VR simulations. Press the `r` key on your keyboard to enter scaling mode and use the arrows to resize the physics body. To reposition the body, press the `w` key to switch to translation mode. For adjusting the rotation, press the `e` key. Toggle between these modes as needed to fine-tune the physics body to your requirements. + +![Setting up the Rigid Bodies - Adjusting the generated physics body](rigid-body-setup-adjusting-physics-body.png "Setting up the Rigid Bodies - Adjusting the generated physics body") + +4. You can always revisit and adjust the rigid body later after testing its impact in your VR simulations. For now, save the asset and close the PhAT editor. + +![Setting up the Rigid Bodies - The adjust phsyics body](rigid-body-setup-adjusted-physics-body.png "Setting up the Rigid Bodies - The adjust phsyics body") + +5. Repeat the same procedure for the right virtual hand mesh. + +> [!NOTE] +> An older yet still relevant +> [video tutorial demonstrating a similar procedure](https://youtu.be/K9Qr_LqgTcY) +> is also available. + +
+ +
+ +## Setting up the SenseGlove Grab and Touch Sockets + +To ensure the Grab/Release and Touch systems function correctly, multiple sockets must be set up on each virtual hand mesh with precise locations and rotations. Before version [`v2.1.0`](../../appendix/changelog.html) of the SenseGlove Unreal Engine Plugin, this was a manual and time-consuming process. However, with the `v2.1.0` release, the plugin now includes the SenseGlove Sockets Editor, a built-in tool specifically designed for this task. + +> [!NOTE] +> If for any reason you still prefer to manually set up the sockets, +> [a detailed video tutorial](https://youtu.be/jN4VcfXVrTA) is available. + +
+ +
+ +### Accessing the SenseGlove Sockets Editor + +The SenseGlove Sockets Editor can be utilized in three ways: + +1. By right-clicking on any Skeleton or Skeletal Mesh asset inside the Unreal Content Browser. + +![Setting up the SenseGlove Grab and Touch Sockets - Content Browser](senseglove-sockets-editor-from-content-browser.png "[Setting up the SenseGlove Grab and Touch Sockets - Content Browser") + +> [!TIP] +> You can also perform Sockets Editor actions in bulk by selecting multiple +> assets of the same type and right-clicking on one of them. Note that if the +> selected assets are not all of the same type, Sockets Editor actions will not +> appear (e.g. selecting assets of type Skeletons and Skeletal Meshes together). + +![Setting up the SenseGlove Grab and Touch Sockets - Content Browser bulk actions](senseglove-sockets-editor-from-content-browser-bulk-actions.png "[Setting up the SenseGlove Grab and Touch Sockets - Content Browser bulk actions") + +2. From the `Asset` menu in the Skeleton Editor or Skeletal Mesh Editor for any open Skeleton or Skeletal Mesh asset. + +![Setting up the SenseGlove Grab and Touch Sockets - Skeleton Editor or Skeletal Mesh Editor Asset menu](senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-asset-menu.png "[Setting up the SenseGlove Grab and Touch Sockets - Skeleton Editor or Skeletal Mesh Editor Asset menu") + +3. From the Skeleton Editor or Skeletal Mesh Editor toolbar for any open Skeleton or Skeletal Mesh asset. + +![Setting up the SenseGlove Grab and Touch Sockets - Skeleton Editor or Skeletal Mesh Editor toolbar](senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-toolbar.png "[Setting up the SenseGlove Grab and Touch Sockets - Skeleton Editor or Skeletal Mesh Editor toolbar") + +The SenseGlove Sockets Editor currently offers two actions: + +1. `Add SenseGlove Sockets`: which adds and sets up the SenseGlove grab and touch sockets to any virtual hand mesh that adheres to the Epic rig and bone structure. +2. `Clear Existing Sockets`: which destructively clears all existing sockets; SenseGlove or otherwise, from any mesh. + +> [!IMPORTANT] +> Simply performing any of these actions won't permanently modify your assets. +> In fact, if you close the Unreal Editor without saving your assets first, all +> changes performed by the SenseGlove Sockets Editor will be lost forever. This +> is by design and the plugin will leave this final choice to the user. So, in +> order to apply the changes permanently, you must save the assets manually. + +### Adding the SenseGlove Sockets + +When you invoke the `Add SenseGlove Sockets` action, the Sockets Editor will prompt you for confirmation: + +![Adding the SenseGlove Sockets - Confirmation](senseglove-sockets-editor-add-sockets-confirmation.png "[Adding the SenseGlove Sockets - Confirmation") + +If it succeeds at adding the standard SenseGlove sockets, you will receive a confirmation message: + +![Adding the SenseGlove Sockets - Success](senseglove-sockets-editor-add-sockets-success.png "[Adding the SenseGlove Sockets - Success") + +After closing the dialog, the editors for the affected Skeleton and Skeletal Mesh assets will open, displaying the newly added sockets: + +![Adding the SenseGlove Sockets - Added sockets](senseglove-sockets-editor-added-sockets.png "[Adding the SenseGlove Sockets - Added sockets") + +To ensure the changes persist, save the assets to disk. + +> [!NOTE] +> The `Add SenseGlove Sockets` action can fail for various reasons, so it's +> important to investigate and identify the cause if an issue arises. + +![Adding the SenseGlove Sockets - Added sockets failure](senseglove-sockets-editor-add-sockets-failure-1.png "[Adding the SenseGlove Sockets - Added sockets failure") + +![Adding the SenseGlove Sockets - Added sockets failure](senseglove-sockets-editor-add-sockets-failure-2.png "[Adding the SenseGlove Sockets - Added sockets failure") + +> [!IMPORTANT] +> A common cause of failure is that the SenseGlove sockets have already been set +> up, or the meshes you’re using already have the necessary sockets. In this +> case, consider using the +> [`Clear Existing Sockets`](#clearing-all-existing-sockets) action first. + +> [!CAUTION] +> Another common cause of failure is if your virtual hand meshes share a skeleton. As noted in [the Compatible Virtual Hand Meshes section](#compatible-virtual-hand-meshes), the SenseGlove Sockets Editor does not support skeletal meshes that share their skeleton. You may need to [export](#exporting-the-virtual-hand-meshes-from-the-vrtemplate) and [re-import](#importing-the-virtual-hand-meshes-into-your-own-project) the virtual hand meshes in in a compatible manner first. + +In any case, the SenseGlove Sockets Editor reports all failures in the Unreal Editor logs. To view and investigate the logs, simply head to the `Window` menu and click on `Output Log`: + +![Adding the SenseGlove Sockets - Accessing the Unreal Editor output logs](senseglove-sockets-editor-failure-output-log.png "[Adding the SenseGlove Sockets - Accessing the Unreal Editor output logs") + +For example, in the following screenshots the following errors are stated: `Socket 'GrabAttachPoint' already exists on '/Game/SGHandbook/SKM_MannyXR_left.SKM_MannyXR_left'; refuse to add a duplicate!`. + +``` +LogGeneric: Error: [ERROR C:\Users\mamadou\Desktop\dev\SGHandbook\Plugins\SenseGlove\Source\SenseGloveEditor\Private\SGEditor\SGAssetUtils.cpp FSGAssetUtils::FImpl::AddSocket 394] Socket 'GrabAttachPoint' already exists on '/Game/SGHandbook/SKM_MannyXR_left.SKM_MannyXR_left'; refuse to add a duplicate! +LogGeneric: Error: [ERROR C:\Users\mamadou\Desktop\dev\SGHandbook\Plugins\SenseGlove\Source\SenseGloveEditor\Private\SGEditor\SGAssetUtils.cpp FSGAssetUtils::FImpl::AddGrabAttachPointSocket 442] Failed to add the socket 'GrabAttachPoint' to '/Game/SGHandbook/SKM_MannyXR_left.SKM_MannyXR_left'! +LogGeneric: Error: [ERROR C:\Users\mamadou\Desktop\dev\SGHandbook\Plugins\SenseGlove\Source\SenseGloveEditor\Private\SGEditor\SGAssetUtils.cpp FSGAssetUtils::FImpl::AddSenseGloveSockets 587] Failed to add the grab attach point socket to asset '/Game/SGHandbook/SKM_MannyXR_left.SKM_MannyXR_left'! +LogGeneric: Error: [ERROR C:\Users\mamadou\Desktop\dev\SGHandbook\Plugins\SenseGlove\Source\SenseGloveEditor\Private\SGEditor\SGAssetUtils.cpp FSGAssetUtils::FImpl::AddSenseGloveSockets 741] Failed to add the SenseGlove sockets to the asset '/Game/SGHandbook/SKM_MannyXR_left.SKM_MannyXR_left'! +``` + +![Adding the SenseGlove Sockets - Sockets already exists error](senseglove-sockets-editor-failure-output-logs-socket-already-exists.png "[Adding the SenseGlove Sockets - Sockets already exists error") + +### Clearing All Existing Sockets + +When you invoke the `Clear Existing Sockets` action, the Sockets Editor will ask for your confirmation: + +![Clearing All Existing Sockets - Confirmation](senseglove-sockets-editor-clear-sockets-confirmation.png "[Clearing All Existing Sockets - Confirmation") + +If successful, you will receive a message indicating all the existing sockets have been cleared: + +![Clearing All Existing Sockets - Success](senseglove-sockets-editor-clear-sockets-success.png "[Clearing All Existing Sockets - Success") + +After closing the dialog, the editors for the affected Skeleton and Skeletal Mesh assets will open, displaying the affected assets with all sockets cleared: + +![Clearing All Existing Sockets - Sockets cleared](senseglove-sockets-editor-sockets-cleared.png "[Clearing All Existing Sockets - Sockets cleared") + +## Configuring the SGPawn and Plugin Virtual Hand Mesh Settings + +The final step in setting up the virtual hand meshes is to configure the `SGPawn` and Plugin `Virtual Hand Mesh Settings` to ensure they utilize the newly created virtual hand meshes. + +Please visit [Setting Up SGPawn](../../getting-started/setup-senseglove-default-classes/sgpawn.md), [The Virtual Hand Mesh Settings](../../plugin-configuration/plugin-settings/virtual-hand/mesh.md), and [how to setup the Wrist Tracking Hardware](../../getting-started/setup-wrist-tracking-hardware/) sections for more information. + +### SGPawn Configuration + +In the `SGPawn` Blueprint class, make sure to assign the appropriate `Skeletal Mesh Asset` to the following components: + +- `HandLeft` +- `HandRight` +- `RealHandLeft` +- `RealHandRight` + +This ensures that the correct hand meshes are used for both virtual and real hands. + +![The SGPawn and the Plugin Virtual Hand Mesh Settings - SGPawn settings](virtual-hand-mesh-settings-sgpawn.png "[The SGPawn and the Plugin Virtual Hand Mesh Settings - SGPawn settings") + +### Plugin Virtual Hand Mesh Settings + +Next, navigate to `Project Settings > Plugins > SenseGlove > Virtual Hand Settings > Mesh Settings` and specify the correct left and right-hand meshes for: + +- `Left Hand Reference Mesh` +- `Right Hand Reference Mesh` + +This configuration guarantees that the tracking system correctly interprets the bone transforms of the virtual hand meshes when generating `FXRMotionControllerData`. Additionally, it allows the animation system to accurately use these bone transforms when processing `FXRMotionControllerData` and animating the virtual hand meshes. + +![The SGPawn and the Plugin Virtual Hand Mesh Settings - Plugin settings](virtual-hand-mesh-settings-plugin.png "[The SGPawn and the Plugin Virtual Hand Mesh Settings - Plugin settings") \ No newline at end of file diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-bulk-export.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-bulk-export.png new file mode 100644 index 0000000..a64cefa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-bulk-export.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05f421c9a7ce5afe3302a3c91abd9f072d8edb2aadc500bf1788ed3fee77499d +size 1459421 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-content-browser-location.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-content-browser-location.png new file mode 100644 index 0000000..00848e8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-content-browser-location.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89168e4974c8d42dc977349ba82977f698988f2da2e0d11aada2a6d92faa994d +size 492327 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-exported.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-exported.png new file mode 100644 index 0000000..30f5c55 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-exported.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d515c7d490e21e56b50020bddfffc366ec30ac41dee782800e4b07ea0108c941 +size 87140 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-fbx-export-options.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-fbx-export-options.png new file mode 100644 index 0000000..25f0726 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-fbx-export-options.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d253c1b7cef29ed2c4733a22e5049529e460aae07998c60a38cf46776c654a5 +size 60913 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-new-vrtemplate-project.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-new-vrtemplate-project.png new file mode 100644 index 0000000..569e112 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-new-vrtemplate-project.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a26ec97f030e58ce9ab2564a773c08cf42a6b6bd365feedd7380aa9635125c4 +size 1353398 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-select-folder.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-select-folder.png new file mode 100644 index 0000000..34bcfce --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/export-virtual-hand-meshes-select-folder.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c090f0b703837f5207ad6a02ddf4cd73f83b79df973a55f962cf2f50794568de +size 42783 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-left-hand-mesh.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-left-hand-mesh.png new file mode 100644 index 0000000..601d76f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-left-hand-mesh.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca800867001258aac08120324eed9227abfa91ca317d4b0e8c06e899e444ca51 +size 721031 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-right-hand-mesh.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-right-hand-mesh.png new file mode 100644 index 0000000..944bba6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-assing-senseglove-material-right-hand-mesh.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2886da092b217f35bb8b6e7eec21dfe7cfce995c9f833fbbbf0108b92095e6c +size 754752 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-create-empty-folder.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-create-empty-folder.png new file mode 100644 index 0000000..2d36a92 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-create-empty-folder.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a876f0e24df46d8b77e7df5b38d39ebc1904e3fbf2215ef13c8fb9cf340a7d60 +size 287169 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material-confirm.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material-confirm.png new file mode 100644 index 0000000..d4bfb62 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material-confirm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a796e68a87f28ca419d18f1b9e04560e0bf218b632fb48160210a700850068e4 +size 42702 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material.png new file mode 100644 index 0000000..00cfb94 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-delete-default-material.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca65a59fabfea4e5b5ba95bef95130a357178cfeb1311477e4294b2b1bf431ef +size 261315 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-logs.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-logs.png new file mode 100644 index 0000000..03c79ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-logs.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3110eab930b8dc182d632acbc4a980511ba71ee6ac780725c5d8983608b9367a +size 73535 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-options.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-options.png new file mode 100644 index 0000000..fecd0c8 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-import-options.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c547b7b3233e3dba926e8848dd52d956cce48a4e90cd4a9456226134a2fc31bf +size 76089 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all-confirm.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all-confirm.png new file mode 100644 index 0000000..4c7b1b0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all-confirm.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bae998c8624415faba8c01dc44454a6ef201e75d4d7368a0aede6981100914a4 +size 59766 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all.png new file mode 100644 index 0000000..d1ceb86 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-fbx-save-all.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9005d6d753bf3f9bc49a4bb263cbced0065d19cf92af6c13786d8a8ea65dc969 +size 509012 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-imported.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-imported.png new file mode 100644 index 0000000..d1c4e0c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-imported.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a0d53427a476df04e702271ebedc8a5c66e62c517ef89f6ff92cd1c7207cc3 +size 526940 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-select-fbx-files.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-select-fbx-files.png new file mode 100644 index 0000000..e1c6969 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/import-virtual-hand-meshes-select-fbx-files.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8a8bfbf28c12d06174d8a3834c36122640be82b09b68005d330518efcf589f3 +size 52189 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusted-physics-body.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusted-physics-body.png new file mode 100644 index 0000000..2c47537 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusted-physics-body.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7c9422a0e8103014bcfa77ca4b2c5e8786740f66f378a8ec4422b027d023f30 +size 898342 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusting-physics-body.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusting-physics-body.png new file mode 100644 index 0000000..2d9962d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-adjusting-physics-body.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46175503d7652cb79ff69ebb863dc05e40aa6bdf1236e526b49f695591a24777 +size 1232364 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-generate-box-physics-body.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-generate-box-physics-body.png new file mode 100644 index 0000000..e9d7b82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-generate-box-physics-body.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:226cd0b51676630cd0f4e8119de911434391eaf5437059fc7a94a2ec6dd70d98 +size 1180711 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-phat-editor.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-phat-editor.png new file mode 100644 index 0000000..ae403cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/rigid-body-setup-phat-editor.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5faad953fc12f14cb2a65c1c758c939e8682fad737482c796d1d7de7b725e4d +size 1162814 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-confirmation.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-confirmation.png new file mode 100644 index 0000000..7b3fd9b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-confirmation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24e4860db3766306d397b3e803e0dd9854461cf6d12f95938dceed9ad36f4103 +size 11941 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-1.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-1.png new file mode 100644 index 0000000..2030b66 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8926be833deedb09234a5e8b9436b82b637be52b238e37c06a0441ddac72c86 +size 10082 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-2.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-2.png new file mode 100644 index 0000000..9e6b647 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-failure-2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:228b1e2d831646ce194b88e4c922422a8f100a79f23508036fd30c7855448687 +size 14671 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-success.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-success.png new file mode 100644 index 0000000..ed6ef4e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-add-sockets-success.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19441233849ade89c0b4d30d05587ae50e2fdd99b11b80770976e7e689e58bf5 +size 16117 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-added-sockets.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-added-sockets.png new file mode 100644 index 0000000..57619f0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-added-sockets.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af753301815ce94a3c51bc1d76dd771b5e4a1d2f98cde60221c50e4177f59e89 +size 1205454 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-confirmation.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-confirmation.png new file mode 100644 index 0000000..4b50d6f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-confirmation.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9a7aa49527256e524b88b2e95320cd571d30843ce6f36fc8feab9cc3b04edb +size 13439 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-success.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-success.png new file mode 100644 index 0000000..5c0c990 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-clear-sockets-success.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963a99cb79fa48bc0806270f35d6dc1e4044c24ee3a2e02b445be21c0e663c4a +size 15442 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-log.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-log.png new file mode 100644 index 0000000..2bee6a5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-log.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9304875ef4174cc2875503417088d3573a53ca050cd2b19568b9b9e64016c79c +size 1151467 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-logs-socket-already-exists.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-logs-socket-already-exists.png new file mode 100644 index 0000000..ea98911 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-failure-output-logs-socket-already-exists.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a6118701cfa603893b8dfbdeef68dbda6a8e99006b743b87e974b67f50293f +size 226112 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser-bulk-actions.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser-bulk-actions.png new file mode 100644 index 0000000..3877216 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser-bulk-actions.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cd177495f00454649d615a9ff5c1559b418848fdc870bbe351caad8dec6680c +size 1229105 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser.png new file mode 100644 index 0000000..c23f40a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-content-browser.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f322f5c78387c2e0e12832459043045295cf28b5e1dc9dc69a65b4db10cfde24 +size 1238049 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-asset-menu.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-asset-menu.png new file mode 100644 index 0000000..57fd384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-asset-menu.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15ed42221f5946ea6eb31751b8b5c5deb6d23b195038f2582e87cb9d3808ea5e +size 962708 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-toolbar.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-toolbar.png new file mode 100644 index 0000000..a029a85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-from-skeleton-skeletal-mesh-editor-toolbar.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9df428ca88b1ae15f3d4e81b15681e2e05165fd95467917c337af2e6622e4a2c +size 1433279 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-sockets-cleared.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-sockets-cleared.png new file mode 100644 index 0000000..0bb11f6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/senseglove-sockets-editor-sockets-cleared.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fd63ab7e53c530e6e9e784eb4d5564ea90063da5381ae2eb5e2443e0c3a32fe +size 1215018 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-plugin.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-plugin.png new file mode 100644 index 0000000..b9181db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-plugin.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4409a14b06838a49bfc5a068e3dbdd2ac41671a52bb37afe764d32bf5093918 +size 156770 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-sgpawn.png b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-sgpawn.png new file mode 100644 index 0000000..66af9db --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-virtual-hand-meshes/virtual-hand-mesh-settings-sgpawn.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e906f2cd1f6d011fd7cc36bdfabfc565294e15c69029b5ee9b02b4781ede5b49 +size 295375 diff --git a/Plugins/SenseGlove/Handbook/src/getting-started/setup-wrist-tracking-hardware/README.md b/Plugins/SenseGlove/Handbook/src/getting-started/setup-wrist-tracking-hardware/README.md new file mode 100644 index 0000000..350e64e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/getting-started/setup-wrist-tracking-hardware/README.md @@ -0,0 +1,5 @@ +# Setting Up the Wrist Tracking Hardware + +To enable the SenseGlove Unreal Engine Plugin to track the gloves position and rotation in the world, you need to specify a positional tracking hardware, referred to as Wrist Tracking Hardware within the plugin. By default, if the Wrist Tracking Hardware is not explicitly set, the plugin will attempt to automatically detect it by identifying your Head-mounted display (HMD) hardware. However, this auto-detection feature may not be entirely reliable, as it is still experimental, and it may occasionally fail. + +For detailed information, please visit [the Wrist Tracking Hardware and HMD auto-detection configuration section](../../plugin-configuration/plugin-settings/tracking/wrist-tracking/). diff --git a/Plugins/SenseGlove/Handbook/src/license/boost-cpp-libraries.md b/Plugins/SenseGlove/Handbook/src/license/boost-cpp-libraries.md new file mode 100644 index 0000000..862fe41 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/boost-cpp-libraries.md @@ -0,0 +1,27 @@ +# Boost C++ Libraries License + +``` +Boost Software License - Version 1.0 - August 17th, 2003 + +Permission is hereby granted, free of charge, to any person or organization +obtaining a copy of the software and accompanying documentation covered by +this license (the "Software") to use, reproduce, display, distribute, +execute, and transmit the Software, and to prepare derivative works of the +Software, and to permit third-parties to whom the Software is furnished to +do so, all subject to the following: + +The copyright notices in the Software and this entire statement, including +the above license grant, this restriction and the following disclaimer, +must be included in all copies of the Software, in whole or in part, and +all derivative works of the Software, unless such copies or derivative +works are solely in the form of machine-executable object code generated by +a source language processor. + +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, TITLE AND NON-INFRINGEMENT. IN NO EVENT +SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE +FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. +``` diff --git a/Plugins/SenseGlove/Handbook/src/license/senseglove-sdk.md b/Plugins/SenseGlove/Handbook/src/license/senseglove-sdk.md new file mode 100644 index 0000000..d80c468 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/senseglove-sdk.md @@ -0,0 +1,32 @@ +# SenseGlove SDK License + +``` +SENSEGLOVE SDK LICENSE + +Purchase of the Product does not entitle you to ownership or a license to any +software generated by SenseGlove for use with the Product (the “Software”). +To the extent that SenseGlove, in its sole discretion, grants you access to any +such Software, the Software is licensed by us or by the relevant licensor/owner +subject to the relevant end-user license agreement or other license terms +included with the Product and/or on the SenseGlove Websites including the Github +page of SenseGlove (the “License Terms“). + +Specifically, SenseGlove shall have sole discretion to determine and change the +availability, nature, features, content, versioning of any Software that it +makes available to you, for download through the the Github page of SenseGlove +or otherwise (including the SenseGlove software developer kit (“SDK”)). +Purchase of a Product does not entitle you to access to any specific features, +content or version of the SDK, including and especially versions of the SDK that +have not yet been made available to the public. SenseGlove will have no +obligation to provide any updates or upgrades to any Software it makes available +to you, but in the event that it does, such updates, upgrades and any +documentation will be subject to the License Terms available at +https://www.senseglove.com/solutions/. + +Except to the extent expressly provided by us in writing or under the License +Terms, the Software is provided “AS IS” without any warranties, terms or +conditions as to quality, fitness for purpose, non-infringement, performance or +correspondence with description and we do not offer any warranties or guarantees +in relation to the Software installation, configuration or error/defect +correction. +``` diff --git a/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-handbook.md b/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-handbook.md new file mode 100644 index 0000000..2b9f30c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-handbook.md @@ -0,0 +1,401 @@ +# SenseGlove Unreal Engine Handbook License + +The SenseGlove Unreal Engine Handbook is licensed under the terms of the CC BY (Creative Commons Attribution) License. Below is the CC BY License: + +``` +Attribution 4.0 International + +======================================================================= + +Creative Commons Corporation ("Creative Commons") is not a law firm and +does not provide legal services or legal advice. Distribution of +Creative Commons public licenses does not create a lawyer-client or +other relationship. Creative Commons makes its licenses and related +information available on an "as-is" basis. Creative Commons gives no +warranties regarding its licenses, any material licensed under their +terms and conditions, or any related information. Creative Commons +disclaims all liability for damages resulting from their use to the +fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and +conditions that creators and other rights holders may use to share +original works of authorship and other material subject to copyright +and certain other rights specified in the public license below. The +following considerations are for informational purposes only, are not +exhaustive, and do not form part of our licenses. + + Considerations for licensors: Our public licenses are + intended for use by those authorized to give the public + permission to use material in ways otherwise restricted by + copyright and certain other rights. Our licenses are + irrevocable. Licensors should read and understand the terms + and conditions of the license they choose before applying it. + Licensors should also secure all rights necessary before + applying our licenses so that the public can reuse the + material as expected. Licensors should clearly mark any + material not subject to the license. This includes other CC- + licensed material, or material used under an exception or + limitation to copyright. More considerations for licensors: + wiki.creativecommons.org/Considerations_for_licensors + + Considerations for the public: By using one of our public + licenses, a licensor grants the public permission to use the + licensed material under specified terms and conditions. If + the licensor's permission is not necessary for any reason--for + example, because of any applicable exception or limitation to + copyright--then that use is not regulated by the license. Our + licenses grant only permissions under copyright and certain + other rights that a licensor has authority to grant. Use of + the licensed material may still be restricted for other + reasons, including because others have copyright or other + rights in the material. A licensor may make special requests, + such as asking that all changes be marked or described. + Although not required by our licenses, you are encouraged to + respect those requests where reasonable. More considerations + for the public: + wiki.creativecommons.org/Considerations_for_licensees + +======================================================================= + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree +to be bound by the terms and conditions of this Creative Commons +Attribution 4.0 International Public License ("Public License"). To the +extent this Public License may be interpreted as a contract, You are +granted the Licensed Rights in consideration of Your acceptance of +these terms and conditions, and the Licensor grants You such rights in +consideration of benefits the Licensor receives from making the +Licensed Material available under these terms and conditions. + + +Section 1 -- Definitions. + + a. Adapted Material means material subject to Copyright and Similar + Rights that is derived from or based upon the Licensed Material + and in which the Licensed Material is translated, altered, + arranged, transformed, or otherwise modified in a manner requiring + permission under the Copyright and Similar Rights held by the + Licensor. For purposes of this Public License, where the Licensed + Material is a musical work, performance, or sound recording, + Adapted Material is always produced where the Licensed Material is + synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright + and Similar Rights in Your contributions to Adapted Material in + accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights + closely related to copyright including, without limitation, + performance, broadcast, sound recording, and Sui Generis Database + Rights, without regard to how the rights are labeled or + categorized. For purposes of this Public License, the rights + specified in Section 2(b)(1)-(2) are not Copyright and Similar + Rights. + + d. Effective Technological Measures means those measures that, in the + absence of proper authority, may not be circumvented under laws + fulfilling obligations under Article 11 of the WIPO Copyright + Treaty adopted on December 20, 1996, and/or similar international + agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or + any other exception or limitation to Copyright and Similar Rights + that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, + or other material to which the Licensor applied this Public + License. + + g. Licensed Rights means the rights granted to You subject to the + terms and conditions of this Public License, which are limited to + all Copyright and Similar Rights that apply to Your use of the + Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights + under this Public License. + + i. Share means to provide material to the public by any means or + process that requires permission under the Licensed Rights, such + as reproduction, public display, public performance, distribution, + dissemination, communication, or importation, and to make material + available to the public including in ways that members of the + public may access the material from a place and at a time + individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright + resulting from Directive 96/9/EC of the European Parliament and of + the Council of 11 March 1996 on the legal protection of databases, + as amended and/or succeeded, as well as other essentially + equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights + under this Public License. Your has a corresponding meaning. + + +Section 2 -- Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, + the Licensor hereby grants You a worldwide, royalty-free, + non-sublicensable, non-exclusive, irrevocable license to + exercise the Licensed Rights in the Licensed Material to: + + a. reproduce and Share the Licensed Material, in whole or + in part; and + + b. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where + Exceptions and Limitations apply to Your use, this Public + License does not apply, and You do not need to comply with + its terms and conditions. + + 3. Term. The term of this Public License is specified in Section + 6(a). + + 4. Media and formats; technical modifications allowed. The + Licensor authorizes You to exercise the Licensed Rights in + all media and formats whether now known or hereafter created, + and to make technical modifications necessary to do so. The + Licensor waives and/or agrees not to assert any right or + authority to forbid You from making technical modifications + necessary to exercise the Licensed Rights, including + technical modifications necessary to circumvent Effective + Technological Measures. For purposes of this Public License, + simply making modifications authorized by this Section 2(a) + (4) never produces Adapted Material. + + 5. Downstream recipients. + + a. Offer from the Licensor -- Licensed Material. Every + recipient of the Licensed Material automatically + receives an offer from the Licensor to exercise the + Licensed Rights under the terms and conditions of this + Public License. + + b. No downstream restrictions. You may not offer or impose + any additional or different terms or conditions on, or + apply any Effective Technological Measures to, the + Licensed Material if doing so restricts exercise of the + Licensed Rights by any recipient of the Licensed + Material. + + 6. No endorsement. Nothing in this Public License constitutes or + may be construed as permission to assert or imply that You + are, or that Your use of the Licensed Material is, connected + with, or sponsored, endorsed, or granted official status by, + the Licensor or others designated to receive attribution as + provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not + licensed under this Public License, nor are publicity, + privacy, and/or other similar personality rights; however, to + the extent possible, the Licensor waives and/or agrees not to + assert any such rights held by the Licensor to the limited + extent necessary to allow You to exercise the Licensed + Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this + Public License. + + 3. To the extent possible, the Licensor waives any right to + collect royalties from You for the exercise of the Licensed + Rights, whether directly or through a collecting society + under any voluntary or waivable statutory or compulsory + licensing scheme. In all other cases the Licensor expressly + reserves any right to collect such royalties. + + +Section 3 -- License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the +following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified + form), You must: + + a. retain the following if it is supplied by the Licensor + with the Licensed Material: + + i. identification of the creator(s) of the Licensed + Material and any others designated to receive + attribution, in any reasonable manner requested by + the Licensor (including by pseudonym if + designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of + warranties; + + v. a URI or hyperlink to the Licensed Material to the + extent reasonably practicable; + + b. indicate if You modified the Licensed Material and + retain an indication of any previous modifications; and + + c. indicate the Licensed Material is licensed under this + Public License, and include the text of, or the URI or + hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any + reasonable manner based on the medium, means, and context in + which You Share the Licensed Material. For example, it may be + reasonable to satisfy the conditions by providing a URI or + hyperlink to a resource that includes the required + information. + + 3. If requested by the Licensor, You must remove any of the + information required by Section 3(a)(1)(A) to the extent + reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's + License You apply must not prevent recipients of the Adapted + Material from complying with this Public License. + + +Section 4 -- Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that +apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right + to extract, reuse, reproduce, and Share all or a substantial + portion of the contents of the database; + + b. if You include all or a substantial portion of the database + contents in a database in which You have Sui Generis Database + Rights, then the database in which You have Sui Generis Database + Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share + all or a substantial portion of the contents of the database. + +For the avoidance of doubt, this Section 4 supplements and does not +replace Your obligations under this Public License where the Licensed +Rights include other Copyright and Similar Rights. + + +Section 5 -- Disclaimer of Warranties and Limitation of Liability. + + a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE + EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS + AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF + ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, + IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, + WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR + PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, + ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT + KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT + ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. + + b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE + TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, + NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, + INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, + COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR + USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR + DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR + IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. + + c. The disclaimer of warranties and limitation of liability provided + above shall be interpreted in a manner that, to the extent + possible, most closely approximates an absolute disclaimer and + waiver of all liability. + + +Section 6 -- Term and Termination. + + a. This Public License applies for the term of the Copyright and + Similar Rights licensed here. However, if You fail to comply with + this Public License, then Your rights under this Public License + terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under + Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided + it is cured within 30 days of Your discovery of the + violation; or + + 2. upon express reinstatement by the Licensor. + + For the avoidance of doubt, this Section 6(b) does not affect any + right the Licensor may have to seek remedies for Your violations + of this Public License. + + c. For the avoidance of doubt, the Licensor may also offer the + Licensed Material under separate terms or conditions or stop + distributing the Licensed Material at any time; however, doing so + will not terminate this Public License. + + d. Sections 1, 5, 6, 7, and 8 survive termination of this Public + License. + + +Section 7 -- Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different + terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the + Licensed Material not stated herein are separate from and + independent of the terms and conditions of this Public License. + + +Section 8 -- Interpretation. + + a. For the avoidance of doubt, this Public License does not, and + shall not be interpreted to, reduce, limit, restrict, or impose + conditions on any use of the Licensed Material that could lawfully + be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is + deemed unenforceable, it shall be automatically reformed to the + minimum extent necessary to make it enforceable. If the provision + cannot be reformed, it shall be severed from this Public License + without affecting the enforceability of the remaining terms and + conditions. + + c. No term or condition of this Public License will be waived and no + failure to comply consented to unless expressly agreed to by the + Licensor. + + d. Nothing in this Public License constitutes or may be interpreted + as a limitation upon, or waiver of, any privileges and immunities + that apply to the Licensor or You, including from the legal + processes of any jurisdiction or authority. + + +======================================================================= + +Creative Commons is not a party to its public +licenses. Notwithstanding, Creative Commons may elect to apply one of +its public licenses to material it publishes and in those instances +will be considered the “Licensor.” The text of the Creative Commons +public licenses is dedicated to the public domain under the CC0 Public +Domain Dedication. Except for the limited purpose of indicating that +material is shared under a Creative Commons public license or as +otherwise permitted by the Creative Commons policies published at +creativecommons.org/policies, Creative Commons does not authorize the +use of the trademark "Creative Commons" or any other trademark or logo +of Creative Commons without its prior written consent including, +without limitation, in connection with any unauthorized modifications +to any of its public licenses or any other arrangements, +understandings, or agreements concerning use of licensed material. For +the avoidance of doubt, this paragraph does not form part of the +public licenses. + +Creative Commons may be contacted at creativecommons.org. +``` diff --git a/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-plugin.md b/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-plugin.md new file mode 100644 index 0000000..ea95ff3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/senseglove-unreal-engine-plugin.md @@ -0,0 +1,29 @@ +# SenseGlove Unreal Engine Plugin License + +The SenseGlove Unreal Engine Plugin is licensed under the terms of the MIT License. Below is the MIT License: + +``` +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. +``` + +Please note that while the SenseGlove Unreal Engine Plugin is made available under the MIT License, it utilizes a few third-party libraries with permissive free licenses as well, in order to power various components. For a list of these libraries and their own respective open-source licenses take a look at [the third-party licenses](third-party.md), please. diff --git a/Plugins/SenseGlove/Handbook/src/license/serial-communication-library.md b/Plugins/SenseGlove/Handbook/src/license/serial-communication-library.md new file mode 100644 index 0000000..e926eb2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/serial-communication-library.md @@ -0,0 +1,22 @@ +# Serial Communication Library License + +``` +Copyright (c) 2012 William Woodall, John Harrison + +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. +``` diff --git a/Plugins/SenseGlove/Handbook/src/license/third-party.md b/Plugins/SenseGlove/Handbook/src/license/third-party.md new file mode 100644 index 0000000..d56216b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/license/third-party.md @@ -0,0 +1,11 @@ +# Third Party Licenses + +Please note that while the SenseGlove Unreal Engine Plugin is made available under the [MIT License](senseglove-unreal-engine-plugin.md), it utilizes a few third-party libraries with permissive free licenses as well, in order to power various components. + +The following third-party software are used and shipped with the SenseGlove Unreal Engine Plugin: + +- [The SenseGlove SDK (a.k.a. SenseGlove Backend Libraries, or SenseGlove Core Libraries)](senseglove-sdk.md) +- [The Boost C++ Libraries](boost-cpp-libraries.md) +- [The Serial Communication Library](serial-communication-library.md) + +For more information consult their own respective open-source licenses, please. diff --git a/Plugins/SenseGlove/Handbook/src/low-level-api/blueprint.md b/Plugins/SenseGlove/Handbook/src/low-level-api/blueprint.md new file mode 100644 index 0000000..948bd78 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/low-level-api/blueprint.md @@ -0,0 +1,13 @@ +# Low-level Blueprint API + +Unfortunately, due to Unreal Engine's limited availability of automated documentation generation tools, there is no updated online documentation for the SenseGlove Blueprint API. However, this does not mean that no documentation is available. In fact, most of the Blueprint code is already documented within the relevant header files. Any modules with the `Kismet` postfix in the name contain the Blueprint documentation. For example, the Blueprint documentation for the `Core` module can be found inside the `Source/SenseGloveCoreKismet/Public/SGCoreKismet` directory. + +There is also an [outdated Blueprint documentation hosted on GitLab](https://senseglove.gitlab.io/unreal-blueprint-docs/). This documentation was generated for the early releases of the plugin using [kamrann/KantanDocGenPlugin](https://github.com/kamrann/KantanDocGenPlugin) and [kamrann/KantanDocGenTool](https://github.com/kamrann/KantanDocGenTool), which is no longer maintained. + +Efforts are ongoing to generate comprehensive documentation using [PsichiX/unreal-doc](https://crates.io/crates/unreal-doc), but progress has been hindered by various [known issues](https://github.com/PsichiX/unreal-doc/issues). + +There are also other outdated materials that might still be partially relevant. These include [an example Unreal Engine Blueprint project](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGPlaygroundBP) and [a video tutorial](https://youtu.be/9ICAH2ZUvVk): + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/low-level-api/cpp.md b/Plugins/SenseGlove/Handbook/src/low-level-api/cpp.md new file mode 100644 index 0000000..07eb853 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/low-level-api/cpp.md @@ -0,0 +1,13 @@ +# Low-level C++ API + +Due to Unreal Engine's limited availability of automated documentation generation tools, there is no updated online documentation for the SenseGlove Unreal Engine C++ API. However, this does not mean that no documentation is available. A significant portion of the API is documented within the relevant header files. For example, the C++ API documentation for the `Core` module can be found inside the `Source/SenseGloveCore/Public/SGCore` directory. + +Efforts are ongoing to generate comprehensive documentation using [PsichiX/unreal-doc](https://crates.io/crates/unreal-doc), but progress has been hindered by various [known issues](https://github.com/PsichiX/unreal-doc/issues). + +Nevertheless, since this plugin builds on top of the [SGConnect](https://senseglove.gitlab.io/SenseGloveDocs/native/core-api-intro.html#sgconnect) and [SGCoreCpp](https://senseglove.gitlab.io/SenseGloveDocs/native/core-api-intro.html#sgcorecpp) third-party C++ libraries, the [upstream documentation](https://senseglove.gitlab.io/SenseGloveDocs/native/cpp-reference.html) provides detailed information on various aspects of the underlying SenseGlove C++ API. + +There are also other outdated materials that might still be partially relevant. These include [an example Unreal Engine C++ project](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGPlaygroundCpp) and [a video tutorial](https://youtu.be/9ICAH2ZUvVk): + +
+ +
diff --git a/Plugins/SenseGlove/Handbook/src/misc/android-standalone-deployment/README.md b/Plugins/SenseGlove/Handbook/src/misc/android-standalone-deployment/README.md new file mode 100644 index 0000000..3253095 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/android-standalone-deployment/README.md @@ -0,0 +1,32 @@ +# Deploying to Android (Standalone) + +Epic Games provides official documentation for setting up Unreal projects targeting Android: + +- [Setting Up Android SDK and NDK for Unreal](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-android-sdk-and-ndk-for-unreal) +- [Android Quick Start](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-unreal-engine-projects-for-android-development) + +Here are a few important notes to consider: + +- Since SenseGlove provides native libraries built for Android, it’s crucial to consult the [Platform Support Matrix](../../appendix/platform-support-matrix.html) before deciding to deploy your project to Android. +- Currently, all third-party native libraries are built against Android NDK API Level `29`. +- On Meta Quest devices, building against Android SDK API Level `29` or `32` has been tested and is supported. +- A [video tutorial on deploying to Oculus Quest devices and Android](https://youtu.be/zU8Nf4ssOO0) is also available. + +
+ +
+ +> [!CAUTION] +> As noted in the +> [v2.1.0 release changelog](../../appendix/changelog.html), since this release +> enabling the Meta XR plugin, —and potentially the VIVE OpenXR plugin— +> alongside the SenseGlove Unreal Engine Plugin in the same project will disrupt +> the OpenXR functionality provided by the SenseGlove Unreal Engine Plugin, +> rendering it unusable. +> +> `Although the SenseGlove OpenXR implementation is fully compatible with the IOpenXRHMD interface and the FOpenXRHMD XRTrackingSystem, it is not compatible with the FOculusXRHMD backend provided by the Meta XR plugin. The same issue likely applies to the VIVE OpenXR plugin. So, if these plugins are enabled in your project, the SenseGlove OpenXR will not function as intended, effectively breaking the plugin's functionality. It seems these plugins are necessary in order to make the fallback to the hand-tracking feature work on Android. While we may add support and compatibility with Meta XR and VIVE OpenXR plugins in the future, for the time being, if your project requires these plugins, we advise continuing with the v2.0.x release of the SenseGlove Unreal Engine plugin until this issue is addressed.` +> +> This also means that although the SenseGlove Unreal Engine Plugin is able to +> produce FXRMotionControllerData for SenseGlove devices just fine, the +> hand-tracking on Android won't work. So, the fallback to hand-tracking +> mechanism on Android is broken at the moment. diff --git a/Plugins/SenseGlove/Handbook/src/misc/build-information.md b/Plugins/SenseGlove/Handbook/src/misc/build-information.md new file mode 100644 index 0000000..42c61cd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/build-information.md @@ -0,0 +1,24 @@ +# Build Information + +| | {{ #sg-project-name }} | +|-----------------------|-------------------------------------| +| Handbook Revision | {{ #sg-handbook-revision }} | +| Handbook Revision URL | [{{ #sg-handbook-revision-url }}]({{ #sg-handbook-revision-url }}) | +| Handbook PDF URL | [{{ #sg-handbook-pdf-url }}]({{ #sg-handbook-pdf-url }}) | +| Git Branch | {{ #sg-git-branch }} | +| Git Tag | {{ #sg-git-tag }} | +| Git Commit | {{ #sg-git-commit }} | +| Git Commits Since Tag | {{ #sg-git-commit-nums-since-tag }} | +| Git Tree State | {{ #sg-git-tree-state }} | +| Git Is Shallow Clone | {{ #sg-git-is-shallow-clone }} | +| Git Latest Remote Tag | {{ #sg-git-latest-remote-tag }} | +| Git Version | {{ #sg-git-version }} | +| Git Version Major | {{ #sg-git-version-major }} | +| Git Version Minor | {{ #sg-git-version-minor }} | +| Git Version Patch | {{ #sg-git-version-patch }} | +| Plugin Version | {{ #sg-plugin-version }} | +| Plugin Version Major | {{ #sg-plugin-version-major }} | +| Plugin Version Minor | {{ #sg-plugin-version-minor }} | +| Plugin Version Patch | {{ #sg-plugin-version-patch }} | +| Build Host | {{ #sg-build-host }} | +| Build Time | {{ #sg-build-time }} | diff --git a/Plugins/SenseGlove/Handbook/src/misc/console-commands/README.md b/Plugins/SenseGlove/Handbook/src/misc/console-commands/README.md new file mode 100644 index 0000000..6031ab2 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/console-commands/README.md @@ -0,0 +1,44 @@ +# The SenseGlove Console Commands + +The SenseGlove Unreal Engine Plugin offers a variety of utility console commands to enhance your development experience. + +> [!IMPORTANT] +> To ensure the SenseGlove console commands are registered and recognized by +> Unreal Engine, set the default Game Instance class to `SGGameInstance` or a +> subclass of it. This can be done through: +> `Project Settings > Project > Maps & Modes > Game Instance > Game Instance Class`. +> Failing to do so will result in the error: `Command not recognized: SG_*` in +> the logs. For more details, refer to +> [`SGGameInstance`](../../getting-started/setup-senseglove-default-classes/sggameinstance.md). + +## SGGameUserSettings Console Commands + +> [!CAUTION] +> Before running any of the following console commands, ensure that the default +> Game User Settings class is set to `SGGameUserSettings` or a subclass of it. +> This can be configured via: +> `Project Settings > Engine > General Settings > Default Classes > Advanced > Game User Settings Class`. +> Failure to set this correctly will cause your simulation or editor to crash +> upon calling any of the following console commands. For more information, +> refer to +> [`SGGameUserSettings`](../../getting-started/setup-senseglove-default-classes/sggameusersettings.md). + +### SG_GetEngineScalabilitySettings + +This console command prints the current Engine Scalability Settings to the logs. + +### SG_SetEngineScalabilitySettings + +This console command sets the Engine Scalability Settings for both the current game and the editor. It accepts a `Scalability` parameter with the following valid values: + +- `Low` +- `Medium` +- `High` +- `Epic` +- `Cinematic` +- `Auto` + +> [!NOTE] +> The `Auto` option is used for benchmarking purposes. It will adjust the engine +> scalability settings to one of the other levels based on the benchmarking +> results. diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/README.md b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/README.md new file mode 100644 index 0000000..4c04272 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/README.md @@ -0,0 +1,209 @@ +# Optimizing Your Project for Higher FPS + +Enhancing the performance and framerate of Unreal Engine VR applications, whether running standalone or streaming from a PC, can sometimes be challenging depending on the nature of your project. This guide will walk you through generic strategies that can significantly boost your project's performance and framerate with minimal effort. + +## Meta Quest Link Advanced Graphics Preferences + +When streaming from a PC to Meta Quest devices, the default refresh rate is set at `72 Hz`. However, you can increase this to `120 Hz`, which not only enhances the refresh rate but also reduces the rendering resolution, potentially improving performance. Follow these steps to make the adjustment: + +1. Open the Meta Quest Link app and navigate to the `Devices` tab. + +![Meta Quest Link - Devices](meta-quest-link-devices.png "Meta Quest Link - Devices") + +2. Choose the device for which you would like to tweak the refresh rate. + +![Meta Quest Link - Selected device](meta-quest-link-device-selected.png "Meta Quest Link - Selected device") + +3. In the device settings, scroll down to the `Advanced` section and select `Graphics Preferences`. + +![Meta Quest Link - Device advanced graphics preferences](meta-quest-link-device-advanced-graphics-preferences.png "Meta Quest Link - Device advanced graphics preferences") + +4. Choose your desired refresh rate. In this case select a refresh rate of `120 Hz`. After making your selection, click `OK`, and the Meta Quest Link app will restart to apply the changes. + +![Meta Quest Link - Setting the device refresh rate](meta-quest-link-device-advanced-graphics-preferences-refresh-rate.png "Meta Quest Link - Setting the device refresh rate") + +5. Once the Meta Quest Link app restarts, go back to the `Devices` tab, select your device, and confirm the refresh rate setting under `Advanced > Graphics Preferences`. + +![Meta Quest Link - 120 Hz refresh rate](meta-quest-link-device-advanced-graphics-preferences-refresh-rate-120hz.png "Meta Quest Link - 120 Hz refresh rate") + +6. Now, open your Unreal Engine project and navigate to `Project Settings`. Under `Engine > General Settings > Framerate`, you can fine-tune and experiment with the framerate settings to match your project's requirements. + +![Meta Quest Link - Framerate settings for the Unreal project](project-rendering-settings-framerate.png "Meta Quest Link - Framerate settings for the Unreal project") + +## Game User Settings and Engine Scalability Settings + +Unreal Engine offers predefined graphics quality profiles known as Engine Scalability Settings, which can be easily adjusted to optimize performance. These settings can be modified directly within the Unreal Editor through the Settings menu on the toolbar or dynamically at runtime using code. Importantly, these settings are universal, meaning changes made in the Unreal Editor will apply to the game when run in PIE (Play In Editor) mode, and settings adjusted via code will also affect the editor itself. + +![Game User Settings and Engine Scalability Settings - Unreal Editor Engine Scalability Settings](unreal-editor-engine-scalability-settings.png "Game User Settings and Engine Scalability Settings - Unreal Editor Engine Scalability Settings") + +> [!NOTE] +> The SenseGlove Unreal Engine Plugin includes specialized +> [console commands](../../misc/console-commands/) that allow you to switch +> between different Engine Scalability Settings on the fly. Please note that +> these commands require you to set up +> [SGGameInstance](../../getting-started/setup-senseglove-default-classes/sggameinstance.md) +> and +> [`SGGameUserSettings`](../../getting-started/setup-senseglove-default-classes/sggameusersettings.md). + +In order to switch between various Engine Scalability Settings, you can use the `Get Game User Settings` Blueprint function and then cast it to `SGGameInstance`. + +![Game User Settings and Engine Scalability Settings - Get Engine Scalability Settings Blueprint Function](blueprint-function-get-game-user-settings.png "Game User Settings and Engine Scalability Settings - Get Engine Scalability Settings Blueprint Function") + +> [!IMPORTANT] +> Unreal Engine's default Blueprint functions only allow you to set Engine +> Scalability Settings to `Low` or `Epic`. To access the full range of settings, +> `SGGameUserSettings` extends Blueprint access to all Engine Scalability +> Settings and includes hardware benchmarking to detect the optimal settings. +> Therefore, it's essential to make +> [`SGGameUserSettings`](../../getting-started/setup-senseglove-default-classes/sggameusersettings.md) +> or a subclass of it the default Game User Settings class to utilize all these +> features. + +The following Blueprint code from the [SGBasicDemo-OpenXR](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo-OpenXR) example scene demonstrates how to bind numeric keys `1` to `5` to set various Engine Scalability Settings, and key `0` to utilize hardware benchmarking to determine the optimal Engine Scalability Settings: + +- `0`: Use hardware-benchmarking to determine the optimal Engine Scalability Settings. +- `1`: Set Engine Scalability Settings to `Low`. +- `2`: Set Engine Scalability Settings to `Medium`. +- `3`: Set Engine Scalability Settings to `High`. +- `4`: Set Engine Scalability Settings to `Epic`. +- `5`: Set Engine Scalability Settings to `Cinematic`. + +![Game User Settings and Engine Scalability Settings - Binding different Engine Scalability Settings to numeric keys 0, 1, 2 inside SGPawn Blueprint](sgpawn-bind-engine-scalability-settings-1.png "Game User Settings and Engine Scalability Settings - Binding different Engine Scalability Settings to numeric keys 0, 1, 2 inside SGPawn Blueprint") + +![Game User Settings and Engine Scalability Settings - Binding different Engine Scalability Settings to numeric keys 3, 4, 5 inside SGPawn Blueprint](sgpawn-bind-engine-scalability-settings-2.png "Game User Settings and Engine Scalability Settings - Binding different Engine Scalability Settings to numeric keys 3, 4, 5 inside SGPawn Blueprint") + +> [!TIP] +> The +> [SGBasicDemo-OpenXR](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo-OpenXR) +> includes an example 3D widget actor that displays the current FPS and Engine +> Scalability Settings. This widget can be placed within a VR scene and is +> located in `All > Content > Blueprints > UI > BP_FPS3DWidget`. The underlying +> UMG widget can be found at `All > Content > Blueprints > UI > WB_FPS` within +> the Content Browser for the SGBasicDemo-OpenXR example scene. + +![Game User Settings and Engine Scalability Settings - SGBasicDemo-OpenXR UMG widget code for calculating the framerate and showing the current FPS and Engine Scalability Settings](sgbasicdemo-openxr-fps-engine-scalability-settings-umg-widget.png "Game User Settings and Engine Scalability Settings - SGBasicDemo-OpenXR UMG widget code for calculating the framerate and showing the current FPS and Engine Scalability Settings") + +## Optimizing Unreal Projects for Mobile + +We have the [SGBasicDemo-OpenXR](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo-OpenXR) project, which has been optimized for mobile. You can explore the project configuration by reviewing the settings inside the `Config` folder and compare them with your own project settings. In addition, here are some crucial guidelines and settings that you may want to adjust for further optimization: + +### General Rendering Settings + +**Forward Shading**: Enable Forward Shading for better performance. It’s more efficient on mobile platforms. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Forward Renderer](project-rendering-settings-forward-renderer.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Forward Renderer") + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Mobile](project-rendering-settings-mobile.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Mobile") + +**Mobile HDR**: Disable this setting. Mobile HDR can significantly affect performance, especially on lower-end devices. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - VR](project-rendering-settings-vr.png "Optimizing Unreal Projects for Mobile - Rendering Settings - VR") + +**Instanced Stereo**: Enable this setting. It is a rendering technique used in Unreal Engine primarily for virtual reality (VR) applications. Its main purpose is to optimize the rendering process when creating VR experiences by reducing the workload associated with rendering two slightly different images for each eye. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - VR](project-rendering-settings-vr.png "Optimizing Unreal Projects for Mobile - Rendering Settings - VR") + +**Mobile Multi-View**: Enable this setting. It is a rendering feature in Unreal Engine designed to optimize the performance of Virtual Reality (VR) applications on mobile devices, particularly when using VR platforms like Google Daydream or Samsung Gear VR. It is similar in concept to Instanced Stereo, but specifically optimized for mobile hardware. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - VR](project-rendering-settings-vr.png "Optimizing Unreal Projects for Mobile - Rendering Settings - VR") + +**Mobile Anti-Aliasing Method**: Use `FXAA (Fast Approximate Anti-Aliasing)` or `MSAA (Multisample Anti-Aliasing)`. `MSAA` is often preferred for mobile as it gives better visual quality without a huge performance hit. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Mobile](project-rendering-settings-mobile.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Mobile") + +**Reflection Capture Resolution**: Reduce this value (e.g., 128 or 256) to decrease the memory usage. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Reflections](project-rendering-settings-reflections.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Reflections") + +### Texture Settings + +**Enable virtual texture support**: Disable this setting. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Virtual Textures](project-rendering-settings-virtual-textures.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Virtual Textures") + +**Texture Streaming**: Enable texture streaming to ensure textures load progressively, which helps in reducing memory usage. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Textures](project-rendering-settings-textures.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Textures") + +**Texture Quality**: Lower the overall texture quality to Medium or Low depending on the target device capabilities. + +**Texture Compression**: Use ASTC compression for Android to ensure the textures are optimized for mobile devices. + +### Lighting Settings + +**Use Static Lighting**: Prefer static lighting over dynamic lighting for better performance. + +**Lightmap Resolution**: Use a lower lightmap resolution (e.g., 32 or 64) for mobile to reduce memory usage. + +**Dynamic Shadows**: Disable or minimize the use of dynamic shadows. If required, use CSM (Cascaded Shadow Maps) with low resolution and distance. + +**Distance Field Shadows/Ambient Occlusion**: Disable these features as they are costly on mobile platforms. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings](project-rendering-settings-default-settings.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings") + +### Post-Processing Settings + +**Bloom, Lens Flares, and Auto Exposure**: Minimize or disable these effects as they can be performance-intensive. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings](project-rendering-settings-default-settings.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings") + +**Screen Space Reflections**: Disable this setting as it is costly in terms of performance on mobile devices. + +**Motion Blur**: Disable this feature to save on processing power. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings](project-rendering-settings-default-settings.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Default Settings") + +### Materials and Shaders + +**Material Complexity**: Use simple materials with few instructions and limit the number of textures and shader nodes. + +**Specular Highlights**: Consider reducing or disabling specular highlights on materials to save on performance. + +**LOD (Level of Detail) Models**: Ensure that LODs are set up correctly for all models, with appropriate reduction in polygon count for distant objects. + +### Level of Detail (LOD) Settings + +**Mesh LODs**: Configure LODs for all meshes to reduce polygon count at distances. + +**Screen Size**: Adjust screen size settings for LODs to ensure they switch at appropriate distances for mobile screens. + +### Engine Scalability Settings + +**Resolution Scale**: Lower the resolution scale (e.g., 70% or 80%) to improve performance while maintaining visual quality. + +**View Distance**: Set to Medium or Low to reduce the amount of detail rendered at long distances. + +**Shadows**: Set to Low or Off for better performance. + +**Textures**: Set to Medium or Low depending on the device’s capabilities. + +**Effects**: Set to Low to reduce the complexity of visual effects. + +> [!NOTE] +> See +> [Game User Settings and Engine Scalability Settings](#game-user-settings-and-engine-scalability-settings) +> for more details. + +### Physics and Collision + +**Physics Simulation**: Limit the use of physics simulation where possible, as it can be expensive on mobile devices. + +**Collision Complexity**: Use simple collision meshes instead of complex ones to improve performance. + +### Audio Settings + +**Sample Rate**: Lower the sample rate to reduce memory usage and processing load. + +**Number of Audio Channels**: Limit the number of audio channels used in the project to reduce CPU usage. + +### Rendering API + +**Vulkan vs OpenGL ES**: Test your project with both Vulkan and OpenGL ES to see which provides better performance on your target devices. Vulkan often offers better performance but may not be supported on all devices. + +### Culling + +**Frustum Culling**: Ensure that frustum culling is enabled to avoid rendering objects outside of the camera’s view. + +**Occlusion Culling**: Enable occlusion culling to avoid rendering objects that are not visible due to being blocked by other objects. + +![Optimizing Unreal Projects for Mobile - Rendering Settings - Culling](project-rendering-settings-culling.png "Optimizing Unreal Projects for Mobile - Rendering Settings - Culling") diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/blueprint-function-get-game-user-settings.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/blueprint-function-get-game-user-settings.png new file mode 100644 index 0000000..81340ec --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/blueprint-function-get-game-user-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1577225d6c05b408bbe10e35088fae07d18e9457e3f46b13e48b78ab8f069db +size 38251 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate-120hz.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate-120hz.png new file mode 100644 index 0000000..100e1ea --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate-120hz.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abd29b739228b8c65ffb1f5ba38dc9264bd8d294fa8510fbe28c276f1aa0e88b +size 224506 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate.png new file mode 100644 index 0000000..9a77ef5 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences-refresh-rate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6561f66ff2bd8452abffc1d08d4b61a210480ca673ce67a0a0aeb1eb2772b5a1 +size 148447 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences.png new file mode 100644 index 0000000..aeeffef --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-advanced-graphics-preferences.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0214e54c91c4a274bb3bd1453f0bdda7faf3bb943e893d2877dacfc6222546f4 +size 224212 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-selected.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-selected.png new file mode 100644 index 0000000..91f5001 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-device-selected.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ac927122360562dbeea80d9d5032ee3bae3b8916fa013b017c1f579143d320 +size 365894 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-devices.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-devices.png new file mode 100644 index 0000000..b266b15 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/meta-quest-link-devices.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e07858b142464c5c8841d018785dafc1b7103aa9e6186f0a720e08529c88077d +size 228761 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-culling.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-culling.png new file mode 100644 index 0000000..57fcdaa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-culling.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31deb6ed0eb5138b7206c7b1b067ccc70860e89f79dcf5f0cf840539a84a820e +size 142836 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-default-settings.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-default-settings.png new file mode 100644 index 0000000..26b4bdf --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-default-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ca8d621afeb4fadd5a31abacfe53c8da703a439426bcb7fd5f50c3625ec2c23 +size 151440 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-forward-renderer.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-forward-renderer.png new file mode 100644 index 0000000..1c99cfd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-forward-renderer.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1581791dd6d5c7a41bcd23563de55c287c9bccd78402c3341e2dbb0685a2d67 +size 142196 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-framerate.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-framerate.png new file mode 100644 index 0000000..3eb58b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-framerate.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ac5c54e48b6e55f271be5774522133f39f9501d6a3ee0bcc5aeff3d2796289f +size 142985 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-mobile.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-mobile.png new file mode 100644 index 0000000..820c74c --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-mobile.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:149487c17e5abc9f230444d08047ee8e207148f2bd35ca6797282aa92faa9877 +size 149160 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-reflections.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-reflections.png new file mode 100644 index 0000000..dac5970 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-reflections.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0c62d5bb1b9e021021f6e00719f6195bf1c1a30c4328d130a474251a62e8175 +size 140564 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-textures.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-textures.png new file mode 100644 index 0000000..94de2dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-textures.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14fd6b874ba25f57142ec95ecf9c42ca76126587463cc9c1c759714876d8db66 +size 142653 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-virtual-textures.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-virtual-textures.png new file mode 100644 index 0000000..475033f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-virtual-textures.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33969d2e577376727b0b6484d53f26b7073fbd6173a586cfd0489af3fbcd623f +size 143423 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-vr.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-vr.png new file mode 100644 index 0000000..58cecb6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/project-rendering-settings-vr.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d8feeadc32d797093233abb254beec0156275bdb73a06f2f9035a7d4f7469ec +size 145134 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgbasicdemo-openxr-fps-engine-scalability-settings-umg-widget.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgbasicdemo-openxr-fps-engine-scalability-settings-umg-widget.png new file mode 100644 index 0000000..2a0bc3a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgbasicdemo-openxr-fps-engine-scalability-settings-umg-widget.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:181b0cd7e0c7b419e619467fa573bf92d4cecba293a2f3af5fe1328e50397cae +size 614088 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-1.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-1.png new file mode 100644 index 0000000..f48693a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-1.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d5b2041b7c7debd5214631b1b3a20e0aec84b095c4450a3c0a73b65db08b577 +size 645843 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-2.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-2.png new file mode 100644 index 0000000..b888073 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/sgpawn-bind-engine-scalability-settings-2.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba06ba16dca7621dc3a7ddb89872f67b3914401268e93878dbae20490ccf8904 +size 641465 diff --git a/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/unreal-editor-engine-scalability-settings.png b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/unreal-editor-engine-scalability-settings.png new file mode 100644 index 0000000..4e85944 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/optimize-higher-fps/unreal-editor-engine-scalability-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:397e41e6e2d808ec6fc76a02c3726525c3b3f344b8a8e820121b312aaa207be6 +size 414691 diff --git a/Plugins/SenseGlove/Handbook/src/misc/upgrade-guide/README.md b/Plugins/SenseGlove/Handbook/src/misc/upgrade-guide/README.md new file mode 100644 index 0000000..d7ae013 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/misc/upgrade-guide/README.md @@ -0,0 +1,52 @@ +# Upgrade Guide + +The transition from `v2.0.x` to `v2.1.x` introduces [numerous changes](../../appendix/changelog.md), including several breaking changes. The effort required to upgrade your project will vary depending on its complexity and which features of the SenseGlove Unreal Engine Project you are using. However, if you are working with a simple Blueprint project like [SGBasicDemo](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo), the upgrade process is quite straightforward. We successfully upgraded SGBasicDemo to [SGBasicDemo-OpenXR](https://dev.azure.com/SenseGlove/_git/SenseGlove-Unreal-SGBasicDemo-OpenXR) by following the procedure outlined below. + +These are the notable changes that might affect your project: + +- The SenseGlove Virtual Hand and Wrist Tracker components no longer rely on the SenseGlove Hand Pose data from the underlying SenseGlove API. Instead, they use `FXRMotionControllerData`. +- The virtual hand animation system has been revamped to use `FXRMotionControllerData` and no longer relies on SenseGlove Hand Angles. This means the virtual hand meshes are animated using world space transforms instead of parent bone space transforms. +- The Allbreaker virtual hand meshes have been removed and are no longer supported as they are incompatible with the new OpenXR tracking and animation system. + +> [!CAUTION] +> Please consult the [changelog](../../appendix/changelog.md) before upgrading +> your project to see if any change affects or breaks your current project. + +> [!NOTE] +> For upgrading older versions of the plugin to `v2.0.0`, +> [a YouTube tutorial](https://youtu.be/VbWfoep-Hsg) is available. +>
+> +>
+ +1. Remove the existing `Plugins/SenseGlove` folder from your project. + +2. [Obtain the latest `v2.1.x` version of the plugin](../../getting-started/installation/) either from [the Epic Games Launcher](../../getting-started/installation/epic-games-launcher.md) or [Microsoft Azure DevOps Repositories](../../getting-started/installation/microsoft-azure-devops-repositories.md) and place it in the `Plugins/SenseGlove` folder that you've just removed. + +3. It might be best to clean up and remove the following folders from your project before generating the project files or attempting to open your project with the Unreal Editor. This might prevent a certain class of build issues: + +``` +- Binaries +- Intermediate +- Saved +``` + +4. Build your project using your favorite IDE if it's a C++ project, or open your project's `.uproject` file with the Unreal Editor and wait for the Editor to build the necessary binaries and open the project. + +5. Remove the Allbreaker virtual hand meshes if you are using them, as they are no longer compatible with the new animation system. + +6. [Import and set up a set of compatible virtual hand meshes](../../getting-started/setup-virtual-hand-meshes/) such as the VRTemplate virtual hand meshes, and configure the materials, rigid bodies, and [the SenseGlove Grab and Touch Sockets using the SenseGlove Sockets Editor](../../getting-started/setup-virtual-hand-meshes/#setting-up-the-senseglove-grab-and-touch-sockets). + +7. Set up the [SGPawn](../../getting-started/setup-senseglove-default-classes/sgpawn.md) to use the new virtual hand meshes for the `HandLeft`, `HandRight`, `RealHandLeft`, and `RealHandRight` components. + +8. Adjust the [Virtual Hand Mesh Settings](../../plugin-configuration/plugin-settings/virtual-hand/mesh.md) and ensure the `Left Hand Reference Mesh` and `Right Hand Reference Mesh` are set correctly. + +9. Check and adjust the [Virtual Hand Animation Settings](../../plugin-configuration/plugin-settings/virtual-hand/animation.md) as needed. + +10. You might also want to [set up the Wrist Tracking Hardware](../../getting-started/setup-wrist-tracking-hardware/) to use the new experimental HMD auto-detection feature. This allows the plugin to automatically configure the wrist tracking hardware at runtime, rather than limiting your builds to a specific HMD. + +11. Set up the [`SGGameInstance`](../../getting-started/setup-senseglove-default-classes/sggameinstance.md) and [`SGGameUserSettings`](../../getting-started/setup-senseglove-default-classes/sggameusersettings.md) if you want to use the new [SenseGlove console commands](../../misc/console-commands/) or take advantage of the [Engine Scalability Settings to achieve higher framerates in your project](../../misc/optimize-higher-fps/#game-user-settings-and-engine-scalability-settings). + +12. Additionally, the latest release introduces the ability to use hand-tracking as an alternative to SenseGlove hardware—albeit without haptic feedback—for rapid development and testing. It's also recommended to enable the [Fallback to HandTracking if No Glove Detected](../../plugin-configuration/plugin-settings/tracking/glove-tracking.md) feature to seamlessly switch to hand-tracking when a glove isn't connected. + +13. If all steps have been followed correctly, your project should now be fully compatible with the new plugin release. diff --git a/Plugins/SenseGlove/Handbook/src/overview/README.md b/Plugins/SenseGlove/Handbook/src/overview/README.md new file mode 100644 index 0000000..8c836ba --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/overview/README.md @@ -0,0 +1,87 @@ +# Overview + +To help you navigate the SenseGlove Unreal Engine Handbook, we have organized the content into several key sections. This structured layout aims to simplify your journey through the SenseGlove Unreal Engine Plugin, providing clear and detailed guidance at every step. + +## 🚀 Getting Started + +This section covers the basics of the SenseGlove Unreal Engine Plugin: + +- [Installation](../getting-started/installation/) + - [Through the Epic Games Launcher](../getting-started/installation/epic-games-launcher.md) + - [Through Microsoft Azure DevOps Repositories](../getting-started/installation/microsoft-azure-devops-repositories.md) +- [Enabling and Verifying the Plugin Version](../getting-started/plugin-verify-version-enable/) +- [SenseCom](../getting-started/sensecom/) + - [SenseCom on GNU/Linux](../getting-started/sensecom/gnu-linux/) + - [Connect to Nova gloves using Blueman Bluetooth Manager](../getting-started/sensecom/gnu-linux/blueman-bluetooth-manager.md) + - [Connect to Nova gloves using Command-line](../getting-started/sensecom/gnu-linux/command-line.md) + - [SenseCom on Microsoft Windows](../getting-started/sensecom/microsoft-windows.md) +- [Enabling XR_EXT_hand_tracking on VR Headsets](../getting-started/enabling-xr-ext-hand-tracking-vr-headsets/) +- [Setup SenseGlove Default Classes](../getting-started/setup-senseglove-default-classes/) + - [SGPawn](../getting-started/setup-senseglove-default-classes/sgpawn.md) + - [SGPlayerController](../getting-started/setup-senseglove-default-classes/sgplayercontroller.md) + - [SGGameModeBase](../getting-started/setup-senseglove-default-classes/sggamemodebase.md) + - [SGGameInstance](../getting-started/setup-senseglove-default-classes/sggameinstance.md) + - [SGGameUserSettings](../getting-started/setup-senseglove-default-classes/sggameusersettings.md) +- [Setup the Virtual Hand Meshes](../getting-started/setup-virtual-hand-meshes/) +- [Setup the Wrist Tracking Hardware](../getting-started/setup-wrist-tracking-hardware/) +- [Setup the Grab/Release System](../getting-started/setup-grab-release-system/) +- [Setup the Touch System](../getting-started/setup-touch-system/) + +## ⚙️ Plugin Configuration + +This section provides detailed information on configuring the plugin: + +- [Plugin Settings](../plugin-configuration/plugin-settings/) + - [Initialization](../plugin-configuration/plugin-settings/initialization/) + - [Game User Settings](../plugin-configuration/plugin-settings/game-user-settings/) + - [Hardware-benchmarking](../plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md) + - [Tracking](../plugin-configuration/plugin-settings/tracking/) + - [Glove-tracking](../plugin-configuration/plugin-settings/tracking/glove-tracking.md) + - [Hand-tracking](../plugin-configuration/plugin-settings/tracking/hand-tracking.md) + - [HMD-tracking](../plugin-configuration/plugin-settings/tracking/hmd-tracking.md) + - [Wrist-tracking](../plugin-configuration/plugin-settings/tracking/wrist-tracking/) + - [Debugging](../plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md) + - [Virtual Hand](../plugin-configuration/plugin-settings/virtual-hand/) + - [Animation](../plugin-configuration/plugin-settings/virtual-hand/animation.md) + - [Debugging](../plugin-configuration/plugin-settings/virtual-hand/debugging.md) + - [Grab](../plugin-configuration/plugin-settings/virtual-hand/grab.md) + - [Haptics](../plugin-configuration/plugin-settings/virtual-hand/haptics.md) + - [Mesh](../plugin-configuration/plugin-settings/virtual-hand/mesh.md) + - [Touch](../plugin-configuration/plugin-settings/virtual-hand/touch.md) +- [Overriding Settings](../plugin-configuration/overriding-settings/) + +## 💡 Miscellaneous + +Toipcs that do not fall under any specific category: + +- [SenseGlove Console Commands](../misc/console-commands/) +- [Deploying to Android (Standalone)](../misc/android-standalone-deployment/) +- [Upgrade Guide](../misc/upgrade-guide/) +- [Optimizing for More FPS](../misc/optimize-higher-fps/) + +## 🛠️ Advanced Topics + +For users familiar with the basics, this section explores advanced features of the plugin: + +- [Safe Glove Access in Blueprint](../advanced-topics/safe-glove-access-blueprint/) +- [OpenXR](../advanced-topics/openxr/) + - [Consuming FXRMotionControllerData](../advanced-topics/openxr/consuming-fxrmotioncontrollerdata/) + - [Blueprints](../advanced-topics/openxr/consuming-fxrmotioncontrollerdata/blueprint.md) + - [C++](../advanced-topics/openxr/consuming-fxrmotioncontrollerdata/cpp.md) + +## 🔌 Low-Level API + +This section delves into the SenseGlove low-level API: + +- [Low-Level Blueprints API](../low-level-api/blueprint.md) +- [Low-Level C++ API](../low-level-api/cpp.md) + +## 📑 Appendix + +The appendix contains various extra useful information: + +- [Platform Support Matrix](../appendix/platform-support-matrix.md) +- [Planned Features Completion Status](../appendix/planned-features-completion-status.md) +- [Changelog](../appendix/changelog.md) +- [Directory Structure](../appendix/directory-structure.md) +- [Extra Resources](../appendix/extra-resources.md) diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/overriding-settings/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/overriding-settings/README.md new file mode 100644 index 0000000..7959b90 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/overriding-settings/README.md @@ -0,0 +1,11 @@ +# Overriding The Plugin Settings + +The override system allows you to customize and override the global settings for the SenseGlove Unreal Engine Plugin through specific subcomponents where applicable. This feature enables more precise control over the behavior of individual components within your project. + +## The SenseGlove Virtual Hand Component + +The Virtual Hand Component provides the ability to override certain aspects of the global plugin settings, allowing for tailored interactions and behaviors specific to virtual hands. For more details, refer to [the Virtual Hand Settings section](../plugin-settings/virtual-hand/#overriding-the-virtual-hand-settings-from-the-virtual-hand-component). + +## The SenseGlove Wrist Tracker Component + +The Wrist Tracker Component enables overriding of specific global plugin settings, providing flexibility in wrist tracking configurations. For additional information, see [the Wrist-tracker Settings section](../plugin-settings/tracking/wrist-tracking/#overriding-the-wrist-tracking-settings-from-the-wrist-tracker-component). diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/README.md new file mode 100644 index 0000000..ddd63aa --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/README.md @@ -0,0 +1,18 @@ +# The Plugin Settings + +Once [the SenseGlove Unreal Engine Plugin is enabled](../getting-started/plugin-verify-version-enable/) the plugin settings can be accessed through `Edit > Project Setting...` inside your project's Unreal Editor. + +![Plugin Settings - Accessing the SenseGlove Unreal Engine Plugin Settings](accessing-senseglove-plugin-settings.png "Plugin Settings - Accessing the SenseGlove Unreal Engine Plugin Settings") + +The SenseGlove Unreal Engine Plugin offers fine-grained control over various aspects of its functionality through its settings system. It also allows you to override specific settings from subcomponents when possible. In the following sections, we will explore the settings and the override system in detail. + +![Plugin Settings - The SenseGlove Unreal Engine Plugin Settings](senseglove-plugin-settings.png "Plugin Settings - The SenseGlove Unreal Engine Plugin Settings") + +## Settings Categories + +The plugin settings are organized into four main categories, and each of those might contain its own sub-categories. These main categories are as follows: + +- [The Initialization Settings](initialization/) +- [The Game User Settings](game-user-settings/) +- [The Tracking Settings](tracking/) +- [The Virtual Hand Settings](virtual-hand/) diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/accessing-senseglove-plugin-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/accessing-senseglove-plugin-settings.png new file mode 100644 index 0000000..0a7c07a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/accessing-senseglove-plugin-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6131c72c4ace7947075db029a007d5a68d21e1f5d65d16dfeabb655a20c8b7ad +size 301207 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/README.md new file mode 100644 index 0000000..403f2dc --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/README.md @@ -0,0 +1,5 @@ +# The Game User Settings + +The Game User Settings control the behavior of the SenseGlove instance of [`UGameUserSettings`](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/UGameUserSettings). The `USGGameUserSettings` class extends the functionality of `UGameUserSettings` to provide enhanced customization options specifically for applications that utilize the SenseGlove Unreal Engine Plugin. + +![The Game User Settings](game-user-settings.png "The Game User Settings") diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/game-user-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/game-user-settings.png new file mode 100644 index 0000000..8ed5c82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/game-user-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:294513818dac48078bd9063bad407edfb245c6754c1cb1339f7fd4e702d6da04 +size 15499 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking-settings.png new file mode 100644 index 0000000..8ed5c82 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:294513818dac48078bd9063bad407edfb245c6754c1cb1339f7fd4e702d6da04 +size 15499 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md new file mode 100644 index 0000000..7a4d7fb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/game-user-settings/hardware-benchmarking.md @@ -0,0 +1,23 @@ +# The Hardware-benchmarking Settings + +The settings in this section are utilized by the `USGGameUserSettings::SetEngineScalabilitySettings()` method when the `Scalability` parameter is set to `ESGEngineScalabilitySettings::Auto`. When the engine scalability settings set to auto the graphics settings are determined by running a hardware benchmark by calling the [`UGameUserSettings::RunHardwareBenchmark()`](https://dev.epicgames.com/documentation/en-us/unreal-engine/API/Runtime/Engine/GameFramework/UGameUserSettings/RunHardwareBenchmark). The settings listed here are basically the parameters passed to `UGameUserSettings::RunHardwareBenchmark()`. + +![The Hardware-benchmarking Settings](hardware-benchmarking-settings.png "The Hardware-benchmarking Settings") + +## WorkScale + +The `WorkScale` parameter determines the intensity of the benchmark test. Higher values result in more intensive testing, which can help achieve more accurate scalability settings. + +The default value is `10`. + +## CPUMultiplier + +The `CPUMultiplier` parameter allows you to adjust the impact of CPU performance on the benchmark results. Increasing this value will emphasize CPU performance more heavily in determining scalability settings. + +The default value is `1.0f`. + +## GPUMultiplier + +The `GPUMultiplier` parameter lets you modify the influence of GPU performance on the benchmark outcomes. A higher value will increase the weight of GPU performance in setting scalability. + +The default value is `1.0f`. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/README.md new file mode 100644 index 0000000..dfd80b7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/README.md @@ -0,0 +1,24 @@ +# The Plugin Initialization Settings + +The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is initialized, allowing you to customize its behavior to suit your project's needs. + +![The Plugin Initialization Settings](initialization-settings.png "The Plugin Initialization Settings") + +## bValidateIfDefaultClassesAreSGCompliant + +If enabled, the plugin tries to check and validate whether the default for classes such as GameMode, GameInstance, etc. are indeed SenseGlove classes or SenseGlove-derived classes. If not, it attempts to set them. If you don't like this behavior for whatever reason, consider disabling this option. + +By default, this option is disabled. + +> [!CAUTION] +> Due to the current initialization mechanism, setting the default classes might +> occasionally fail. Therefore, it's essential to verify that the default +> classes have been correctly set. You can do this by checking the following +> sections in the project settings: +> - `Project Settings > Project > Maps & Modes > Default Modes > Default GameMode` +> - `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Default Pawn Class` +> - `Project Settings > Project > Maps & Modes > Default Modes > Selected GameMode > Player Controller Class` +> - `Project Settings > Project > Maps & Modes > Game Instance > Game Instance Class` +> - `Project Settings > Engine > General Settings > Default Classes > Advanced > Game User Settings Class` + +For more information visit [the SenseGlove default classes](../../../getting-started/setup-senseglove-default-classes/). diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/initialization-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/initialization-settings.png new file mode 100644 index 0000000..c3bc3a9 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/initialization/initialization-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44c080482da7b2e588d874f4d9fa87cc7acdb1074348b60de026a36c23a3cf93 +size 11170 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/senseglove-plugin-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/senseglove-plugin-settings.png new file mode 100644 index 0000000..f1ecbd3 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/senseglove-plugin-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e585e29d756f5f4ed9197885681ab5fe499bd69be4c680ef39990292d630964 +size 136177 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/README.md new file mode 100644 index 0000000..f2ad057 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/README.md @@ -0,0 +1,41 @@ +# The Tracking Settings + +The tracking settings are primarily used by the SenseGlove `Tracking` module and are divided into various subsections, each focusing on a specific aspect of tracking. These subsections, along with the other settings directly provided by this section, provide comprehensive control over the tracking functionalities. The subsections are as follows: + +- [The Glove-tracking Settings](glove-tracking.md) +- [The Hand-tracking Settings](hand-tracking.md) +- [The HMD-tracking Settings](hmd-tracking.md) +- [The Wrist-tracking Settings](wrist-tracking/) + +![The Tracking Settings](tracking-settings.png "The Tracking Settings") + +## bFallbackToHandTrackingIfNoGloveDetected + +Determines whether to fallback to hand-tracking, or not, when no SenseGlove device is detected: + +- If disabled, only a real glove will be tracked. +- If enabled, the plugin will fall back to hand-tracking when it's available and supported by the HMD device. + +> [!NOTE] +> Disabling this option hides the hand-tracking settings section, while enabling +> it makes the hand-tracking settings visible. + +## Glove Tracking Settings + +Provides the tracking settings related to SenseGlove devices. + +## Hand Tracking Settings + +The settings in this section only affects the hand-tracking functionality when it's enabled and available. When enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course without the haptics feedback provided by the SenseGlove devices. + +> [!IMPORTANT] +> If you don't see the hand-tracking settings, ensure that the option +> `bFallbackToHandTrackingIfNoGloveDetected` is checked. + +## HMD Tracking Settings + +Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality. + +## Wrist Tracking Settings + +Provides the tracking settings applicable to wrist-tracking hardware. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking-settings.png new file mode 100644 index 0000000..e9ea5ae --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de24e6cf88e51ea60b9a1249832e5761372941f6d3234978fe37400a63437aed +size 19651 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking.md new file mode 100644 index 0000000..67ea8ad --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/glove-tracking.md @@ -0,0 +1,11 @@ +# The Glove-tracking Settings + +Provides the tracking settings related to SenseGlove devices. + +![The Glove-tracking Settings](glove-tracking-settings.png "The Glove-tracking Settings") + +## GloveConnectivityCheckInterval + +The interval in which the tracking module checks for glove connectivity. + +The default is `16.666666f` which means `60` times per second. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking-settings.png new file mode 100644 index 0000000..a522295 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80a16bdedf6849544fbe859b3b3fca242f958205176878a7a5f98c3240ad9de4 +size 24874 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking.md new file mode 100644 index 0000000..06b04b6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hand-tracking.md @@ -0,0 +1,17 @@ +# The Hand-tracking Settings + +The settings in this section only affects the hand-tracking functionality when it's enabled and available. When enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course without the haptics feedback provided by the SenseGlove devices. + +> [!IMPORTANT] +> If you don't see the hand-tracking settings, ensure that the option +> `bFallbackToHandTrackingIfNoGloveDetected` is checked. + +![The Hand-tracking Settings](hand-tracking-settings.png "The Hand-tracking Settings") + +## bUseMoreSpecificMotionSourceNames + +If disabled, (the default) the motion sources for hand tracking will be of the form `[Left|Right][Keypoint]`. If enabled, they will be of the form `HandTracking[Left|Right][Keypoint]`. It is recommended to be enabled to avoid collisions between motion sources from different device types. + +## bSupportLegacyControllerMotionSources + +If enabled, hand tracking supports the `Left` and `Right` legacy motion sources. If disabled, it does not. It is recommended to be disabled unless you need legacy compatibility in older unreal projects. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking-settings.png new file mode 100644 index 0000000..181455f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3190fc47434fa3febc611c5ddb56b00ddc9236e59ee77654f6b2ffcc6fe53ce +size 20581 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking.md new file mode 100644 index 0000000..21e065a --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/hmd-tracking.md @@ -0,0 +1,9 @@ +# The HMD-tracking Settings + +Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality. + +![The HMD-tracking Settings](hmd-tracking-settings.png "The HMD-tracking Settings") + +## ViveHMDDetectionPriority + +Determines which VIVE HMD to prioritize for detection, as the current detection mechanism cannot differentiate between the HTC VIVE Focus 3 and the HTC VIVE XR Elite. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/tracking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/tracking-settings.png new file mode 100644 index 0000000..107fb5d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/tracking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:809983f35b2b9b3cd8739deb6cb6e32a888d127f171467ee64eac2a8e22e167d +size 20639 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/README.md new file mode 100644 index 0000000..1eed7d7 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/README.md @@ -0,0 +1,87 @@ +# The Wrist-tracking Settings + +Provides the tracking settings applicable to wrist-tracking hardware. + +![The Wrist-tracking Settings](wrist-tracking-settings.png "The Wrist-tracking Settings") + +## TrackingHardware + +Specifies the type of tracking hardware to use. If set to `None`, the plugin attempts at HMD auto-detection to automatically specify a compatible tracking hardware. If set to `Custom`, aby desired location and rotation can be specified. + +At the moment the following hardware are supported: + +- Quest 2 Controllers +- Quest 3 Controllers +- Quest Pro Controllers +- VIVE Focus 3 Wrist Trackers +- VIVE Trackers + +![The Wrist-tracking Settings - Supported Hardware](wrist-tracking-settings-supported-hardware.png "The Wrist-tracking Settings - Supported Hardware") + +> [!CAUTION] +> HMD auto-detection is currently an experimental feature and may fail because +> HMD vendors occasionally change the properties utilized by the plugin for HMD +> detection. If you encounter issues, such as incorrect tracker offsets, it is +> recommended to explicitly specify the tracking hardware. + +> [!CAUTION] +> Due to highly experimental nature of the HMD auto-detection feature, the HTC +> VIVE Focus 3 and HTC XR Elite cannot be distinguished from each other in the +> current iteration. However, since the tracker devices and offsets for both +> headsets are the same, this should not affect performance or functionality. +> The order in which the HMD is detected can be specified through the +> [HMD-tracker setting `ViveHMDDetectionPriority`](../hmd-tracking.html#vivehmddetectionpriority). + +## TrackingHardwareLocationOffsetLeftHand + +Sets a custom location offset for left hand's wrist-tracking hardware. + +> [!NOTE] +> This setting is visible and valid only if TrackingHardware is set to `Custom`. + +## TrackingHardwareLocationOffsetRightHand + +Sets a custom location offset for right hand's wrist-tracking hardware. + +> [!NOTE] +> This setting is visible and valid only if TrackingHardware is set to `Custom`. + +## TrackingHardwareRotationOffsetLeftHand + +Sets a custom rotation offset for left hand's wrist-tracking hardware. + +> [!NOTE] +> This setting is visible and valid only if TrackingHardware is set to `Custom`. + +## TrackingHardwareRotationOffsetRightHand + +Sets a custom rotation offset for right hand's wrist-tracking hardware. + +> [!NOTE] +> This setting is visible and valid only if TrackingHardware is set to `Custom`. + +## LeftHandMotionSource + +Determines the motion source for the left hand. For Oculus HMDs, this is usually `Left`, and for VIVE HMDs, it's typically `LeftFoot`. + +> [!NOTE] +> For VIVE devices using SteamVR, the motion source hardware for the left hand +> can be specified by the user through the SteamVR app. + +## RightHandMotionSource + +Determines the motion source for the right hand. For Oculus HMDs, this is usually `Right`, and for VIVE HMDs, it's typically `RightFoot`. + +> [!NOTE] +> For VIVE devices using SteamVR, the motion source hardware for the right hand +> can be specified by the user through the SteamVR app. + +## DebuggingSettings + +Provides [debugging options](debugging.md) for visually debugging the wrist tracker. + +## Overriding the Wrist-tracking Settings from the Wrist Tracker Component + +It's possible to override some of the wrist tracker settings through the details panel of any specific Wrist Tracker Component. When overriden by enabling the `SenseGlove > Wrist Tracking Settings Override > Override Plugin Settings` option inside the details panel, these settings take precedence over the plugin's global settings. + +![The Wrist-tracking Settings Overrides](wrist-tracking-settings-overrides.png "The Wrist-tracking Settings Overrides") diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md new file mode 100644 index 0000000..2f8899d --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/debugging.md @@ -0,0 +1,13 @@ +# The Wrist-tracking Debugging Settings + +Provides debugging options for visually debugging the wrist tracker. + +![The Wrist-tracking Debugging Settings](wrist-tracking-debugging-settings.png "The Wrist-tracking Debugging Settings") + +## bDrawDebugWristTracker + +If enabled, visualizes the debug wrist trackers where possible. + +## DebugWristTrackerSettings + +Visible and valid only if `bDrawDebugGizmo` is enabled. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-debugging-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-debugging-settings.png new file mode 100644 index 0000000..1d6bc24 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-debugging-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3de49556eac4d11cef27a80c536bdab611bb114608ec79baa6caf7ff6bfe5977 +size 50330 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-overrides.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-overrides.png new file mode 100644 index 0000000..7c03d06 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-overrides.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5028f058838f040c2b1476846b9f696eb6a07e2f98993554dbd4528983bace10 +size 313233 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-supported-hardware.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-supported-hardware.png new file mode 100644 index 0000000..9cdae0f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings-supported-hardware.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92b0d5f7c7c3d1853a8061842359f096c279a655078426bec708b3350a84a118 +size 34865 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings.png new file mode 100644 index 0000000..1b592dd --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/tracking/wrist-tracking/wrist-tracking-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b60c17703d63e2e808ae977ff08082a283e0e917024f639b6f805f4bff5aaa +size 27290 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/README.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/README.md new file mode 100644 index 0000000..cfcafd0 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/README.md @@ -0,0 +1,50 @@ +# The Virtual Hand Settings + +The Virtual Hand Settings are utilized by various SenseGlove modules such as `Debug`, `Editor`, `Tracking`, and the main module. These settings are divided into several subsections, each focusing on a specific aspect of the virtual hand functionality. Together with the settings provided directly in this section, they offer comprehensive control over any system or component that utilizes the virtual hand. The subsections are as follows: + +- [The Animation Settings](animation.md) +- [The Debugging Settings](debugging.md) +- [The Grab Settings](grab.md) +- [The Haptics Settings](haptics.md) +- [The Mesh Settings](mesh.md) +- [The Touch Settings](touch.md) + +![The Virtual Hand Settings](virtual-hand-settings.png "The Virtual Hand Settings") + +## bVisibleWhenHandDataUnavailable + +Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available. By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data is currently available. + +## Animation Settings + +Controls how the virtual hand model is animated by the animation system. + +## Debugging Settings + +Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a debug virtual hand by drawing all individual hand joints. + +## Grab Settings + +Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab system to function. + +The `SGPawn` also utilizes these settings to set up the grab colliders on the virtual hand components. + +## Haptics Settings + +Utilized by the haptics system. + +## Mesh Settings + +Utilized by the SenseGlove `Tracking` module to account for the current virtual hand mesh when generating hand pose data, resulting in more accurate glove or hand data representation and also smoother animations. + +## Touch Settings + +Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Touch system to function. + +The `SGPawn` also utilizes these settings to set up the touch colliders on the virtual hand components. + +## Overriding the Virtual Hand Settings from the Wrist Tracker Component + +It's possible to override some of the virtual hand settings through the details panel of any specific Virtual Hand Component. When overriden by enabling the `SenseGlove > Virtual Hand Settings Override > Override Plugin Settings` option inside the details panel, these settings take precedence over the plugin's global settings. + +![The Virtual Hand Settings Overrides](virtual-hand-settings-overrides.png "The Virtual Hand Settings Overrides") diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/animation.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/animation.md new file mode 100644 index 0000000..1ceee85 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/animation.md @@ -0,0 +1,13 @@ +# The Virtual Hand Animation Settings + +Controls how the virtual hand model is animated by the animation system. + +![The Virtual Hand Animation Settings](virtual-hand-animation-settings.png "The Virtual Hand Animation Settings") + +## AnimationBoneRotationCorrectionOffset + +Specifies the offset to apply to each bone's rotation when translating hand pose data to the virtual hand bones. This is useful if the virtual hand mesh was imported with an initial rotation. For example, the virtual hand model shipped with Unreal Engine's VRTemplate typically has an initial `90.0f` degrees rotation on the `Yaw` axis. By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind. + +## bShouldAnimationApplyBoneLocation + +When enabled, the animation system applies the joint locations to the current virtual hand mesh bones in addition to the joint rotation. Otherwise, only the joint rotations are applied, and joint locations are ignored, leaving the bone locations untouched on the virtual hand mesh when animating it. Enabling this option typically improves the virtual hand animation. By default, this option is enabled. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/debugging.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/debugging.md new file mode 100644 index 0000000..ff48bbb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/debugging.md @@ -0,0 +1,25 @@ +# The Virtual Hand Debugging Settings + +Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a debug virtual hand by drawing all individual hand joints. + +![The Virtual Hand Debugging Settings](virtual-hand-debugging-settings.png "The Virtual Hand Debugging Settings") + +## bDrawDebugVirtualHand + +If enabled, visualizes the debug virtual hand where possible. + +## DrawingMode + +Determines the virtual hand drawing mode. If set to `CubicJoints`, for every joint a debug cube will be drawn. If set to `GizmoJoints`, for every joint a debug gizmo will be drawn. + +## DebugCubicHandSettings + +Visible and valid only if `bDrawDebugVirtualHand` is enabled and `DrawingMode` has been set to `ESGDebugVirtualHandDrawingMode::CubicJoints`. + +![The Virtual Hand Debugging Settings - Cubic Joints Drawing Mode](virtual-hand-debugging-cubic-joints-drawing-mode-settings.png "The Virtual Hand Debugging Settings - Cubic Joints Drawing Mode") + +## DebugGizmoHandSettings + +Visible and valid only if `bDrawDebugVirtualHand` is enabled and `DrawingMode` has been set to `ESGDebugVirtualHandDrawingMode::GizmoJoints`. + +![The Virtual Hand Debugging Settings - Gizmo Joints Drawing Mode](virtual-hand-debugging-gizmo-joints-drawing-mode-settings.png "The Virtual Hand Debugging Settings - Gizmo Joints Drawing Mode") diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/grab.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/grab.md new file mode 100644 index 0000000..91f4e1e --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/grab.md @@ -0,0 +1,31 @@ +# The Virtual Hand Grab Settings + +Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab system to function. + +The `SGPawn` also utilizes these settings to set up the grab colliders on the virtual hand components. + +![The Virtual Hand Grab Settings](virtual-hand-grab-settings.png "The Virtual Hand Grab Settings") + +## GrabAttachPointSocketName + +The default socket name for the grab attach point, usually located at the palm of the hand. + +## GrabAttachPointSocketTransform + +The default socket transform (location, rotation, scale) for the grab attach point, usually located at the palm of the hand. + +## DefaultColliderSize + +The default collider size for the fingers' grab colliders. + +## ThumbColliderSocketName + +The default socket name for the thumb finger's grab collider, usually located at the tip of the thumb finger. + +## IndexColliderSocketName + +The default socket name for the index finger's grab collider, usually located at the tip of the index finger. + +## MiddleColliderSocketName + +The default socket name for the middle finger's grab collider, usually located at the tip of the middle finger. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/haptics.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/haptics.md new file mode 100644 index 0000000..ea16f5b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/haptics.md @@ -0,0 +1,9 @@ +# The Virtual Hand Haptics Settings + +Utilized by the haptics system. + +![The Virtual Hand Haptics Settings](virtual-hand-haptics-settings.png "The Virtual Hand Haptics Settings") + +## bAutoStopAllHapticsOnEndPlay + +Forces all haptics to stop automatically on the `EndPlay` event. This is useful for situations where the simulation has ended, but ongoing haptic feedback might remain active on the glove indefinitely. By default, this setting is enabled. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/mesh.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/mesh.md new file mode 100644 index 0000000..1caa384 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/mesh.md @@ -0,0 +1,71 @@ +# The Virtual Hand Mesh Settings + +Utilized by the SenseGlove `Tracking` module to account for the current virtual hand mesh when generating hand pose data, resulting in more accurate glove or hand data representation and also smoother animations. + +![The Virtual Hand Mesh Settings](virtual-hand-mesh-settings.png "The Virtual Hand Mesh Settings") + +# LeftHandReferenceMesh + +The virtual hand model for the left hand is to be used by the SenseGlove `Tracking` module to generate all the `26` joint data present in the `FXRMotionControllerData`. The main reason the `Tracking` module requires a virtual hand mesh as a reference is the SenseGlove Hand Pose format only provides `15` joints. So, the remaining joint data for `FXRMotionControllerData` are calculated from a virtual hand mesh compatible with the Epic rig and also the values specified by `DistalPhalangesLengthSettings`. Furthermore, when calculating the existing joints data, their current locations and rotations are taken into account in calculating the resulting `FXRMotionControllerData`. + +By default, no virtual hand mesh is set. + +> [!CAUTION] +> If no virtual hand mesh is set, the `Tracking` module will fall back to +> hard-coded values extracted from the standard virtual hand model shipped by +> Unreal Engine VRTemplate. This may result in distorted hand mesh while +> animating a hand in case a different hand mesh other than the default Epic +> virtual hand mesh is being set on the virtual hand components. + +# RightHandReferenceMesh + +The virtual hand model for the right hand is to be used by the SenseGlove `Tracking` module to generate all the `26` joint data present in the `FXRMotionControllerData`. The main reason the `Tracking` module requires a virtual hand mesh as a reference is the SenseGlove Hand Pose format only provides `15` joints. So, the remaining joint data for `FXRMotionControllerData` are calculated from a virtual hand mesh compatible with the Epic rig and also the values specified by `DistalPhalangesLengthSettings`. Furthermore, when calculating the existing joints data, their current locations and rotations are taken into account in calculating the resulting `FXRMotionControllerData`. + +By default, no virtual hand mesh is set. + +> [!CAUTION] +> If no virtual hand mesh is set, the `Tracking` module will fall back to +> hard-coded values extracted from the standard virtual hand model shipped by +> Unreal Engine VRTemplate. This may result in distorted hand mesh while +> animating a hand in case a different hand mesh other than the default Epic +> virtual hand mesh is being set on the virtual hand components. + +# DistalPhalangesLengthSettings + +The length of distal phalanges that cannot be retrieved from any virtual hand mesh compliant with the Epic standard rig. Also, the SenseGlove Hand Pose format does not provide these. This is used by SenseGlove `Tracking` module to calculate an `FXRMotionControllerData` the all `26` joints. The values you specify here depend on the shape of the virtual hand mesh and the defaults are approximated for the virtual hand model shipped with the Unreal Engine VRTemplate. + +## RootBoneRotationCorrection + +Used mostly by the SenseGlove `Tracking` module and `SGPawn` to offset for any initial rotation during the virtual hand mesh import process. This is the case for example with the virtual hand model shipped with Unreal Engine's VRTemplate, which typically has an initial `-90.0f` degrees rotation on the `Yaw` axis. By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind. + +## LeftHandDefaultReferenceBoneTransforms + +Read-only and for internal use only. + +## RightHandDefaultReferenceBoneTransforms + +Read-only and for internal use only. + +## LeftHandBoneNames + +Read-only and for internal use only. + +## RightHandBoneNames + +Read-only and for internal use only. + +## DefaultLeftHandMeshPath + +Read-only and for internal use only. + +## DefaultLeftHandMeshPathOnly + +Read-only and for internal use only. + +## DefaultRightHandMeshPath + +Read-only and for internal use only. + +## DefaultRightHandMeshPathOnly + +Read-only and for internal use only. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/touch.md b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/touch.md new file mode 100644 index 0000000..2f46607 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/touch.md @@ -0,0 +1,31 @@ +# The Virtual Hand Touch Settings + +Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Touch system to function. + +The `SGPawn` also utilizes these settings to set up the touch colliders on the virtual hand components. + +![The Virtual Hand Touch Settings](virtual-hand-touch-settings.png "The Virtual Hand Touch Settings") + +## DefaultColliderSize + +The default collider size for the fingers' touch colliders. + +## ThumbColliderSocketName + +The default socket name for the thumb finger's touch collider, usually located at the tip of the thumb finger. + +## IndexColliderSocketName + +The default socket name for the index finger's touch collider, usually located at the tip of the index finger. + +## MiddleColliderSocketName + +The default socket name for the middle finger's touch collider, usually located at the tip of the middle finger. + +## RingColliderSocketName + +The default socket name for the ring finger's touch collider, usually located at the tip of the ring finger. + +## PinkyColliderSocketName + +The default socket name for the pinky finger's touch collider, usually located at the tip of the pinky finger. diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-animation-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-animation-settings.png new file mode 100644 index 0000000..48e072f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-animation-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e49e1984c9c0f8087da0837fb860586360b6e32a1f61d7d8654b0bb0ca4c1290 +size 28608 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-cubic-joints-drawing-mode-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-cubic-joints-drawing-mode-settings.png new file mode 100644 index 0000000..d6603ed --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-cubic-joints-drawing-mode-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f377ec0080a9921b4e95578a11991db2942c055d410ebd85d3b093311f0378b +size 41317 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-gizmo-joints-drawing-mode-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-gizmo-joints-drawing-mode-settings.png new file mode 100644 index 0000000..68c834f --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-gizmo-joints-drawing-mode-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49e21f9c6da7e30293850b071383b23ae1110e33ce45e78a1dc7df07497ad206 +size 44243 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-settings.png new file mode 100644 index 0000000..3c0a716 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-debugging-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f99db8a9369915a866f477be777ba5cb0b0a4edb1f8a32e6558dfac39e7d6088 +size 26009 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-grab-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-grab-settings.png new file mode 100644 index 0000000..2fcbe64 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-grab-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2615d70078335509c746fa675ab24f9f54a699cabf05462f1ebdb565dfedfb34 +size 52465 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-haptics-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-haptics-settings.png new file mode 100644 index 0000000..f96dadb --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-haptics-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39a6f3128a94d726e4870e8a52af9c865821d45ea218d0bc85dc749eaafcd2ee +size 23094 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-mesh-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-mesh-settings.png new file mode 100644 index 0000000..f09dc67 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-mesh-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:332af801b98e22638674b7a54607e83be0adcc539401a01db307c9c1f4017137 +size 93206 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings-overrides.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings-overrides.png new file mode 100644 index 0000000..ca28be6 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings-overrides.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c4b7cd7ac25c09755c37314e4b08454f60bac18fc2021feaed815b62e6f7519 +size 322265 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings.png new file mode 100644 index 0000000..eff1e88 --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f32495fb277cbefeab995f14d330c19feb1c2303b42336d570e467793ff089cf +size 20298 diff --git a/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-touch-settings.png b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-touch-settings.png new file mode 100644 index 0000000..24b791b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/src/plugin-configuration/plugin-settings/virtual-hand/virtual-hand-touch-settings.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af2263e52999da90b52378fbc7736e3018194e4418e2480fa8f0b4fac060877b +size 46392 diff --git a/Plugins/SenseGlove/Handbook/styles/custom.css b/Plugins/SenseGlove/Handbook/styles/custom.css new file mode 100644 index 0000000..858a23b --- /dev/null +++ b/Plugins/SenseGlove/Handbook/styles/custom.css @@ -0,0 +1,11 @@ +:root { + --content-max-width: 1280px; +} + +#sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wide-wrapper { + display: none !important; +} + +#sidebar-toggle-anchor:checked ~ .page-wrapper .nav-wrapper { + display: block !important; +} diff --git a/Plugins/SenseGlove/Packager/README.md b/Plugins/SenseGlove/Packager/README.md new file mode 100644 index 0000000..9ff9993 --- /dev/null +++ b/Plugins/SenseGlove/Packager/README.md @@ -0,0 +1,3 @@ +# SenseGlove Unreal Engine Marketplace Packager + +The `sgum-packager` utility is only meant to be used by the publisher of this plugin in to automatically package the plugin in adherence to the Unreal Engine Marketplace Guidelines. \ No newline at end of file diff --git a/Plugins/SenseGlove/Packager/sgum-packager b/Plugins/SenseGlove/Packager/sgum-packager new file mode 100644 index 0000000..8df721a --- /dev/null +++ b/Plugins/SenseGlove/Packager/sgum-packager @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59be6aac6e86e73c4b701ed9a8540465d3e5f0055f3dfb1cd37a4056238920f0 +size 15343876 diff --git a/Plugins/SenseGlove/Packager/sgum-packager.exe b/Plugins/SenseGlove/Packager/sgum-packager.exe new file mode 100644 index 0000000..92f3053 --- /dev/null +++ b/Plugins/SenseGlove/Packager/sgum-packager.exe @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6761c6b192d0620a0071658c1c6acdea452d34de0587fc1d428ac752dd41caa4 +size 15792128 diff --git a/Plugins/SenseGlove/Packager/sgum-packager.yml b/Plugins/SenseGlove/Packager/sgum-packager.yml new file mode 100644 index 0000000..18cc32c --- /dev/null +++ b/Plugins/SenseGlove/Packager/sgum-packager.yml @@ -0,0 +1,212 @@ +# The SenseGlove Unreal Engine Marketplace Packager configuration file. +# This file is in YAML format. +# Although, the SenseGlove Unreal Engine Marketplace Packager is able to load +# configurations from various file formats by detecting their file extensions. +# Currently, the following configuration formats are supported: +# - JSON +# - TOML +# - YAML +# - HCL +# - INI +# - envfile +# - Java properties config files + + +Archive: + + # Levels range from 1 (BestSpeed) to 9 (BestCompression); higher levels + # typically run slower but compress more. Level 0 (NoCompression) does not + # attempt any compression; it only adds the necessary DEFLATE framing. Level + # -1 (DefaultCompression) uses the default compression level. Level -2 + # (HuffmanOnly) will use Huffman compression only, giving a very fast + # compression for all types of input, but sacrificing considerable compression + # efficiency. + CompressionLevel: 9 + + Directory: + Linux: /tmp/SenseGlove-Unreal/Archive + Windows: "%TEMP%\\SenseGlove-Unreal\\Archive" + + # Brnach will be replaced with the Brnach name corresponding to the engine + # version, e.g. 5.1; and, version will be extracted from the latest tag, e.g. + # v1.0.4; producing SenseGlove-Unreal-5.1-v1.0.4.zip. + NameTemplate: "SenseGlove-Unreal-{BRANCH}-{VERSION}.zip" + + +Deploy: + + Repository: https://{USERNAME}:{PASSWORD}@dev.azure.com/SenseGlove/SenseGlove-Unreal/_git/SenseGlove-Unreal + + UsernameEnvVar: SGUM_PACKAGER_REPOSITORY_USERNAME + + PasswordEnvVar: SGUM_PACKAGER_REPOSITORY_PASSWORD + + Branches: + - "5.4" + - "5.3" + - "5.2" + + Exclusions: + - .git + - .clang-format + - .editorconfig + - .gitattributes + - .gitignore + - Documentation + - Handbook + - Packager + - README.md + + +Git: + + Executable: + Linux: /usr/bin/git + Windows: "%PROGRAMFILES%\\Git\\bin\\git.exe" + + CloneArguments: + - "--depth" + - "1" + - "--recurse-submodules" + - "--shallow-submodules" + - "--jobs" + - "16" + + CloneDirectory: + Linux: /tmp/SenseGlove-Unreal/Repo + Windows: "%TEMP%\\SenseGlove-Unreal\\Repo" + + +GoogleDrive: + + LocalAuthServerPort: 11111 + + # Follow the instructions below in order to generate the credentials file: + # + # Enable the API + # In the Google Cloud console, enable the Google Drive API. + # https://console.cloud.google.com/flows/enableapi?apiid=drive.googleapis.com + # + # Authorize credentials for a web application + # 1. In the Google Cloud console, go to Menu menu > APIs & Services > Credentials. + # https://console.cloud.google.com/apis/credentials + # 2. Click Create Credentials > OAuth client ID. + # 3. Click Application type > Desktop app. + # 4. In the Name field, type a name for the credential. This name is only shown in the Google Cloud console. + # 5. Click Create. The OAuth client created screen appears, showing your new Client ID and Client secret. + # 6. Click OK. The newly created credential appears under OAuth 2.0 Client IDs. + # 7. Save the downloaded JSON file as credentials.json, and move the file to your desired directory. + CredentialsFile: + Linux: ~/.config/SenseGlove/sgum-packager/credentials.json + Windows: "%LOCALAPPDATA%\\SenseGlove\\sgum-packager\\credentials.json" + + # This will be auto-generated on the first run + TokenFile: + Linux: ~/.config/SenseGlove/sgum-packager/token.json + Windows: "%LOCALAPPDATA%\\SenseGlove\\sgum-packager\\token.json" + + FolderNameTemplate: SenseGlove-Unreal-{VERSION} + + +Handbook: + + Distribute: true + + Build: + MakeTarget: pack + SourceDirectory: Handbook + OutputDirectory: Documentation + OutputPackedDirectory: pack + EpubFile: the-senseglove-unreal-engine-handbook.epub + HtmlFile: the-senseglove-unreal-engine-handbook.zip + PdfFile: the-senseglove-unreal-engine-handbook.pdf + + Pack: + Directory: Documentation + Epub: false + Html: true + Pdf: true + + +# Logging configurations +Logging: + + # The file to write logs to. Supports absolute path or relative paths + # containing environment variables as well.Backup log files will be retained + # in the same directory. It's optional and if left empty, no logs will be + # preserved and logs only go to screen instead of both screen and log files. + Filename: + Linux: ~/.cache/SenseGlove/sgum-packager/sgum-packager.log + Windows: "%LOCALAPPDATA%\\SenseGlove\\sgum-packager\\sgum-packager.log" + + # The maximum allowed size in MBs for the log file before it gets rotated. + # It defaults to 100 megabytes if not specified. + MaxSize: 100 + + # The maximum number of days to retain old log files based on the timestamp + # encoded in their filename. Note that a day is defined as 24 hours and may + # not exactly correspond to calendar days due to daylight savings, leap + # seconds, etc. If not specified, the default is not to remove old log files + # based on age. + MaxAge: 30 + + # Maximum number of old log files to retain. If not specified, the default is + # to retain all old log files (though MaxAge may still cause them to get + # deleted). + MaxBackups: 10 + + # Determines if the time used for formatting the timestamps in backup files is + # the computer's local time. The default is to use UTC time, if not specified. + LocalTime: true + + # Determines whether the rotated log files should be compressed using the gzip + # compression algorithm, or not. The default is not to perform compression, in + # case it's not specified. + Compress: true + + +Make: + + Executable: + Linux: /usr/bin/make + Windows: "%PROGRAMFILES%\\Git\\mingw64\\bin\\make.exe" + + +Rocket: + + RunUAT: true + + UPluginFile: SenseGlove.uplugin + + PackageDirectory: "%TEMP%\\SenseGlove-Unreal\\Rocket" + + EnginePaths: + - "5.4": "C:\\OPT\\UE_5.4" + - "5.3": "C:\\OPT\\UE_5.3" + - "5.2": "C:\\OPT\\UE_5.2" + + NDKPaths: + - "5.4": "%LOCALAPPDATA%\\Android\\Sdk\\ndk\\25.1.8937393" + - "5.3": "%LOCALAPPDATA%\\Android\\Sdk\\ndk\\25.1.8937393" + - "5.2": "%LOCALAPPDATA%\\Android\\Sdk\\ndk\\25.1.8937393" + + +Rsync: + + Executable: + Linux: /usr/bin/rsync + Windows: "%PROGRAMFILES%\\cwrsync\\bin\\rsync.exe" + + StageArguments: + - "--checksum" + - "--delete-after" + - "--ignore-errors" + - "--ignore-times" + - "--links" + - "--perms" + - "--recursive" + - "--verbose" + + DestinationDirectory: + Linux: /tmp/SenseGlove-Unreal/Stage + Windows: "%TEMP%\\SenseGlove-Unreal\\Stage" diff --git a/Plugins/SenseGlove/README.md b/Plugins/SenseGlove/README.md new file mode 100644 index 0000000..11fd362 --- /dev/null +++ b/Plugins/SenseGlove/README.md @@ -0,0 +1,47 @@ +# The SenseGlove Unreal Engine Plugin + +## Getting Started + +### Documentation + +For the official documentation please visit [the SenseGlove Unreal Engine Handbook](https://unreal.docs.senseglove.com/). + +### Extra Resources + +For examples, demo scenes, tutorials, and extra resources please check out [the Extra Resources section](Handbook/src/appendix/extra-resources.md) of [the SenseGlove Unreal Engine Handbook](Handbook/). + +### How to Download and Install + +Various instructions on [how to download and install the SenseGlove Unreal Engine Plugin](Handbook/src/getting-started/installation/README.md) are available. It could either be installed through [the Epic Games Launcher](Handbook/src/getting-started/installation/epic-games-launcher.md), or [through Microsoft Azure DevOps repositories](Handbook/src/getting-started/installation/microsoft-azure-devops-repositories.md). + +For more information, visit [the SenseGlove Unreal Engine Handbook on the Epic Marketplace](https://www.unrealengine.com/marketplace/en-US/product/the-senseglove-unreal-engine-plugin). + +### Platform Support Matrix + +We maintain [a platform support matrix](Handbook/src/appendix/platform-support-matrix.md) which constantly changes as we move toward our development goals. + +### Planned Features Completion Status + +We also maintain [a list of planned features and their completion status](Handbook/src/appendix/planned-features-completion-status.md) as a roadmap for this plugin. + +### Changelog + +[A detailed changelog for this project](Handbook/src/appendix/changelog.md) is also maintained. Please consult the changelog before upgrading to any newer release. + +### Directory Structure + +For the list of modules, directory structure, and how this plugin is organized please visit [the directory structure section](Handbook/src/appendix/directory-structure.md). + +## Licenses + +### SenseGlove Unreal Engine Plugin License + +The SenseGlove Unreal Engine Plugin is licensed under the terms of the [MIT License](Handbook/src/license/senseglove-unreal-engine-plugin.md). + +### SenseGlove Unreal Engine Handbook License + +The SenseGlove Unreal Engine Handbook is licensed under the terms of the [CC BY (Creative Commons Attribution) License](Handbook/src/license/senseglove-unreal-engine-handbook.md). + +### Third-Party Licenses + +Please note that while the SenseGlove Unreal Engine Plugin is made available under the MIT License, it utilizes a few third-party libraries with permissive free licenses as well, in order to power various components. For a list of these libraries and their own respective open-source licenses take a look at [the third-party licenses](Handbook/src/license/third-party.md), please. diff --git a/Plugins/SenseGlove/Resources/Icon128.png b/Plugins/SenseGlove/Resources/Icon128.png new file mode 100644 index 0000000..59687cb --- /dev/null +++ b/Plugins/SenseGlove/Resources/Icon128.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21dd03aae60812bdd01f6afe261accd4d3152be594e097c30f5abf0b5afa5d75 +size 11743 diff --git a/Plugins/SenseGlove/SenseGlove.uplugin b/Plugins/SenseGlove/SenseGlove.uplugin new file mode 100644 index 0000000..a0dd8a1 --- /dev/null +++ b/Plugins/SenseGlove/SenseGlove.uplugin @@ -0,0 +1,287 @@ +{ + "FileVersion": 3, + "Version": 1, + "VersionName": "2.1.0", + "FriendlyName": "SenseGlove", + "Description": "Integrating the SenseGlove haptic controller into Unreal Engine", + "Category": "Virtual Reality", + "CreatedBy": "SenseGlove", + "CreatedByURL": "https://www.senseglove.com/", + "DocsURL": "https://unreal.docs.senseglove.com/", + "MarketplaceURL": "com.epicgames.launcher://ue/marketplace/product/5e1d408f517b4966a269ec1035de0b9e", + "SupportURL": "https://www.senseglove.com/support/", + "CanContainContent": true, + "IsBetaVersion": false, + "IsExperimentalVersion": false, + "Installed": false, + "SupportedTargetPlatforms": [ + "Android", + "Linux", + "Win64" + ], + "Modules": [ + { + "Name": "SenseGlove", + "Type": "Runtime", + "LoadingPhase": "Default", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveAndroid", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveBackend", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveBackendKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveBuildHacks", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveConnect", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveConnectImpl", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveConnectKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveCore", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveCoreImpl", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveCoreKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveDebug", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveDebugKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveEditor", + "Type": "Editor", + "LoadingPhase": "PostEngineInit", + "WhitelistPlatforms": [ + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveInterop", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveLog", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveSettings", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveSettingsKismet", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveTracking", + "Type": "Runtime", + "LoadingPhase": "PostConfigInit", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveTrackingKismet", + "Type": "Runtime", + "LoadingPhase": "PostConfigInit", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveTypes", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + }, + { + "Name": "SenseGloveUtils", + "Type": "Runtime", + "LoadingPhase": "PreDefault", + "WhitelistPlatforms": [ + "Android", + "Linux", + "LinuxArm64", + "Win64" + ] + } + ], + "Plugins": [ + { + "Name": "OpenXR", + "Enabled": true, + "PlatformAllowList": [ + "Android", + "Linux", + "Win64" + ] + } + ] +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.cpp new file mode 100644 index 0000000..e9eb0a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveModule.h" + +IMPLEMENT_MODULE(FSenseGloveModule, SenseGlove) diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.h b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstance.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstance.cpp new file mode 100644 index 0000000..65f5d68 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstance.cpp @@ -0,0 +1,46 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Animation/SGVirtualHandAnimInstance.h" + +USGVirtualHandAnimInstance::USGVirtualHandAnimInstance(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ +} + +FSGVirtualHandAnimInstanceProxy* USGVirtualHandAnimInstance::CreateAnimInstanceProxy() +{ + return new FSGVirtualHandAnimInstanceProxy(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp new file mode 100644 index 0000000..9c146a1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.cpp @@ -0,0 +1,230 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h" + +#include "Animation/Skeleton.h" +#include "BoneContainer.h" +#include "BoneControllers/AnimNode_ModifyBone.h" +#include "BonePose.h" +#include "Containers/Array.h" +#include "Containers/Map.h" +#include "Containers/UnrealString.h" +#include "Engine/SkeletalMesh.h" +#include "Math/Rotator.h" +#include "Runtime/Launch/Resources/Version.h" + +#include "SenseGlove/Components/SGVirtualHandComponent.h" +#include "SGLog/SGLog.h" + +FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy() + : FAnimInstanceProxy{} +{ + VirtualHand = nullptr; + HandMeshAsset = nullptr; + HandSkeleton = nullptr; + + bVirtualHandVisible = false; + bMarkRenderStateDirty = false; + + bShouldAnimationApplyBoneLocation = false; +} + +FSGVirtualHandAnimInstanceProxy::FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance) + : FAnimInstanceProxy{Instance} +{ + VirtualHand = nullptr; + HandMeshAsset = nullptr; + HandSkeleton = nullptr; + + bVirtualHandVisible = false; + bMarkRenderStateDirty = false; + + bShouldAnimationApplyBoneLocation = false; +} + +void FSGVirtualHandAnimInstanceProxy::PreEvaluateAnimation(UAnimInstance* InAnimInstance) +{ + FAnimInstanceProxy::PreEvaluateAnimation(InAnimInstance); + + if (!IsValid(InAnimInstance)) + { + return; + } + + VirtualHand = Cast(GetSkelMeshComponent()); + if (!IsValid(VirtualHand)) + { + return; + } + + HandMeshAsset = VirtualHand->GetSkeletalMeshAsset(); + if (!IsValid(HandMeshAsset)) + { + return; + } + + HandSkeleton = HandMeshAsset->GetSkeleton(); + if (!IsValid(HandSkeleton)) + { + return; + } + + bVirtualHandVisible = VirtualHand->IsVisible() && VirtualHand->GetVisibleFlag(); + if (!bVirtualHandVisible) + { + return; + } + + const bool bGotMotionControllerData = VirtualHand->GetMotionControllerData(MotionControllerData); + if (!bGotMotionControllerData || !MotionControllerData.bValid) + { + return; + } + ensureAlwaysMsgf(MotionControllerData.HandKeyPositions.Num() == MotionControllerData.HandKeyRotations.Num(), + TEXT("Mismatched motion controller data positions and rotations!")); + + BoneNamesMap.Empty(); + for (TArray::SizeType HandKeyIndex = 0; + HandKeyIndex < MotionControllerData.HandKeyRotations.Num(); ++HandKeyIndex) + { + const FName& BoneName{VirtualHand->GetHandBoneName(HandKeyIndex)}; + BoneNamesMap.Add(HandKeyIndex, BoneName); + } + + const FSGVirtualHandAnimationSettings AnimationSettings{VirtualHand->GetVirtualHandSettings().AnimationSettings}; + AnimationBoneCorrectionOffsetTransform = FTransform{AnimationSettings.AnimationBoneRotationCorrectionOffset}; + bShouldAnimationApplyBoneLocation = AnimationSettings.bShouldAnimationApplyBoneLocation; +} + +bool FSGVirtualHandAnimInstanceProxy::Evaluate(FPoseContext& Output) +{ + if (!bVirtualHandVisible) + { + return FAnimInstanceProxy::Evaluate(Output); + } + + if (!MotionControllerData.bValid) + { + return FAnimInstanceProxy::Evaluate(Output); + } + + FComponentSpacePoseContext PoseContext{Output.AnimInstanceProxy}; + PoseContext.Pose.InitPose(Output.Pose); + + for (const TTuple::SizeType, FName>& Bone: BoneNamesMap) + { + const TArray::SizeType HandKeyIndex = Bone.Key; + const FName& BoneName{Bone.Value}; + if (BoneName == NAME_None) + { + continue; + } + + const int32 BoneIndex = GetRequiredBones().GetPoseBoneIndexForBoneName(BoneName); + if (BoneIndex == INDEX_NONE) + { + continue; + } + + FBoneReference BoneReference; + BoneReference.BoneName = BoneName; + BoneReference.BoneIndex = BoneIndex; + BoneReference.bUseSkeletonIndex = true; + + const FVector& HandKeyPosition{MotionControllerData.HandKeyPositions[HandKeyIndex]}; + const FQuat& HandKeyRotation{MotionControllerData.HandKeyRotations[HandKeyIndex]}; + const FTransform HandKeyTransform{HandKeyRotation, HandKeyPosition}; + const FTransform BoneTransform{AnimationBoneCorrectionOffsetTransform * HandKeyTransform}; + FRotator BoneRotation{BoneTransform.GetRotation().Rotator()}; + + FAnimNode_ModifyBone BoneController; + BoneController.BoneToModify = MoveTemp(BoneReference); + BoneController.Rotation = MoveTemp(BoneRotation); + BoneController.RotationMode = EBoneModificationMode::BMM_Replace; + BoneController.RotationSpace = EBoneControlSpace::BCS_WorldSpace; + BoneController.ScaleMode = EBoneModificationMode::BMM_Ignore; + + if (bShouldAnimationApplyBoneLocation) + { + FVector BoneTranslation{BoneTransform.GetLocation()}; + BoneController.TranslationMode = EBoneModificationMode::BMM_Replace; + BoneController.TranslationSpace = EBoneControlSpace::BCS_WorldSpace; + BoneController.Translation = MoveTemp(BoneTranslation); + } + else + { + BoneController.TranslationMode = EBoneModificationMode::BMM_Ignore; + } + + const bool bValidToEvaluate = + BoneController.IsValidToEvaluate(HandSkeleton, Output.Pose.GetBoneContainer()); + if (!bValidToEvaluate) + { + continue; + } + + TArray BoneTransforms; + BoneController.EvaluateSkeletalControl_AnyThread(PoseContext, BoneTransforms); + + const TArray::SizeType BoneTransformsNum = BoneTransforms.Num(); + if (BoneTransformsNum > 0) + { + PoseContext.Pose.LocalBlendCSBoneTransforms(BoneTransforms, 1.0f); + PoseContext.Pose.ConvertComponentPosesToLocalPoses(PoseContext.Pose, Output.Pose); + + bMarkRenderStateDirty = true; + } + } + + return true; +} + +void FSGVirtualHandAnimInstanceProxy::PostEvaluate(UAnimInstance* InAnimInstance) +{ + FAnimInstanceProxy::PostEvaluate(InAnimInstance); + + if (!bMarkRenderStateDirty) + { + return; + } + + if (!IsValid(VirtualHand)) + { + return; + } + + VirtualHand->MarkRenderStateDirty(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp new file mode 100644 index 0000000..cd9a91c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGGrabComponent.cpp @@ -0,0 +1,177 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Components/SGGrabComponent.h" + +#include "Components/PrimitiveComponent.h" +#include "GameFramework/Actor.h" + +#include "SGSettings/SGSettings.h" + +struct USGGrabComponent::FImpl +{ + /************************ + * Static methods + ************************/ + + FORCEINLINE static const FName& GetDefaultGrabAttachPointSocketName() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + const FName& SocketName{Settings->GetVirtualHandSettings().GrabSettings.GrabAttachPointSocketName}; + return SocketName; + } + + /************************ + * Owner object + ************************/ + + USGGrabComponent* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGGrabComponent* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ +}; + +USGGrabComponent* USGGrabComponent::GetGrabComponent(const AActor* Actor) +{ + if (!ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return nullptr; + } + + USGGrabComponent* GrabComponent = Cast( + Actor->GetComponentByClass(USGGrabComponent::StaticClass())); + return GrabComponent; +} + +bool USGGrabComponent::IsGrabbable(const AActor* Actor) +{ + if (!ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return false; + } + + const USGGrabComponent* GrabComponent = Cast( + Actor->GetComponentByClass(USGGrabComponent::StaticClass())); + if (!IsValid(GrabComponent)) + { + return false; + } + + return true; +} + +USGGrabComponent::USGGrabComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + AttachmentLocationRule = EAttachmentRule::SnapToTarget; + AttachmentRotationRule = EAttachmentRule::KeepRelative; + AttachmentScaleRule = EAttachmentRule::KeepWorld; + bAttachmentWeldSimulatedBodies = true; + + AttachmentSocketName = FImpl::GetDefaultGrabAttachPointSocketName(); + + DetachmentLocationRule = EDetachmentRule::KeepWorld; + DetachmentRotationRule = EDetachmentRule::KeepWorld; + DetachmentScaleRule = EDetachmentRule::KeepWorld; + bDetachmentCallModify = false; + + bAffectPhysicsState = true; +} + +USGGrabComponent::FImpl::FImpl(USGGrabComponent* InOwner) + : Owner(InOwner) +{ +} + +USGGrabComponent::FImpl::~FImpl() = default; + +void USGGrabComponent::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} + +void USGGrabComponent::SimulatePhysics(const bool bSimulatePhysics) const +{ + const AActor* OwnerActor{GetOwner()}; + if (!ensureAlwaysMsgf(IsValid(OwnerActor), TEXT("Invalid OwnerActor!"))) + { + return; + } + + UPrimitiveComponent* ActorRootComponent{Cast(OwnerActor->GetRootComponent())}; + if (!ensureAlwaysMsgf(IsValid(ActorRootComponent), + TEXT("RootComponent is not a valid UPrimativeComponent!"))) + { + return; + } + + ActorRootComponent->SetEnableGravity(bSimulatePhysics); + ActorRootComponent->SetSimulatePhysics(bSimulatePhysics); + + if (bSimulatePhysics) + { + ActorRootComponent->WakeRigidBody(); + } + else + { + ActorRootComponent->PutRigidBodyToSleep(); + } +} + +void USGGrabComponent::BeginPlay() +{ + Super::BeginPlay(); + + if (bAffectPhysicsState) + { + SimulatePhysics(true); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp new file mode 100644 index 0000000..32203fa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGTouchComponent.cpp @@ -0,0 +1,120 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Components/SGTouchComponent.h" + +#include "GameFramework/Actor.h" + +struct USGTouchComponent::FImpl +{ + /************************ + * Static methods + ************************/ + + /************************ + * Owner object + ************************/ + + USGTouchComponent* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGTouchComponent* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ +}; + +USGTouchComponent* USGTouchComponent::GetTouchComponent(const AActor* Actor) +{ + if (!ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return nullptr; + } + + USGTouchComponent* TouchComponent = Cast( + Actor->GetComponentByClass(USGTouchComponent::StaticClass())); + return TouchComponent; +} + +bool USGTouchComponent::IsTouchable(const AActor* Actor) +{ + if (!ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return false; + } + + const USGTouchComponent* TouchComponent = Cast( + Actor->GetComponentByClass(USGTouchComponent::StaticClass())); + if (!IsValid(TouchComponent)) + { + return false; + } + + return true; +} + +USGTouchComponent::USGTouchComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + ForceFeedbackLevel = 1.0f; + + VibrotactileDuration = 0.25f; + VibrotactileLevel = 0.0f; +} + +USGTouchComponent::FImpl::FImpl(USGTouchComponent* InOwner) + : Owner(InOwner) +{ +} + +USGTouchComponent::FImpl::~FImpl() = default; + +void USGTouchComponent::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp new file mode 100644 index 0000000..5e1c7fb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGVirtualHandComponent.cpp @@ -0,0 +1,821 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Components/SGVirtualHandComponent.h" + +#include "HeadMountedDisplayTypes.h" +#include "Animation/Skeleton.h" +#include "Components/SkeletalMeshComponent.h" +#include "Engine/Engine.h" +#include "Engine/EngineTypes.h" +#include "Engine/SkeletalMesh.h" +#include "InputCoreTypes.h" +#include "IXRTrackingSystem.h" +#include "Templates/UnrealTypeTraits.h" +#include "UObject/ConstructorHelpers.h" + +#include "SenseGlove/Animation/SGVirtualHandAnimInstance.h" +#include "SenseGlove/Components/SGWristTrackerComponent.h" +#include "SGCore/SGHapticGlove.h" +#include "SGDebug/SGDebugVirtualHand.h" +#include "SGLog/SGLog.h" +#include "SGSettings/SGSettings.h" +#include "SGTracking/SGGloveTracker.h" +#include "SGTracking/SGXRTracker.h" + +struct USGVirtualHandComponent::FImpl +{ + /************************ + * Static methods + ************************/ + + static FName ParseVirtualHandSettingsOverridesPropertyName(const FName& PropertyName); + + FORCEINLINE static const FSGVirtualHandSettings& GetPluginVirtualHandSettings() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + return Settings->GetVirtualHandSettings(); + } + + FORCEINLINE static const FString& GetDefaultLeftHandMeshPath() + { + return GetPluginVirtualHandSettings().MeshSettings.DefaultLeftHandMeshPath; + } + + FORCEINLINE static const FString& GetDefaultLeftHandMeshPathOnly() + { + return GetPluginVirtualHandSettings().MeshSettings.DefaultLeftHandMeshPathOnly; + } + + FORCEINLINE static const FString& GetDefaultRightHandMeshPath() + { + return GetPluginVirtualHandSettings().MeshSettings.DefaultRightHandMeshPath; + } + + FORCEINLINE static const FString& GetDefaultRightHandMeshPathOnly() + { + return GetPluginVirtualHandSettings().MeshSettings.DefaultRightHandMeshPathOnly; + } + + /************************ + * Member variables + ************************/ + + bool bOverridePluginSettingsPropertyAlreadyModified; + + bool bCachedGenerateOverlapEvents; + ECollisionEnabled::Type CachedCollisionEnabled; + FCollisionResponseContainer CachedCollisionResponse; + + /************************ + * Owner object + ************************/ + + USGVirtualHandComponent* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGVirtualHandComponent* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + bool IsEditor() const; + + void RightPropertyChanged(); + void OverridePluginSettingsPropertyChanged(); + + FString GetDefaultMeshPath() const; + bool IsUsingDefaultMesh() const; + bool IsUsingUserMesh() const; + USkeletalMesh* LoadDefaultMesh() const; + void SetDefaultMesh() const; + + USkeletalMesh* GetMesh() const; + USkeleton* GetSkeleton() const; + const FReferenceSkeleton& GetRefSkeleton() const; + + void DisableCollisionResponse(); + void RestoreCollisionResponse() const; + + void SetVisibility(const bool bInVisible); + void UpdateVisibility(); + + FORCEINLINE bool ShouldDrawDebugVirtualHand() const + { + const FSGVirtualHandDebuggingSettings& Settings{Owner->GetVirtualHandSettings().DebuggingSettings}; + const bool bDraw = Settings.bDrawDebugVirtualHand + && Settings.DrawingMode != ESGDebugVirtualHandDrawingMode::None; + return bDraw; + } + + void DrawDebugVirtualHand() const; + + void TriggerHandVisibilityChangedEvent(bool bNewVisibility) const; +}; + +FName USGVirtualHandComponent::FImpl::ParseVirtualHandSettingsOverridesPropertyName(const FName& PropertyName) +{ + static const UStruct* Struct{FSGVirtualHandSettingsOverrides::StaticStruct()}; + if (!ensureAlwaysMsgf(Struct, TEXT("Invalid Struct!"))) + { + return NAME_None; + } + + // +3 because of :: + static const int32 StructNameLength = Struct->GetFName().ToString().Len() + 3; + + const FString PropertyString{PropertyName.ToString()}; + const int32 PropertyStringLength = PropertyString.Len(); + const int32 PropertyNameLength = PropertyStringLength - StructNameLength; + + const FName ParsedName{*PropertyString.Right(PropertyNameLength)}; + return ParsedName; +} + +const TArray& USGVirtualHandComponent::GetLeftHandBoneNames() +{ + return FImpl::GetPluginVirtualHandSettings().MeshSettings.LeftHandBoneNames; +} + +const TArray& USGVirtualHandComponent::GetRightHandBoneNames() +{ + return FImpl::GetPluginVirtualHandSettings().MeshSettings.RightHandBoneNames; +} + +const FName& USGVirtualHandComponent::GetLeftHandBoneName(const int32 Joint) +{ + const TArray& BoneNames{GetLeftHandBoneNames()}; + + ensureAlwaysMsgf(Joint < BoneNames.Num(), TEXT("Joint index is out of bound!")); + + const FName& BoneName{BoneNames[Joint]}; + return BoneName; +} + +const FName& USGVirtualHandComponent::GetRightHandBoneName(const int32 Joint) +{ + const TArray& BoneNames{GetRightHandBoneNames()}; + + ensureAlwaysMsgf(Joint < BoneNames.Num(), TEXT("Joint index is out of bound!")); + + const FName& BoneName{BoneNames[Joint]}; + return BoneName; +} + +USGVirtualHandComponent::USGVirtualHandComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + PrimaryComponentTick.bTickEvenWhenPaused = false; + PrimaryComponentTick.bCanEverTick = true; + PrimaryComponentTick.bStartWithTickEnabled = true; + bTickInEditor = true; + bNeverNeedsRenderUpdate = false; + bAllowConcurrentTick = true; + SetUpdateAnimationInEditor(true); + + SetCastShadow(true); + SetCastHiddenShadow(false); + bCastDynamicShadow = true; + SetOnlyOwnerSee(false); + SetReceivesDecals(true); + SetCanEverAffectNavigation(false); + Super::SetCollisionObjectType(ECC_WorldDynamic); + Super::SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + Super::SetCollisionResponseToAllChannels(ECR_Overlap); + Super::SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_Pawn, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_Vehicle, ECR_Block); + Super::SetCollisionResponseToChannel(ECC_Destructible, ECR_Block); + + Super::SetAnimClass(USGVirtualHandAnimInstance::StaticClass()); + + bRight = true; + + Super::SetSkeletalMesh(nullptr, true); + + WristTracker = nullptr; +} + +void USGVirtualHandComponent::OnHandVisibilityChanged_Implementation(bool bNewVisibility) +{ +} + +void USGVirtualHandComponent::SetRight(const bool bInRight) +{ + bRight = bInRight; + + if (!Pimpl->IsUsingUserMesh()) + { + Pimpl->SetDefaultMesh(); + } +} + +void USGVirtualHandComponent::SetVirtualHandSettingsOverrides( + const FSGVirtualHandSettingsOverrides& InVirtualHandSettingsOverrides) +{ + VirtualHandSettingsOverrides = InVirtualHandSettingsOverrides; +} + +FSGVirtualHandSettings USGVirtualHandComponent::GetVirtualHandSettings() const +{ + const USGSettings* Settings{USGSettings::GetInstance()}; + if (!IsValid(Settings)) + { + return FSGVirtualHandSettings{}; + } + + const FSGVirtualHandSettings& PluginVirtualHandSettings{Settings->GetVirtualHandSettings()}; + if (!OverridesPluginVirtualHandSettings()) + { + return PluginVirtualHandSettings; + } + + const FSGVirtualHandSettings VirtualHandSettings{ + VirtualHandSettingsOverrides.bVisibleWhenHandDataUnavailable, + VirtualHandSettingsOverrides.AnimationSettings, + VirtualHandSettingsOverrides.DebuggingSettings, + VirtualHandSettingsOverrides.GrabSettings, + VirtualHandSettingsOverrides.HapticsSettings, + PluginVirtualHandSettings.MeshSettings, + VirtualHandSettingsOverrides.TouchSettings + }; + return VirtualHandSettings; +} + +void USGVirtualHandComponent::SetAnimClass(UClass* NewClass) +{ + ensureAlwaysMsgf((TIsDerivedFrom::IsDerived), + TEXT("The AnimInstance class must be a subclass of USGVirtualHandAnimInstance!")); + + Super::SetAnimClass(NewClass); +} + +void USGVirtualHandComponent::PostInitProperties() +{ + Super::PostInitProperties(); + + if (!Pimpl->IsUsingUserMesh()) + { + Pimpl->SetDefaultMesh(); + } +} + +#if WITH_EDITOR +void USGVirtualHandComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) +{ + Super::PostEditChangeProperty(PropertyChangedEvent); + + const FName PropertyName{ + PropertyChangedEvent.Property + ? PropertyChangedEvent.Property->GetFName() + : NAME_None + }; + + static const FName RightName{ + GET_MEMBER_NAME_CHECKED(USGVirtualHandComponent, bRight) + }; + + static const FName OverridePluginSettingsName{ + FImpl::ParseVirtualHandSettingsOverridesPropertyName( + GET_MEMBER_NAME_CHECKED(FSGWristTrackingSettingsOverrides, + FSGWristTrackingSettingsOverrides::bOverridePluginSettings)) + }; + + if (PropertyName == RightName) + { + Pimpl->RightPropertyChanged(); + return; + } + + if (PropertyName == OverridePluginSettingsName) + { + Pimpl->OverridePluginSettingsPropertyChanged(); + return; + } +} +#endif /* WITH_EDITOR */ + +void USGVirtualHandComponent::InitializeComponent() +{ + Super::InitializeComponent(); + + if (!Pimpl->IsUsingUserMesh()) + { + Pimpl->SetDefaultMesh(); + } + + Pimpl->UpdateVisibility(); +} + +void USGVirtualHandComponent::UninitializeComponent() +{ + Super::UninitializeComponent(); + + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(GetOuter())}; + USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; + const bool bAutoStopHaptics = GetVirtualHandSettings().HapticsSettings.bAutoStopAllHapticsOnEndPlay; + if (IsValid(Glove) && Glove->IsConnected() && bAutoStopHaptics) + { + Glove->StopHaptics(); + } +} + +void USGVirtualHandComponent::BeginPlay() +{ + Super::BeginPlay(); + + Pimpl->UpdateVisibility(); +} + +void USGVirtualHandComponent::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(GetOuter())}; + USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; + const bool bAutoStopHaptics = GetVirtualHandSettings().HapticsSettings.bAutoStopAllHapticsOnEndPlay; + if (IsValid(Glove) && Glove->IsConnected() && bAutoStopHaptics) + { + Glove->StopHaptics(); + } +} + +void USGVirtualHandComponent::TickComponent( + const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ +#if WITH_EDITOR + if (Pimpl->IsEditor()) + { + EditorTick(DeltaTime, TickType, ThisTickFunction); + return; + } +#endif /* WITH_EDITOR */ + + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + Pimpl->UpdateVisibility(); + + if (Pimpl->ShouldDrawDebugVirtualHand()) + { + Pimpl->DrawDebugVirtualHand(); + } +} + +void USGVirtualHandComponent::SetSkeletalMesh(USkeletalMesh* NewMesh, const bool bReinitPose) +{ + if (IsValid(NewMesh)) + { + Super::SetSkeletalMesh(NewMesh, bReinitPose); + } + else + { + Super::SetSkeletalMesh(Pimpl->LoadDefaultMesh(), bReinitPose); + } +} + +void USGVirtualHandComponent::EditorTick( + const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Pimpl->UpdateVisibility(); + + if (Pimpl->ShouldDrawDebugVirtualHand()) + { + Pimpl->DrawDebugVirtualHand(); + } +} + +bool USGVirtualHandComponent::IsGloveConnected() const +{ + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(GetOuter())}; + const USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; + return IsValid(Glove); +} + +USGHapticGlove* USGVirtualHandComponent::GetConnectedGlove() const +{ + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance(GetOuter())}; + USGHapticGlove* Glove{IsValid(GloveTracker) ? GloveTracker->GetGlove(IsRight()) : nullptr}; + return Glove; +} + +bool USGVirtualHandComponent::GetMotionControllerData(FXRMotionControllerData& OutMotionControllerData) +{ + OutMotionControllerData.bValid = false; + + const EControllerHand Hand = IsRight() ? EControllerHand::Right : EControllerHand::Left; + const bool bGotMotionControllerData = + FSGXRTracker::GetMotionControllerData(this, Hand, OutMotionControllerData); + if (!bGotMotionControllerData || !OutMotionControllerData.bValid) + { + return false; + } + + return OutMotionControllerData.bValid; +} + +const TArray& USGVirtualHandComponent::GetHandBoneNames() const +{ + const TArray& Names{ + IsRight() + ? GetRightHandBoneNames() + : GetLeftHandBoneNames() + }; + return Names; +} + +const FName& USGVirtualHandComponent::GetHandBoneName(const int32 Joint) const +{ + const FName& Name{ + IsRight() + ? GetRightHandBoneName(Joint) + : GetLeftHandBoneName(Joint) + }; + return Name; +} + +const FTransform& USGVirtualHandComponent::GetHandBoneRefTransform(const FName& BoneName) const +{ + const FReferenceSkeleton& ReferenceSkeleton{Pimpl->GetRefSkeleton()}; + const int32 BoneIndex = ReferenceSkeleton.FindBoneIndex(BoneName); + + if (BoneIndex == INDEX_NONE) + { + SGLOG_WARNING(FString::Printf(TEXT("Could not find a bone index for the '%s' joint!"), + *BoneName.ToString())); + return FTransform::Identity; + } + + const FTransform& BoneTransform{ReferenceSkeleton.GetRefBonePose()[BoneIndex]}; + return BoneTransform; +} + +const FTransform& USGVirtualHandComponent::GetHandRootBoneRefTransform() const +{ + static constexpr int32 WristKeypointIndex = static_cast(EHandKeypoint::Wrist); + const FTransform& BoneTransform{GetHandBoneRefTransform(WristKeypointIndex)}; + return BoneTransform; +} + +const FTransform& USGVirtualHandComponent::GetHandBoneRefTransform(const int32 Joint) const +{ + const FName& BoneName{GetHandBoneName(Joint)}; + return GetHandBoneRefTransform(BoneName); +} + +FRotator USGVirtualHandComponent::GetHandBoneRefRotation(const FName& BoneName) const +{ + const FTransform BoneTransform{GetHandBoneRefTransform(BoneName)}; + const FRotator BoneRotation{BoneTransform.GetRotation().Rotator()}; + return BoneRotation; +} + +FRotator USGVirtualHandComponent::GetHandBoneRefRotation(const int32 Joint) const +{ + const FTransform BoneTransform{GetHandBoneRefTransform(Joint)}; + const FRotator BoneRotation{BoneTransform.GetRotation().Rotator()}; + return BoneRotation; +} + +USGVirtualHandComponent::FImpl::FImpl(USGVirtualHandComponent* InOwner) + : bOverridePluginSettingsPropertyAlreadyModified(false), + bCachedGenerateOverlapEvents(InOwner->GetGenerateOverlapEvents()), + CachedCollisionEnabled(InOwner->GetCollisionEnabled()), + Owner(InOwner) + +{ +} + +USGVirtualHandComponent::FImpl::~FImpl() = default; + +bool USGVirtualHandComponent::FImpl::IsEditor() const +{ + const UWorld* World{Owner->GetWorld()}; + if (World && (World->WorldType == EWorldType::Editor || World->WorldType == EWorldType::EditorPreview)) + { + return true; + } + + return false; +} + +void USGVirtualHandComponent::FImpl::RightPropertyChanged() +{ + if (!IsUsingUserMesh()) + { + SetDefaultMesh(); + } +} + +void USGVirtualHandComponent::FImpl::OverridePluginSettingsPropertyChanged() +{ + if (bOverridePluginSettingsPropertyAlreadyModified) + { + return; + } + + bOverridePluginSettingsPropertyAlreadyModified = true; + + if (!Owner->VirtualHandSettingsOverrides.bOverridePluginSettings) + { + return; + } + + const USGSettings* Settings{USGSettings::GetInstance()}; + if (!ensureAlwaysMsgf(IsValid(Settings), TEXT("The settings subsystem has not been initialized!"))) + { + return; + } + + const FSGVirtualHandSettings& PluginVirtualHandSettings{Settings->GetVirtualHandSettings()}; + Owner->VirtualHandSettingsOverrides.bVisibleWhenHandDataUnavailable = + PluginVirtualHandSettings.bVisibleWhenHandDataUnavailable; + Owner->VirtualHandSettingsOverrides.AnimationSettings = PluginVirtualHandSettings.AnimationSettings; + Owner->VirtualHandSettingsOverrides.DebuggingSettings = PluginVirtualHandSettings.DebuggingSettings; + Owner->VirtualHandSettingsOverrides.GrabSettings = PluginVirtualHandSettings.GrabSettings; + Owner->VirtualHandSettingsOverrides.HapticsSettings = PluginVirtualHandSettings.HapticsSettings; + Owner->VirtualHandSettingsOverrides.TouchSettings = PluginVirtualHandSettings.TouchSettings; +} + +FString USGVirtualHandComponent::FImpl::GetDefaultMeshPath() const +{ + FString SkeletalMeshPath; + + if (Owner->IsRight()) + { + SkeletalMeshPath = GetDefaultRightHandMeshPath(); + } + else + { + SkeletalMeshPath = GetDefaultLeftHandMeshPath(); + } + + return SkeletalMeshPath; +} + +bool USGVirtualHandComponent::FImpl::IsUsingDefaultMesh() const +{ + const USkeletalMesh* CurrentMesh{GetMesh()}; + if (!IsValid(CurrentMesh)) + { + return false; + } + + const FString CurrentMeshPath{CurrentMesh->GetPathName()}; + const FString LeftHandDefaultMeshPath{GetDefaultLeftHandMeshPath()}; + const FString LeftHandDefaultMeshPathOnly{GetDefaultLeftHandMeshPathOnly()}; + const FString RightHandDefaultMeshPath{GetDefaultRightHandMeshPath()}; + const FString RightHandDefaultMeshPathOnly{GetDefaultRightHandMeshPathOnly()}; + if (CurrentMeshPath == LeftHandDefaultMeshPath + || CurrentMeshPath == LeftHandDefaultMeshPathOnly + || CurrentMeshPath == RightHandDefaultMeshPath + || CurrentMeshPath == RightHandDefaultMeshPathOnly) + { + return true; + } + + return false; +} + +bool USGVirtualHandComponent::FImpl::IsUsingUserMesh() const +{ + const USkeletalMesh* CurrentMesh{GetMesh()}; + if (!IsValid(CurrentMesh)) + { + return false; + } + + const FString CurrentMeshPath{CurrentMesh->GetPathName()}; + const FString LeftHandDefaultMeshPath{GetDefaultLeftHandMeshPath()}; + const FString LeftHandDefaultMeshPathOnly{GetDefaultLeftHandMeshPathOnly()}; + const FString RightHandDefaultMeshPath{GetDefaultRightHandMeshPath()}; + const FString RightHandDefaultMeshPathOnly{GetDefaultRightHandMeshPathOnly()}; + if (CurrentMeshPath == LeftHandDefaultMeshPath + || CurrentMeshPath == LeftHandDefaultMeshPathOnly + || CurrentMeshPath == RightHandDefaultMeshPath + || CurrentMeshPath == RightHandDefaultMeshPathOnly) + { + return false; + } + + return true; +} + +USkeletalMesh* USGVirtualHandComponent::FImpl::LoadDefaultMesh() const +{ + const FString DefaultMeshPath{GetDefaultMeshPath()}; + USkeletalMesh* DefaultMesh{ + Cast(StaticLoadObject(USkeletalMesh::StaticClass(), nullptr, *DefaultMeshPath)) + }; + + if (!IsValid(DefaultMesh)) + { + SGLOG_WARNING(FString::Printf(TEXT("Failed to load the default skeletal mesh: '%s'"), *DefaultMeshPath)); + } + + return DefaultMesh; +} + +void USGVirtualHandComponent::FImpl::SetDefaultMesh() const +{ + // FIXME + // Since we don't ship a default virtual hand mesh at the moment, calling SetDefaultMesh causes the following + // failed assertion due the fact that the engine won't be able to find the asset at the default location: + // Assertion failed: IsInGameThread() + // Unable to load /SenseGlove/Meshes/SK_SenseGlove_VirtualHand_*. Objects and Packages can only be loaded from the + // game thread with the currently active loader '%s'. + // One workaround would be disabling the async loading or as an alternative simply disabling this portion of the + // code should be a good-enough fix until we address this issue in its own time. + //Owner->SetSkeletalMesh(LoadDefaultMesh(), true); + // Temporary hack to make it work inside the Blueprint Editor. +#if WITH_EDITOR + Owner->SetSkeletalMesh(LoadDefaultMesh(), true); +#endif /* WITH_EDITOR */ +} + +USkeletalMesh* USGVirtualHandComponent::FImpl::GetMesh() const +{ + return Owner->GetSkeletalMeshAsset(); +} + +USkeleton* USGVirtualHandComponent::FImpl::GetSkeleton() const +{ + USkeletalMesh* Mesh{GetMesh()}; + ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid SkeletalMesh object!")); + return Mesh->GetSkeleton(); +} + +const FReferenceSkeleton& USGVirtualHandComponent::FImpl::GetRefSkeleton() const +{ + const USkeletalMesh* Mesh{GetMesh()}; + ensureAlwaysMsgf(IsValid(Mesh), TEXT("Invalid SkeletalMesh object!")); + return Mesh->GetRefSkeleton(); +} + +void USGVirtualHandComponent::FImpl::DisableCollisionResponse() +{ + bCachedGenerateOverlapEvents = Owner->GetGenerateOverlapEvents(); + CachedCollisionEnabled = Owner->GetCollisionEnabled(); + CachedCollisionResponse = Owner->GetCollisionResponseToChannels(); + Owner->SetGenerateOverlapEvents(false); + Owner->SetCollisionEnabled(ECollisionEnabled::NoCollision); + Owner->SetCollisionResponseToAllChannels(ECR_Ignore); +} + +void USGVirtualHandComponent::FImpl::RestoreCollisionResponse() const +{ + Owner->SetGenerateOverlapEvents(bCachedGenerateOverlapEvents); + Owner->SetCollisionEnabled(CachedCollisionEnabled); + Owner->SetCollisionResponseToChannels(CachedCollisionResponse); +} + +void USGVirtualHandComponent::FImpl::SetVisibility(const bool bInVisible) +{ + Owner->SetVisibility(bInVisible, true); + + if (bInVisible) + { + RestoreCollisionResponse(); + } + else + { + DisableCollisionResponse(); + } + + TriggerHandVisibilityChangedEvent(bInVisible); +} + +void USGVirtualHandComponent::FImpl::UpdateVisibility() +{ + FXRMotionControllerData MotionControllerData; + const bool bGotMotionControllerData = Owner->GetMotionControllerData(MotionControllerData); + const bool bHandDataAvailable = + bGotMotionControllerData + && MotionControllerData.bValid + && MotionControllerData.DeviceVisualType == EXRVisualType::Hand; + const bool bHandVisible = Owner->IsVisible(); + const bool bShouldBeVisibleWhenHandDataUnavailable = + Owner->GetVirtualHandSettings().bVisibleWhenHandDataUnavailable; + + bool bSetNewVisibility = false; + + if (bHandDataAvailable) + { + if (bHandVisible) + { + bSetNewVisibility = false; + } + else + { + bSetNewVisibility = true; + } + } + else + { + if (bHandVisible) + { + if (bShouldBeVisibleWhenHandDataUnavailable) + { + bSetNewVisibility = false; + } + else + { + bSetNewVisibility = true; + } + } + else + { + if (bShouldBeVisibleWhenHandDataUnavailable) + { + bSetNewVisibility = true; + } + else + { + bSetNewVisibility = false; + } + } + } + + if (bSetNewVisibility) + { + Owner->SetHiddenInGame(bHandDataAvailable); + } +} + +void USGVirtualHandComponent::FImpl::DrawDebugVirtualHand() const +{ + const UWorld* World{Owner->GetWorld()}; + + if (!IsValid(Owner->WristTracker)) + { + return; + } + + FXRMotionControllerData MotionControllerData; + const bool bGotMotionControllerData = Owner->GetMotionControllerData(MotionControllerData); + if (!bGotMotionControllerData || !MotionControllerData.bValid) + { + return; + } + + FSGDebugVirtualHand::Draw(World, MotionControllerData, Owner->GetVirtualHandSettings().DebuggingSettings); +} + +void USGVirtualHandComponent::FImpl::TriggerHandVisibilityChangedEvent(const bool bNewVisibility) const +{ + Owner->HandVisibilityChangedEvent.Broadcast(bNewVisibility); + Owner->OnHandVisibilityChanged(bNewVisibility); +} + +void USGVirtualHandComponent::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGWristTrackerComponent.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGWristTrackerComponent.cpp new file mode 100644 index 0000000..ee09713 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Components/SGWristTrackerComponent.cpp @@ -0,0 +1,357 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Components/SGWristTrackerComponent.h" + +#include "IXRTrackingSystem.h" + +#include "SGDebug/SGDebugGizmo.h" +#include "SGSettings/SGSettings.h" +#include "SGTracking/SGXRTracker.h" + +struct USGWristTrackerComponent::FImpl +{ + /************************ + * Static methods + ************************/ + + static FName ParseWristTrackingSettingsOverridesPropertyName(const FName& PropertyName); + + /************************ + * Member variables + ************************/ + + bool bOverridePluginSettingsPropertyAlreadyModified; + + /************************ + * Owner object + ************************/ + + USGWristTrackerComponent* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGWristTrackerComponent* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + bool IsEditor() const; + + void OverridePluginSettingsPropertyChanged(); + + void UpdateMotionSource() const; + void UpdateWristTrackingData() const; + void DrawDebugWristTracker() const; +}; + +USGWristTrackerComponent::USGWristTrackerComponent(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + PrimaryComponentTick.bTickEvenWhenPaused = false; + PrimaryComponentTick.bCanEverTick = true; + PrimaryComponentTick.bStartWithTickEnabled = true; + bTickInEditor = true; + bNeverNeedsRenderUpdate = true; + bAllowConcurrentTick = true; + + SetCastShadow(false); + SetCastHiddenShadow(false); + bCastDynamicShadow = false; + SetOnlyOwnerSee(false); + SetReceivesDecals(false); + SetCanEverAffectNavigation(false); + + bRight = true; + + WristLocation = FVector::ZeroVector; + WristRotation = FRotator::ZeroRotator; +} + +FName USGWristTrackerComponent::FImpl::ParseWristTrackingSettingsOverridesPropertyName(const FName& PropertyName) +{ + static const UStruct* Struct{FSGWristTrackingSettingsOverrides::StaticStruct()}; + if (!ensureAlwaysMsgf(Struct, TEXT("Invalid Struct!"))) + { + return NAME_None; + } + + // +3 because of :: + static const int32 StructNameLength = Struct->GetFName().ToString().Len() + 3; + + const FString PropertyString{PropertyName.ToString()}; + const int32 PropertyStringLength = PropertyString.Len(); + const int32 PropertyNameLength = PropertyStringLength - StructNameLength; + + const FName ParsedName{*PropertyString.Right(PropertyNameLength)}; + return ParsedName; +} + +void USGWristTrackerComponent::SetRight(const bool bInRight) +{ + bRight = bInRight; + Pimpl->UpdateMotionSource(); +} + +void USGWristTrackerComponent::SetWristTrackingSettingsOverrides( + const FSGWristTrackingSettingsOverrides& InWristTrackingSettingsOverrides) +{ + WristTrackingSettingsOverrides = InWristTrackingSettingsOverrides; +} + +FSGWristTrackingSettings USGWristTrackerComponent::GetWristTrackingSettings() const +{ + const USGSettings* Settings{USGSettings::GetInstance()}; + if (!IsValid(Settings)) + { + return FSGWristTrackingSettings{}; + } + + const FSGWristTrackingSettings& PluginWristTrackingSettings{Settings->GetTrackingSettings().WristTrackingSettings}; + if (!OverridesPluginWristTrackingSettings()) + { + return PluginWristTrackingSettings; + } + + const FSGWristTrackingSettings WristTrackingSettings{ + PluginWristTrackingSettings.TrackingHardware, + PluginWristTrackingSettings.TrackingHardwareLocationOffsetLeftHand, + PluginWristTrackingSettings.TrackingHardwareLocationOffsetRightHand, + PluginWristTrackingSettings.TrackingHardwareRotationOffsetLeftHand, + PluginWristTrackingSettings.TrackingHardwareRotationOffsetRightHand, + PluginWristTrackingSettings.LeftHandMotionSource, + PluginWristTrackingSettings.RightHandMotionSource, + WristTrackingSettingsOverrides.DebuggingSettings, + }; + return WristTrackingSettings; +} + +#if WITH_EDITOR +void USGWristTrackerComponent::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) +{ + Super::PostEditChangeProperty(PropertyChangedEvent); + + const FName PropertyName{ + PropertyChangedEvent.Property + ? PropertyChangedEvent.Property->GetFName() + : NAME_None + }; + + static const FName OverridePluginSettingsName{ + FImpl::ParseWristTrackingSettingsOverridesPropertyName( + GET_MEMBER_NAME_CHECKED(FSGWristTrackingSettingsOverrides, + FSGWristTrackingSettingsOverrides::bOverridePluginSettings)) + }; + + if (PropertyName == OverridePluginSettingsName) + { + Pimpl->OverridePluginSettingsPropertyChanged(); + return; + } +} +#endif /* WITH_EDITOR */ + +void USGWristTrackerComponent::InitializeComponent() +{ + Super::InitializeComponent(); + + Pimpl->UpdateWristTrackingData(); + + Pimpl->UpdateMotionSource(); +} + +void USGWristTrackerComponent::BeginPlay() +{ + Super::BeginPlay(); + + Pimpl->UpdateWristTrackingData(); + + Pimpl->UpdateMotionSource(); +} + +void USGWristTrackerComponent::TickComponent( + const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ +#if WITH_EDITOR + if (Pimpl->IsEditor()) + { + EditorTick(DeltaTime, TickType, ThisTickFunction); + return; + } +#endif /* WITH_EDITOR */ + + Super::TickComponent(DeltaTime, TickType, ThisTickFunction); + + if (GetWristTrackingSettings().DebuggingSettings.bDrawDebugWristTracker) + { + Pimpl->DrawDebugWristTracker(); + } + + Pimpl->UpdateWristTrackingData(); +} + + +void USGWristTrackerComponent::EditorTick( + const float DeltaTime, const ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction) +{ + Pimpl->UpdateWristTrackingData(); +} + +bool USGWristTrackerComponent::GetMotionControllerData(FXRMotionControllerData& OutMotionControllerData) +{ + OutMotionControllerData.bValid = false; + + const EControllerHand Hand = IsRight() ? EControllerHand::Right : EControllerHand::Left; + const bool bGotMotionControllerData = + FSGXRTracker::GetMotionControllerData(this, Hand, OutMotionControllerData); + if (!bGotMotionControllerData || !OutMotionControllerData.bValid) + { + return false; + } + + return OutMotionControllerData.bValid; +} + +USGWristTrackerComponent::FImpl::FImpl(USGWristTrackerComponent* InOwner) + : bOverridePluginSettingsPropertyAlreadyModified(false), + Owner(InOwner) +{ +} + +USGWristTrackerComponent::FImpl::~FImpl() = default; + +bool USGWristTrackerComponent::FImpl::IsEditor() const +{ + const UWorld* World{Owner->GetWorld()}; + if (World && (World->WorldType == EWorldType::Editor || World->WorldType == EWorldType::EditorPreview)) + { + return true; + } + + return false; +} + +void USGWristTrackerComponent::FImpl::OverridePluginSettingsPropertyChanged() +{ + if (bOverridePluginSettingsPropertyAlreadyModified) + { + return; + } + + bOverridePluginSettingsPropertyAlreadyModified = true; + + if (!Owner->WristTrackingSettingsOverrides.bOverridePluginSettings) + { + return; + } + + const USGSettings* Settings{USGSettings::GetInstance()}; + if (!ensureAlwaysMsgf(IsValid(Settings), TEXT("The settings subsystem has not been initialized!"))) + { + return; + } + + const FSGWristTrackingSettings& PluginWristTrackingSettings{Settings->GetTrackingSettings().WristTrackingSettings}; + Owner->WristTrackingSettingsOverrides.DebuggingSettings = PluginWristTrackingSettings.DebuggingSettings; +} + +void USGWristTrackerComponent::FImpl::UpdateMotionSource() const +{ + if (GEngine) + { + Owner->SetTrackingSource(Owner->IsRight() + ? Owner->GetWristTrackingSettings().RightHandMotionSource + : Owner->GetWristTrackingSettings().LeftHandMotionSource); + } +} + +void USGWristTrackerComponent::FImpl::UpdateWristTrackingData() const +{ + FVector NewWristLocation{Owner->GetComponentLocation()}; + FRotator NewWristRotation{Owner->GetComponentRotation()}; + + const bool bLocationUpdated = !Owner->WristLocation.Equals(NewWristLocation, SMALL_NUMBER); + const bool bRotationUpdated = !Owner->WristRotation.Equals(NewWristRotation, SMALL_NUMBER); + + if (bLocationUpdated) + { + Owner->WristLocation = MoveTemp(NewWristLocation); + } + + if (bRotationUpdated) + { + Owner->WristRotation = MoveTemp(NewWristRotation); + } + + if (bLocationUpdated && Owner->WristLocationChangedEvent.IsBound()) + { + Owner->WristLocationChangedEvent.Broadcast(Owner->WristLocation); + } + + if (bRotationUpdated && Owner->WristRotationChangedEvent.IsBound()) + { + Owner->WristRotationChangedEvent.Broadcast(Owner->WristRotation); + } + + if ((bLocationUpdated && bRotationUpdated) && Owner->WristLocationAndRotationChangedEvent.IsBound()) + { + Owner->WristLocationAndRotationChangedEvent.Broadcast(Owner->WristLocation, Owner->WristRotation); + } +} + +void USGWristTrackerComponent::FImpl::DrawDebugWristTracker() const +{ + const UWorld* World{Owner->GetWorld()}; + const FSGWristTrackingDebuggingSettings& DebuggingSettings{Owner->GetWristTrackingSettings().DebuggingSettings}; + + FSGDebugGizmo::Draw(World, Owner->WristLocation, Owner->WristRotation, DebuggingSettings.DebugWristTrackerSettings); +} + +void USGWristTrackerComponent::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Engine/SGGameInstance.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Engine/SGGameInstance.cpp new file mode 100644 index 0000000..73f49f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Engine/SGGameInstance.cpp @@ -0,0 +1,97 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Engine/SGGameInstance.h" + +#include "Engine/Engine.h" + +#include "SenseGlove/GameFramework/SGGameUserSettings.h" +#include "SGLog/SGLog.h" + +void USGGameInstance::SG_GetEngineScalabilitySettings() +{ + const USGGameUserSettings* GameUserSettings{USGGameUserSettings::GetInstance()}; + ensureAlwaysMsgf(GameUserSettings, TEXT("Invalid GameUserSettings!")); + + static UEnum* EnumPtr{StaticEnum()}; + ensureAlwaysMsgf(EnumPtr, TEXT("Failed to find the ESGEngineScalabilitySettings enum!")); + + const ESGEngineScalabilitySettings Scalability = GameUserSettings->GetEngineScalabilitySettings(); + const FName ScalabilityName{ + EnumPtr->GetNameByValue(static_cast(Scalability)) + }; + + SGLOG("Get Engine Scalability Settings", ScalabilityName); +} + +void USGGameInstance::SG_SetEngineScalabilitySettings(const ESGEngineScalabilitySettings Scalability) +{ + USGGameUserSettings* GameUserSettings{USGGameUserSettings::GetInstance()}; + ensureAlwaysMsgf(GameUserSettings, TEXT("Invalid GameUserSettings!")); + + static UEnum* EnumPtr{StaticEnum()}; + ensureAlwaysMsgf(EnumPtr, TEXT("Failed to find the ESGEngineScalabilitySettings enum!")); + + GameUserSettings->SetEngineScalabilitySettings(Scalability); + + const FName ScalabilityName{ + EnumPtr->GetNameByValue(static_cast(Scalability)) + }; + + SGLOG("Set Engine Scalability Settings", ScalabilityName); +} + +USGGameInstance::USGGameInstance(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ +} + +void USGGameInstance::Init() +{ + Super::Init(); + + SGLOG("Initializing the SenseGlove GameInstance...") + + SGLOG("The SenseGlove GameInstance has been initialized successfully!") +} + +void USGGameInstance::Shutdown() +{ + Super::Shutdown(); + + SGLOG("Shutting down the SenseGlove GameInstance...") + + SGLOG("The SenseGlove GameInstance has been shutdown successfully!") +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameModeBase.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameModeBase.cpp new file mode 100644 index 0000000..aeccf99 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameModeBase.cpp @@ -0,0 +1,46 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/GameFramework/SGGameModeBase.h" + +#include "SenseGlove/GameFramework/SGPawn.h" +#include "SenseGlove/GameFramework/SGPlayerController.h" + +ASGGameModeBase::ASGGameModeBase(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer) +{ + DefaultPawnClass = ASGPawn::StaticClass(); + PlayerControllerClass = ASGPlayerController::StaticClass(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameUserSettings.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameUserSettings.cpp new file mode 100644 index 0000000..692b52b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGGameUserSettings.cpp @@ -0,0 +1,307 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/GameFramework/SGGameUserSettings.h" + +#include "Engine/Engine.h" +#include "HAL/IConsoleManager.h" +#include "Misc/ConfigCacheIni.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Scalability.h" + +#include "SGSettings/SGSettings.h" + +struct USGGameUserSettings::FImpl +{ + /************************ + * Static methods + ************************/ + + static float GetRenderScaleLevelFromQualityLevel( + int32 InQualityLevel, + Scalability::EQualityLevelBehavior Behavior = Scalability::EQualityLevelBehavior::EAbsolute); + + /************************ + * Owner object + ************************/ + + USGGameUserSettings* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGGameUserSettings* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + bool DoesCurrentSettingsMatch(ESGEngineScalabilitySettings Scalability) const; +}; + +float USGGameUserSettings::FImpl::GetRenderScaleLevelFromQualityLevel( + const int32 InQualityLevel, const Scalability::EQualityLevelBehavior Behavior) +{ + if (!ensureAlwaysMsgf(GConfig, TEXT("Invalid GConfig!"))) + { + return 0.0f; + } + + TArray ResolutionValueStrings; + GConfig->GetSingleLineArray(TEXT("ScalabilitySettings"), TEXT("PerfIndexValues_ResolutionQuality"), + ResolutionValueStrings, GScalabilityIni); + + if (ResolutionValueStrings.Num() == 0) + { + UE_LOG(LogConsoleResponse, Display, + TEXT("Failed to find resolution value strings in scalability ini. Falling back to the default.")); + return 100.0f; + } + + // No negative levels! + int32 QualityLevel = FMath::Max(0, InQualityLevel); + if (Behavior == Scalability::EQualityLevelBehavior::ERelativeToMax) + { + QualityLevel = FMath::Max(ResolutionValueStrings.Num() - 1 - QualityLevel, 0); + } + else + { + QualityLevel = FMath::Clamp(QualityLevel, 0, ResolutionValueStrings.Num() - 1); + } + + return FCString::Atof(*ResolutionValueStrings[QualityLevel]); +} + +USGGameUserSettings::USGGameUserSettings(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +USGGameUserSettings* USGGameUserSettings::GetInstance() +{ + USGGameUserSettings* Instance{GEngine ? Cast(GEngine->GetGameUserSettings()) : nullptr}; + ensureAlwaysMsgf(Instance, TEXT("Invalid GameUserSettings!")); + return Instance; +} + +ESGEngineScalabilitySettings USGGameUserSettings::GetEngineScalabilitySettings() const +{ + const bool bDoesCurrentSettingsMatchLow = Pimpl->DoesCurrentSettingsMatch(ESGEngineScalabilitySettings::Low); + if (bDoesCurrentSettingsMatchLow) + { + return ESGEngineScalabilitySettings::Low; + } + + const bool bDoesCurrentSettingsMatchMedium = Pimpl->DoesCurrentSettingsMatch(ESGEngineScalabilitySettings::Medium); + if (bDoesCurrentSettingsMatchMedium) + { + return ESGEngineScalabilitySettings::Medium; + } + + const bool bDoesCurrentSettingsMatchHigh = Pimpl->DoesCurrentSettingsMatch(ESGEngineScalabilitySettings::High); + if (bDoesCurrentSettingsMatchHigh) + { + return ESGEngineScalabilitySettings::High; + } + + const bool bDoesCurrentSettingsMatchEpic = Pimpl->DoesCurrentSettingsMatch(ESGEngineScalabilitySettings::Epic); + if (bDoesCurrentSettingsMatchEpic) + { + return ESGEngineScalabilitySettings::Epic; + } + + const bool bDoesCurrentSettingsMatchCinematic = Pimpl->DoesCurrentSettingsMatch( + ESGEngineScalabilitySettings::Cinematic); + if (bDoesCurrentSettingsMatchCinematic) + { + return ESGEngineScalabilitySettings::Cinematic; + } + + return ESGEngineScalabilitySettings::Custom; +} + +void USGGameUserSettings::SetEngineScalabilitySettings(ESGEngineScalabilitySettings Scalability) +{ + if (!ensureAlwaysMsgf(Scalability != ESGEngineScalabilitySettings::Custom, + TEXT("Cannot set the engine scalability directly to custom!" + " It should be either: Low, Medium, High, Epic, Cinematic," + " or Auto (determined by hardware benchmarking)!"))) + { + return; + } + + const FSGHardwareBenchmarkingSettings& Settings{ + USGSettings::GetInstance()->GetGameUserSettings().HardwareBenchmarkingSettings + }; + + if (IsDirty()) + { + ValidateSettings(); + ConfirmVideoMode(); + } + + if (Scalability != ESGEngineScalabilitySettings::Auto) + { + const int32 ScalabilityValue = static_cast(Scalability); + + const float ResolutionScaleNormalized = FImpl::GetRenderScaleLevelFromQualityLevel( + ScalabilityValue, Scalability::EQualityLevelBehavior::EAbsolute); + SetResolutionScaleNormalized(ResolutionScaleNormalized); + + ScalabilityQuality.SetViewDistanceQuality(ScalabilityValue); + ScalabilityQuality.SetAntiAliasingQuality(ScalabilityValue); + ScalabilityQuality.SetShadowQuality(ScalabilityValue); + ScalabilityQuality.SetGlobalIlluminationQuality(ScalabilityValue); + ScalabilityQuality.SetReflectionQuality(ScalabilityValue); + ScalabilityQuality.SetPostProcessQuality(ScalabilityValue); + ScalabilityQuality.SetTextureQuality(ScalabilityValue); + ScalabilityQuality.SetEffectsQuality(ScalabilityValue); + ScalabilityQuality.SetFoliageQuality(ScalabilityValue); + ScalabilityQuality.SetShadingQuality(ScalabilityValue); +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 + ScalabilityQuality.SetLandscapeQuality(ScalabilityValue); +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ + } + else + { + RunHardwareBenchmark( + Settings.WorkScale, + Settings.CPUMultiplier, + Settings.GPUMultiplier); + ApplyHardwareBenchmarkResults(); + } + + ConfirmVideoMode(); + ApplySettings(false); +} + +USGGameUserSettings::FImpl::FImpl(USGGameUserSettings* InOwner) + : Owner(InOwner) +{ +} + +USGGameUserSettings::FImpl::~FImpl() = default; + +bool USGGameUserSettings::FImpl::DoesCurrentSettingsMatch(const ESGEngineScalabilitySettings Scalability) const +{ + static const float ResolutionScaleNormalizedLow = FImpl::GetRenderScaleLevelFromQualityLevel( + static_cast(ESGEngineScalabilitySettings::Low)); + static const float ResolutionScaleNormalizedMedium = FImpl::GetRenderScaleLevelFromQualityLevel( + static_cast(ESGEngineScalabilitySettings::Medium)); + static const float ResolutionScaleNormalizedHigh = FImpl::GetRenderScaleLevelFromQualityLevel( + static_cast(ESGEngineScalabilitySettings::High)); + static const float ResolutionScaleNormalizedEpic = FImpl::GetRenderScaleLevelFromQualityLevel( + static_cast(ESGEngineScalabilitySettings::Epic)); + static const float ResolutionScaleNormalizedCinematic = FImpl::GetRenderScaleLevelFromQualityLevel( + static_cast(ESGEngineScalabilitySettings::Cinematic)); + + float ResolutionScaleNormalized = 0.0f; + switch (Scalability) + { + case ESGEngineScalabilitySettings::Low: + ResolutionScaleNormalized = ResolutionScaleNormalizedLow; + break; + case ESGEngineScalabilitySettings::Medium: + ResolutionScaleNormalized = ResolutionScaleNormalizedMedium; + break; + case ESGEngineScalabilitySettings::High: + ResolutionScaleNormalized = ResolutionScaleNormalizedHigh; + break; + case ESGEngineScalabilitySettings::Epic: + ResolutionScaleNormalized = ResolutionScaleNormalizedEpic; + break; + case ESGEngineScalabilitySettings::Cinematic: + ResolutionScaleNormalized = ResolutionScaleNormalizedCinematic; + break; + default: + ensureAlwaysMsgf(false, TEXT("Login Error: the execution flow should never reach here!")); + break; + } + + const int32 ScalabilityValue = static_cast(Scalability); + + const float CurrentResolutionScaleNormalized = FImpl::GetRenderScaleLevelFromQualityLevel( + ScalabilityValue, Scalability::EQualityLevelBehavior::EAbsolute); + + const int32 CurrentViewDistanceQuality = Owner->ScalabilityQuality.ViewDistanceQuality; + const int32 CurrentAntiAliasingQuality = Owner->ScalabilityQuality.AntiAliasingQuality; + const int32 CurrentShadowQuality = Owner->ScalabilityQuality.ShadowQuality; + const int32 CurrentGlobalIlluminationQuality = Owner->ScalabilityQuality.GlobalIlluminationQuality; + const int32 CurrentReflectionQuality = Owner->ScalabilityQuality.ReflectionQuality; + const int32 CurrentPostProcessingQuality = Owner->ScalabilityQuality.PostProcessQuality; + const int32 CurrentTextureQuality = Owner->ScalabilityQuality.TextureQuality; + const int32 CurrentEffectQuality = Owner->ScalabilityQuality.EffectsQuality; + const int32 CurrentFoliageQuality = Owner->ScalabilityQuality.FoliageQuality; + const int32 CurrentShadingQuality = Owner->ScalabilityQuality.ShadingQuality; +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 + const int32 CurrentLandscapeQuality = Owner->ScalabilityQuality.LandscapeQuality; +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ + + if (FMath::IsNearlyEqual(CurrentResolutionScaleNormalized, ResolutionScaleNormalized) + && CurrentViewDistanceQuality == ScalabilityValue + && CurrentAntiAliasingQuality == ScalabilityValue + && CurrentShadowQuality == ScalabilityValue + && CurrentGlobalIlluminationQuality == ScalabilityValue + && CurrentReflectionQuality == ScalabilityValue + && CurrentPostProcessingQuality == ScalabilityValue + && CurrentTextureQuality == ScalabilityValue + && CurrentEffectQuality == ScalabilityValue + && CurrentFoliageQuality == ScalabilityValue + && CurrentShadingQuality == ScalabilityValue +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 + && CurrentLandscapeQuality == ScalabilityValue +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ + ) + { + return true; + } + + return false; +} + +void USGGameUserSettings::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp new file mode 100644 index 0000000..43803d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPawn.cpp @@ -0,0 +1,2278 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/GameFramework/SGPawn.h" + +#include "Camera/CameraComponent.h" +#include "Components/PrimitiveComponent.h" +#include "Components/SphereComponent.h" +#include "Kismet/KismetMathLibrary.h" +#include "UObject/UObjectGlobals.h" +#include "XRDeviceVisualizationComponent.h" + +#include "SenseGlove/Components/SGGrabComponent.h" +#include "SenseGlove/Components/SGTouchComponent.h" +#include "SenseGlove/Components/SGVirtualHandComponent.h" +#include "SenseGlove/Components/SGWristTrackerComponent.h" +#include "SGSettings/SGSettings.h" +#include "SGLog/SGLog.h" + +struct ASGPawn::FImpl +{ + /************************ + * Static methods + ************************/ + + /************************ + * Owner object + ************************/ + + ASGPawn* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(ASGPawn* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + void BindRealHandsOverlapEvents(); + void UnbindRealHandsOverlapEvents(); + + void BindFingerGrabOverlapEvents(); + void UnbindFingerGrabOverlapEvents(); + + void BindFingerTouchOverlapEvents(); + void UnbindFingerTouchOverlapEvents(); + + void SetVisibility(USceneComponent* SceneComponent, const bool bVisibility) const; + + void UpdateHandLocation(const bool bRight, const FVector& Location, const bool bUpdateVirtualHand) const; + void UpdateLeftHandLocation(const FVector& Location, const bool bUpdateVirtualHand) const; + void UpdateRightHandLocation(const FVector& Location, const bool bUpdateVirtualHand) const; + + void UpdateHandRotation(const bool bRight, const FRotator& Rotation, const bool bUpdateVirtualHand); + void UpdateLeftHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand); + void UpdateRightHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand); + + void UpdateHandLocationAndRotation( + const bool bRight, const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand); + void UpdateLeftHandLocationAndRotation( + const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand); + void UpdateRightHandLocationAndRotation( + const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand); + + void SetFingerColliderCollisionEnabled(USphereComponent* Collider, bool bEnabled) const; + void SetAllFingersColliderCollisionEnabled(bool bRight, bool bEnabled) const; + + FORCEINLINE void RegisterLeftHandOverlappedActor(const AActor* Actor) const + { + Owner->LeftHandOverlappedActors.AddUnique(Actor); + } + + FORCEINLINE void UnregisterLeftHandOverlappedActor(const AActor* Actor) const + { + Owner->LeftHandOverlappedActors.Remove(Actor); + } + + FORCEINLINE void RegisterRightHandOverlappedActor(const AActor* Actor) const + { + Owner->RightHandOverlappedActors.AddUnique(Actor); + } + + FORCEINLINE void UnregisterRightHandOverlappedActor(const AActor* Actor) const + { + Owner->RightHandOverlappedActors.Remove(Actor); + } + + FORCEINLINE bool IsLeftHandOverlappingWithAnyActor() const + { + return Owner->LeftHandOverlappedActors.Num() > 0; + } + + FORCEINLINE bool IsRightHandOverlappingWithAnyActor() const + { + return Owner->RightHandOverlappedActors.Num() > 0; + } + + void ApplyHandVelocityToGrabbedActor(const FSGGrabState& GrabState) const; + + void SetGrabbedActor(FSGGrabState& GrabState, AActor* Actor) const; + void SetLeftHandGrabbedActor(AActor* Actor) const; + void SetRightHandGrabbedActor(AActor* Actor) const; + + void RecordHandVelocity(FSGGrabState& GrabState, const float DeltaSeconds) const; + + void Release(FSGGrabState& GrabState) const; + + void TriggerGrabStateUpdatedEvent(const FSGGrabState& GrabState) const; + void TriggerTouchStateUpdatedEvent(const FSGTouchState& TouchState) const; + void TriggerActorGrabbedEvent(const USGVirtualHandComponent* Hand, const AActor* Actor) const; + void TriggerActorReleasedEvent(const USGVirtualHandComponent* Hand, const AActor* Actor) const; + void TriggerBeginTouch(const USGVirtualHandComponent* Hand, const AActor* Actor) const; + void TriggerEndTouch(const USGVirtualHandComponent* Hand, const AActor* Actor) const; +}; + +ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + PrimaryActorTick.bCanEverTick = true; + + SceneRoot = ObjectInitializer.CreateDefaultSubobject(this, TEXT("SceneRoot")); + SetRootComponent(SceneRoot); + + Camera = ObjectInitializer.CreateDefaultSubobject(this, TEXT("Camera")); + Camera->SetupAttachment(GetRootComponent()); + Camera->SetCanEverAffectNavigation(false); + + WristTrackerLeft = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("WristTrackerLeft")); + WristTrackerLeft->SetupAttachment(GetRootComponent()); + WristTrackerLeft->SetRight(false); + + ControllerVisualizerLeft = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("ControllerVisualizerLeft")); + ControllerVisualizerLeft->SetupAttachment(WristTrackerLeft); + ControllerVisualizerLeft->SetDisplayModelSource(FName("OpenXR")); + + HandLeft = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("HandLeft")); + HandLeft->SetupAttachment(GetRootComponent()); + HandLeft->SetCanEverAffectNavigation(false); + HandLeft->SetGenerateOverlapEvents(true); + HandLeft->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + HandLeft->SetCollisionObjectType(ECC_Pawn); + HandLeft->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + HandLeft->SetCollisionResponseToAllChannels(ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_Pawn, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Block); + HandLeft->SetCollisionResponseToChannel(ECC_Destructible, ECR_Block); + HandLeft->SetRight(false); + + const FSGVirtualHandSettings LeftHandSettings{HandLeft->GetVirtualHandSettings()}; + HandLeft->SetRelativeRotation(LeftHandSettings.MeshSettings.RootBoneRotationCorrection, + false, nullptr, ETeleportType::None); + HandLeft->SetRelativeLocation(FVector{30.0f, -20.0f, -10.0f}, + false, nullptr, ETeleportType::None); + HandLeft->SetWristTracker(WristTrackerLeft); + + RealHandLeft = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RealHandLeft")); + RealHandLeft->SetupAttachment(GetRootComponent()); + RealHandLeft->SetCanEverAffectNavigation(false); + RealHandLeft->SetGenerateOverlapEvents(true); + RealHandLeft->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RealHandLeft->SetCollisionObjectType(ECC_Pawn); + RealHandLeft->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RealHandLeft->SetCollisionResponseToAllChannels(ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RealHandLeft->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + RealHandLeft->SetRight(false); + Pimpl->SetVisibility(RealHandLeft, false); + + const FSGVirtualHandMeshSettings RealLeftHandMeshSettings{HandLeft->GetVirtualHandSettings().MeshSettings}; + RealHandLeft->SetRelativeRotation(RealLeftHandMeshSettings.RootBoneRotationCorrection, + false, nullptr, ETeleportType::None); + RealHandLeft->SetRelativeLocation(FVector{30.0f, -20.0f, -10.0f}, + false, nullptr, ETeleportType::None); + RealHandLeft->SetWristTracker(WristTrackerLeft); + + LeftThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftThumbFingertipGrabCollider")); + LeftThumbFingertipGrabCollider->SetRelativeScale3D(LeftHandSettings.GrabSettings.DefaultColliderSize); + LeftThumbFingertipGrabCollider->SetupAttachment(HandLeft, LeftHandSettings.GrabSettings.ThumbColliderSocketName); + LeftThumbFingertipGrabCollider->SetCastShadow(false); + LeftThumbFingertipGrabCollider->bCastDynamicShadow = false; + LeftThumbFingertipGrabCollider->SetReceivesDecals(true); + LeftThumbFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftThumbFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftThumbFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftThumbFingertipGrabCollider, true); + + LeftIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftIndexFingertipGrabCollider")); + LeftIndexFingertipGrabCollider->SetRelativeScale3D(LeftHandSettings.GrabSettings.DefaultColliderSize); + LeftIndexFingertipGrabCollider->SetupAttachment(HandLeft, LeftHandSettings.GrabSettings.IndexColliderSocketName); + LeftIndexFingertipGrabCollider->SetCastShadow(false); + LeftIndexFingertipGrabCollider->bCastDynamicShadow = false; + LeftIndexFingertipGrabCollider->SetReceivesDecals(true); + LeftIndexFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftIndexFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftIndexFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftIndexFingertipGrabCollider, true); + + LeftMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftMiddleFingertipGrabCollider")); + LeftMiddleFingertipGrabCollider->SetRelativeScale3D(LeftHandSettings.GrabSettings.DefaultColliderSize); + LeftMiddleFingertipGrabCollider->SetupAttachment(HandLeft, LeftHandSettings.GrabSettings.MiddleColliderSocketName); + LeftMiddleFingertipGrabCollider->SetCastShadow(false); + LeftMiddleFingertipGrabCollider->bCastDynamicShadow = false; + LeftMiddleFingertipGrabCollider->SetReceivesDecals(true); + LeftMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false); + LeftMiddleFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftMiddleFingertipGrabCollider, true); + + LeftThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftThumbFingertipTouchCollider")); + LeftThumbFingertipTouchCollider->SetRelativeScale3D(LeftHandSettings.TouchSettings.DefaultColliderSize); + LeftThumbFingertipTouchCollider->SetupAttachment(HandLeft, LeftHandSettings.TouchSettings.ThumbColliderSocketName); + LeftThumbFingertipTouchCollider->SetCastShadow(false); + LeftThumbFingertipTouchCollider->bCastDynamicShadow = false; + LeftThumbFingertipTouchCollider->SetReceivesDecals(true); + LeftThumbFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftThumbFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftThumbFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftThumbFingertipTouchCollider, true); + + LeftIndexFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftIndexFingertipTouchCollider")); + LeftIndexFingertipTouchCollider->SetRelativeScale3D(LeftHandSettings.TouchSettings.DefaultColliderSize); + LeftIndexFingertipTouchCollider->SetupAttachment(HandLeft, LeftHandSettings.TouchSettings.IndexColliderSocketName); + LeftIndexFingertipTouchCollider->SetCastShadow(false); + LeftIndexFingertipTouchCollider->bCastDynamicShadow = false; + LeftIndexFingertipTouchCollider->SetReceivesDecals(true); + LeftIndexFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftIndexFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftIndexFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftIndexFingertipTouchCollider, true); + + LeftMiddleFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftMiddleFingertipTouchCollider")); + LeftMiddleFingertipTouchCollider->SetRelativeScale3D(LeftHandSettings.TouchSettings.DefaultColliderSize); + LeftMiddleFingertipTouchCollider->SetupAttachment( + HandLeft, LeftHandSettings.TouchSettings.MiddleColliderSocketName); + LeftMiddleFingertipTouchCollider->SetCastShadow(false); + LeftMiddleFingertipTouchCollider->bCastDynamicShadow = false; + LeftMiddleFingertipTouchCollider->SetReceivesDecals(true); + LeftMiddleFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftMiddleFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftMiddleFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + LeftMiddleFingertipTouchCollider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + Pimpl->SetFingerColliderCollisionEnabled(LeftMiddleFingertipTouchCollider, true); + + LeftRingFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftRingFingertipTouchCollider")); + LeftRingFingertipTouchCollider->SetRelativeScale3D(LeftHandSettings.TouchSettings.DefaultColliderSize); + LeftRingFingertipTouchCollider->SetupAttachment(HandLeft, LeftHandSettings.TouchSettings.RingColliderSocketName); + LeftRingFingertipTouchCollider->SetCastShadow(false); + LeftRingFingertipTouchCollider->bCastDynamicShadow = false; + LeftRingFingertipTouchCollider->SetReceivesDecals(true); + LeftRingFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftRingFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftRingFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftRingFingertipTouchCollider, true); + + LeftPinkyFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("LeftPinkyFingertipTouchCollider")); + LeftPinkyFingertipTouchCollider->SetRelativeScale3D(LeftHandSettings.TouchSettings.DefaultColliderSize); + LeftPinkyFingertipTouchCollider->SetupAttachment(HandLeft, LeftHandSettings.TouchSettings.PinkyColliderSocketName); + LeftPinkyFingertipTouchCollider->SetCastShadow(false); + LeftPinkyFingertipTouchCollider->bCastDynamicShadow = false; + LeftPinkyFingertipTouchCollider->SetReceivesDecals(true); + LeftPinkyFingertipTouchCollider->SetCanEverAffectNavigation(false); + LeftPinkyFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + LeftPinkyFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(LeftPinkyFingertipTouchCollider, true); + + WristTrackerRight = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("WristTrackerRight")); + WristTrackerRight->SetupAttachment(GetRootComponent()); + WristTrackerRight->SetRight(true); + + ControllerVisualizerRight = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("ControllerVisualizerRight")); + ControllerVisualizerRight->SetupAttachment(WristTrackerRight); + ControllerVisualizerRight->SetDisplayModelSource(FName("OpenXR")); + + HandRight = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("HandRight")); + HandRight->SetupAttachment(GetRootComponent()); + HandRight->SetCanEverAffectNavigation(false); + HandRight->SetGenerateOverlapEvents(true); + HandRight->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + HandRight->SetCollisionObjectType(ECC_Pawn); + HandRight->SetCollisionEnabled(ECollisionEnabled::QueryAndPhysics); + HandRight->SetCollisionResponseToAllChannels(ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_Pawn, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_Visibility, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Block); + HandRight->SetCollisionResponseToChannel(ECC_Destructible, ECR_Block); + HandRight->SetRight(true); + + const FSGVirtualHandSettings RightHandSettings{HandRight->GetVirtualHandSettings()}; + HandRight->SetRelativeRotation(RightHandSettings.MeshSettings.RootBoneRotationCorrection, + false, nullptr, ETeleportType::None); + HandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f}, + false, nullptr, ETeleportType::None); + HandRight->SetWristTracker(WristTrackerRight); + + RealHandRight = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RealHandRight")); + RealHandRight->SetupAttachment(GetRootComponent()); + RealHandRight->SetCanEverAffectNavigation(false); + RealHandRight->SetGenerateOverlapEvents(true); + RealHandRight->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RealHandRight->SetCollisionObjectType(ECC_Pawn); + RealHandRight->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + RealHandRight->SetCollisionResponseToAllChannels(ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + RealHandRight->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + RealHandRight->SetRight(true); + Pimpl->SetVisibility(RealHandRight, false); + + const FSGVirtualHandMeshSettings RealRightHandMeshSettings{HandRight->GetVirtualHandSettings().MeshSettings}; + RealHandRight->SetRelativeRotation(RealRightHandMeshSettings.RootBoneRotationCorrection, + false, nullptr, ETeleportType::None); + RealHandRight->SetRelativeLocation(FVector{30.0f, 20.0f, -10.0f}, + false, nullptr, ETeleportType::None); + RealHandRight->SetWristTracker(WristTrackerRight); + + RightThumbFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightThumbFingertipGrabCollider")); + RightThumbFingertipGrabCollider->SetRelativeScale3D(RightHandSettings.GrabSettings.DefaultColliderSize); + RightThumbFingertipGrabCollider->SetupAttachment(HandRight, RightHandSettings.GrabSettings.ThumbColliderSocketName); + RightThumbFingertipGrabCollider->SetCastShadow(false); + RightThumbFingertipGrabCollider->bCastDynamicShadow = false; + RightThumbFingertipGrabCollider->SetReceivesDecals(true); + RightThumbFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightThumbFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightThumbFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightThumbFingertipGrabCollider, true); + + RightIndexFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightIndexFingertipGrabCollider")); + RightIndexFingertipGrabCollider->SetRelativeScale3D(RightHandSettings.GrabSettings.DefaultColliderSize); + RightIndexFingertipGrabCollider->SetupAttachment(HandRight, RightHandSettings.GrabSettings.IndexColliderSocketName); + RightIndexFingertipGrabCollider->SetCastShadow(false); + RightIndexFingertipGrabCollider->bCastDynamicShadow = false; + RightIndexFingertipGrabCollider->SetReceivesDecals(true); + RightIndexFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightIndexFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightIndexFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightIndexFingertipGrabCollider, true); + + RightMiddleFingertipGrabCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightMiddleFingertipGrabCollider")); + RightMiddleFingertipGrabCollider->SetRelativeScale3D(RightHandSettings.GrabSettings.DefaultColliderSize); + RightMiddleFingertipGrabCollider->SetupAttachment( + HandRight, RightHandSettings.GrabSettings.MiddleColliderSocketName); + RightMiddleFingertipGrabCollider->SetCastShadow(false); + RightMiddleFingertipGrabCollider->bCastDynamicShadow = false; + RightMiddleFingertipGrabCollider->SetReceivesDecals(true); + RightMiddleFingertipGrabCollider->SetCanEverAffectNavigation(false); + RightMiddleFingertipGrabCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightMiddleFingertipGrabCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightMiddleFingertipGrabCollider, true); + + RightThumbFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightThumbFingertipTouchCollider")); + RightThumbFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize); + RightThumbFingertipTouchCollider->SetupAttachment( + HandRight,RightHandSettings.TouchSettings.ThumbColliderSocketName); + RightThumbFingertipTouchCollider->SetCastShadow(false); + RightThumbFingertipTouchCollider->bCastDynamicShadow = false; + RightThumbFingertipTouchCollider->SetReceivesDecals(true); + RightThumbFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightThumbFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightThumbFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightThumbFingertipTouchCollider, true); + + RightIndexFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightIndexFingertipTouchCollider")); + RightIndexFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize); + RightIndexFingertipTouchCollider->SetupAttachment( + HandRight, RightHandSettings.TouchSettings.IndexColliderSocketName); + RightIndexFingertipTouchCollider->SetCastShadow(false); + RightIndexFingertipTouchCollider->bCastDynamicShadow = false; + RightIndexFingertipTouchCollider->SetReceivesDecals(true); + RightIndexFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightIndexFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightIndexFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightIndexFingertipTouchCollider, true); + + RightMiddleFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightMiddleFingertipTouchCollider")); + RightMiddleFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize); + RightMiddleFingertipTouchCollider->SetupAttachment( + HandRight, RightHandSettings.TouchSettings.MiddleColliderSocketName); + RightMiddleFingertipTouchCollider->SetCastShadow(false); + RightMiddleFingertipTouchCollider->bCastDynamicShadow = false; + RightMiddleFingertipTouchCollider->SetReceivesDecals(true); + RightMiddleFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightMiddleFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightMiddleFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightMiddleFingertipTouchCollider, true); + + RightRingFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightRingFingertipTouchCollider")); + RightRingFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize); + RightRingFingertipTouchCollider->SetupAttachment(HandRight, RightHandSettings.TouchSettings.RingColliderSocketName); + RightRingFingertipTouchCollider->SetCastShadow(false); + RightRingFingertipTouchCollider->bCastDynamicShadow = false; + RightRingFingertipTouchCollider->SetReceivesDecals(true); + RightRingFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightRingFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightRingFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightRingFingertipTouchCollider, true); + + RightPinkyFingertipTouchCollider = ObjectInitializer.CreateDefaultSubobject( + this, TEXT("RightPinkyFingertipTouchCollider")); + RightPinkyFingertipTouchCollider->SetRelativeScale3D(RightHandSettings.TouchSettings.DefaultColliderSize); + RightPinkyFingertipTouchCollider->SetupAttachment( + HandRight, RightHandSettings.TouchSettings.PinkyColliderSocketName); + RightPinkyFingertipTouchCollider->SetCastShadow(false); + RightPinkyFingertipTouchCollider->bCastDynamicShadow = false; + RightPinkyFingertipTouchCollider->SetReceivesDecals(true); + RightPinkyFingertipTouchCollider->SetCanEverAffectNavigation(false); + RightPinkyFingertipTouchCollider->CanCharacterStepUpOn = ECanBeCharacterBase::ECB_Owner; + RightPinkyFingertipTouchCollider->SetCollisionObjectType(ECC_Pawn); + Pimpl->SetFingerColliderCollisionEnabled(RightPinkyFingertipTouchCollider, true); + + MaxNumberOfHandVelocitySamples = 10; + + LeftHandGrabState = FSGGrabState{ + HandLeft, FVector::Zero(), {}, nullptr, nullptr, nullptr, nullptr + }; + LeftHandTouchState = FSGTouchState{ + HandLeft, nullptr, nullptr, nullptr, nullptr, nullptr + }; + + RightHandGrabState = FSGGrabState{ + HandRight, FVector::Zero(), {}, nullptr, nullptr, nullptr, nullptr + }; + RightHandTouchState = FSGTouchState{ + HandRight, nullptr, nullptr, nullptr, nullptr, nullptr + }; +} + +void ASGPawn::OnGrabStateUpdated_Implementation(const FSGGrabState& GrabState) +{ +} + +void ASGPawn::OnTouchStateUpdated_Implementation(const FSGTouchState& TouchState) +{ +} + +void ASGPawn::OnActorGrabbed_Implementation(const USGVirtualHandComponent* Hand, const AActor* Actor) +{ +} + +void ASGPawn::OnActorReleased_Implementation(const USGVirtualHandComponent* Hand, const AActor* Actor) +{ +} + +void ASGPawn::OnActorBeginTouch_Implementation(const USGVirtualHandComponent* Hand, const AActor* Actor) +{ +} + +void ASGPawn::OnActorEndTouch_Implementation(const USGVirtualHandComponent* Hand, const AActor* Actor) +{ +} + +void ASGPawn::BeginPlay() +{ + Super::BeginPlay(); + + ensureAlwaysMsgf( + WristTrackerLeft->IsLeft() && HandLeft->IsLeft(), + TEXT("The left hand and the left wrist do not track the left hand!")); + ensureAlwaysMsgf( + WristTrackerRight->IsRight() && HandRight->IsRight(), + TEXT("The right hand and the right wrist do not track the right hand!")); + + WristTrackerLeft->OnWristLocationChanged().AddWeakLambda(this, [&](const FVector& Location)-> void + { + Pimpl->UpdateLeftHandLocation(Location, !Pimpl->IsLeftHandOverlappingWithAnyActor()); + }); + + WristTrackerLeft->OnWristRotationChanged().AddWeakLambda(this, [&](const FRotator& Rotation)-> void + { + Pimpl->UpdateLeftHandRotation(Rotation, !Pimpl->IsLeftHandOverlappingWithAnyActor()); + }); + + WristTrackerRight->OnWristLocationChanged().AddWeakLambda(this, [&](const FVector& Location)-> void + { + Pimpl->UpdateRightHandLocation(Location, !Pimpl->IsRightHandOverlappingWithAnyActor()); + }); + + WristTrackerRight->OnWristRotationChanged().AddWeakLambda(this, [&](const FRotator& Rotation)-> void + { + Pimpl->UpdateRightHandRotation(Rotation, !Pimpl->IsRightHandOverlappingWithAnyActor()); + }); + + HandLeft->OnHandVisibilityChanged().AddWeakLambda(this, [&](const bool bNewVisibility)-> void + { + Pimpl->SetAllFingersColliderCollisionEnabled(false, bNewVisibility); + }); + + HandRight->OnHandVisibilityChanged().AddWeakLambda(this, [&](const bool bNewVisibility)-> void + { + Pimpl->SetAllFingersColliderCollisionEnabled(true, bNewVisibility); + }); + + Pimpl->BindRealHandsOverlapEvents(); + + Pimpl->BindFingerGrabOverlapEvents(); + Pimpl->BindFingerTouchOverlapEvents(); +} + +void ASGPawn::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + Super::EndPlay(EndPlayReason); + + Pimpl->UnbindRealHandsOverlapEvents(); + + Pimpl->UnbindFingerGrabOverlapEvents(); + Pimpl->UnbindFingerTouchOverlapEvents(); +} + +void ASGPawn::Tick(const float DeltaSeconds) +{ + Super::Tick(DeltaSeconds); + + Pimpl->RecordHandVelocity(LeftHandGrabState, DeltaSeconds); + Pimpl->RecordHandVelocity(RightHandGrabState, DeltaSeconds); +} + +void ASGPawn::PreInitializeComponents() +{ + Super::PreInitializeComponents(); + + WristTrackerLeft->SetRight(HandLeft->IsRight()); + WristTrackerRight->SetRight(HandRight->IsRight()); +} + +void ASGPawn::PostInitializeComponents() +{ + Super::PostInitializeComponents(); +} + +void ASGPawn::OnRealLeftHandOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (OtherActor == this) + { + return; + } + + Pimpl->RegisterLeftHandOverlappedActor(OtherActor); +} + +void ASGPawn::OnRealLeftHandOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (OtherActor == this) + { + return; + } + + Pimpl->UnregisterLeftHandOverlappedActor(OtherActor); +} + +void ASGPawn::OnRealRightHandOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (OtherActor == this) + { + return; + } + + Pimpl->RegisterRightHandOverlappedActor(OtherActor); +} + +void ASGPawn::OnRealRightHandOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (OtherActor == this) + { + return; + } + + Pimpl->UnregisterRightHandOverlappedActor(OtherActor); +} + +void ASGPawn::OnLeftThumbFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + LeftHandGrabState.ActorThumbCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftThumbFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + if (LeftHandGrabState.ActorThumbCanGrab != OtherActor) + { + return; + } + + LeftHandGrabState.ActorThumbCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftIndexFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + LeftHandGrabState.ActorIndexCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftIndexFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + if (LeftHandGrabState.ActorIndexCanGrab != OtherActor) + { + return; + } + + LeftHandGrabState.ActorIndexCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + LeftHandGrabState.ActorMiddleCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandGrabState.Hand)) + { + return; + } + + if (LeftHandGrabState.ActorMiddleCanGrab != OtherActor) + { + return; + } + + LeftHandGrabState.ActorMiddleCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(LeftHandGrabState); +} + +void ASGPawn::OnLeftThumbFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + LeftHandTouchState.ActorThumbTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerBeginTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftThumbFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + if (LeftHandTouchState.ActorThumbTouching != OtherActor) + { + return; + } + + LeftHandTouchState.ActorThumbTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerEndTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftIndexFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + LeftHandTouchState.ActorIndexTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerBeginTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftIndexFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + if (LeftHandTouchState.ActorIndexTouching != OtherActor) + { + return; + } + + LeftHandTouchState.ActorIndexTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerEndTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + LeftHandTouchState.ActorMiddleTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerBeginTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + if (LeftHandTouchState.ActorMiddleTouching != OtherActor) + { + return; + } + + LeftHandTouchState.ActorMiddleTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerEndTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftRingFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + LeftHandTouchState.ActorRingTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerBeginTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftRingFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + if (LeftHandTouchState.ActorRingTouching != OtherActor) + { + return; + } + + LeftHandTouchState.ActorRingTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerEndTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = LeftHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + LeftHandTouchState.ActorPinkyTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerBeginTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(LeftHandTouchState.Hand)) + { + return; + } + + if (LeftHandTouchState.ActorPinkyTouching != OtherActor) + { + return; + } + + LeftHandTouchState.ActorPinkyTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(LeftHandTouchState); + Pimpl->TriggerEndTouch(LeftHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightThumbFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + RightHandGrabState.ActorThumbCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightThumbFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + if (RightHandGrabState.ActorThumbCanGrab != OtherActor) + { + return; + } + + RightHandGrabState.ActorThumbCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightIndexFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + RightHandGrabState.ActorIndexCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightIndexFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + if (RightHandGrabState.ActorThumbCanGrab != OtherActor) + { + return; + } + + RightHandGrabState.ActorIndexCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightMiddleFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandGrabState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGGrabComponent::IsGrabbable(OtherActor)) + { + return; + } + + RightHandGrabState.ActorMiddleCanGrab = OtherActor; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightMiddleFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandGrabState.Hand)) + { + return; + } + + if (RightHandGrabState.ActorMiddleCanGrab != OtherActor) + { + return; + } + + RightHandGrabState.ActorMiddleCanGrab = nullptr; + Pimpl->TriggerGrabStateUpdatedEvent(RightHandGrabState); +} + +void ASGPawn::OnRightThumbFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + RightHandTouchState.ActorThumbTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerBeginTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightThumbFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + if (RightHandTouchState.ActorThumbTouching != OtherActor) + { + return; + } + + RightHandTouchState.ActorThumbTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerEndTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightIndexFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + RightHandTouchState.ActorIndexTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerBeginTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightIndexFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + if (RightHandTouchState.ActorIndexTouching != OtherActor) + { + return; + } + + RightHandTouchState.ActorIndexTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerEndTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightMiddleFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + RightHandTouchState.ActorMiddleTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerBeginTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightMiddleFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + if (RightHandTouchState.ActorMiddleTouching != OtherActor) + { + return; + } + + RightHandTouchState.ActorMiddleTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerEndTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightRingFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + RightHandTouchState.ActorRingTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerBeginTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightRingFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + if (RightHandTouchState.ActorRingTouching != OtherActor) + { + return; + } + + RightHandTouchState.ActorRingTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerEndTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightPinkyFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex, + const bool bFromSweep, + const FHitResult& SweepResult) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + (void) bFromSweep; + (void) SweepResult; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + const bool bHandVisible = RightHandTouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!USGTouchComponent::IsTouchable(OtherActor)) + { + return; + } + + RightHandTouchState.ActorPinkyTouching = OtherActor; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerBeginTouch(RightHandTouchState.Hand, OtherActor); +} + +void ASGPawn::OnRightPinkyFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + const int32 OtherBodyIndex) +{ + (void) OverlappedComponent; + (void) OtherComp; + (void) OtherBodyIndex; + + if (!IsValid(RightHandTouchState.Hand)) + { + return; + } + + if (RightHandTouchState.ActorPinkyTouching != OtherActor) + { + return; + } + + RightHandTouchState.ActorPinkyTouching = nullptr; + Pimpl->TriggerTouchStateUpdatedEvent(RightHandTouchState); + Pimpl->TriggerEndTouch(RightHandTouchState.Hand, OtherActor); +} + +bool ASGPawn::IsLeftHandGrabbing(AActor*& OutActor) const +{ + if (!IsValid(LeftHandGrabState.Hand)) + { + return false; + } + + if (!IsValid(LeftHandGrabState.GrabbedActor)) + { + return false; + } + + OutActor = LeftHandGrabState.GrabbedActor; + return true; +} + +bool ASGPawn::IsRightHandGrabbing(AActor*& OutActor) const +{ + if (!IsValid(RightHandGrabState.Hand)) + { + return false; + } + + if (!IsValid(RightHandGrabState.GrabbedActor)) + { + return false; + } + + OutActor = RightHandGrabState.GrabbedActor; + return true; +} + +bool ASGPawn::IsGrabbing(const USGVirtualHandComponent* Hand, AActor*& OutActor) const +{ + return Hand == HandLeft ? IsLeftHandGrabbing(OutActor) : IsRightHandGrabbing(OutActor); +} + +void ASGPawn::Grab(USGVirtualHandComponent* Hand, AActor* Actor) +{ + if (!ensureAlwaysMsgf(IsValid(Hand), TEXT("%s"), TEXT("ERROR: invalid hand!"))) + { + return; + } + + const bool bHandVisible = Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + if (!ensureAlwaysMsgf(IsValid(Actor), TEXT("%s"), TEXT("ERROR: invalid actor!"))) + { + return; + } + + const USGGrabComponent* GrabComponent{USGGrabComponent::GetGrabComponent(Actor)}; + if (!IsValid(GrabComponent)) + { + return; + } + + FAttachmentTransformRules AttachmentRules{ + FAttachmentTransformRules(GrabComponent->GetAttachmentLocationRule(), + GrabComponent->GetAttachmentRotationRule(), + GrabComponent->GetAttachmentScaleRule(), + GrabComponent->GetAttachmentWeldSimulatedBodies()) + }; + + const FName SocketName{GrabComponent->GetAttachmentSocketName()}; + ensureAlwaysMsgf(SocketName != NAME_None, TEXT("invalid attachment socket name!")); + + if (GrabComponent->GetAffectPhysicsState()) + { + GrabComponent->SimulatePhysics(false); + } + + if (Hand->IsRight()) + { + Pimpl->UnregisterRightHandOverlappedActor(Actor); + } + else + { + Pimpl->UnregisterLeftHandOverlappedActor(Actor); + } + + const bool bAttached = Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName); + if (bAttached) + { + if (Hand->IsRight()) + { + Pimpl->SetRightHandGrabbedActor(Actor); + } + else + { + Pimpl->SetLeftHandGrabbedActor(Actor); + } + } + else + { + if (Hand->IsRight()) + { + SGLOG_ERROR("Failed to grab the actor with the right hand!", Actor, SocketName); + } + else + { + SGLOG_ERROR("Failed to grab the actor with the left hand!", Actor, SocketName); + } + } + + Pimpl->TriggerActorGrabbedEvent(Hand, Actor); +} + +void ASGPawn::ReleaseLeft() +{ + Pimpl->Release(LeftHandGrabState); +} + +void ASGPawn::ReleaseRight() +{ + Pimpl->Release(RightHandGrabState); +} + +ASGPawn::FImpl::FImpl(ASGPawn* InOwner) + : Owner(InOwner) +{ +} + +ASGPawn::FImpl::~FImpl() = default; + +void ASGPawn::FImpl::BindRealHandsOverlapEvents() +{ + Owner->RealHandLeft->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRealLeftHandOverlapBegins); + Owner->RealHandLeft->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRealLeftHandOverlapEnds); + + Owner->RealHandRight->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRealRightHandOverlapBegins); + Owner->RealHandRight->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRealRightHandOverlapEnds); +} + +void ASGPawn::FImpl::UnbindRealHandsOverlapEvents() +{ + Owner->RealHandLeft->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRealLeftHandOverlapBegins); + Owner->RealHandLeft->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRealLeftHandOverlapEnds); + + Owner->RealHandRight->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRealRightHandOverlapBegins); + Owner->RealHandRight->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRealRightHandOverlapEnds); +} + +void ASGPawn::FImpl::BindFingerGrabOverlapEvents() +{ + Owner->LeftThumbFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipGrabColliderOverlapBegins); + Owner->LeftThumbFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipGrabColliderOverlapEnds); + + Owner->LeftIndexFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipGrabColliderOverlapBegins); + Owner->LeftIndexFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipGrabColliderOverlapEnds); + + Owner->LeftMiddleFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapBegins); + Owner->LeftMiddleFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapEnds); + + Owner->RightThumbFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapBegins); + Owner->RightThumbFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapEnds); + + Owner->RightIndexFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapBegins); + Owner->RightIndexFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapEnds); + + Owner->RightMiddleFingertipGrabCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapBegins); + Owner->RightMiddleFingertipGrabCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapEnds); +} + +void ASGPawn::FImpl::UnbindFingerGrabOverlapEvents() +{ + Owner->LeftThumbFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipGrabColliderOverlapBegins); + Owner->LeftThumbFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipGrabColliderOverlapEnds); + + Owner->LeftIndexFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipGrabColliderOverlapBegins); + Owner->LeftIndexFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipGrabColliderOverlapEnds); + + Owner->LeftMiddleFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapBegins); + Owner->LeftMiddleFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipGrabColliderOverlapEnds); + + Owner->RightThumbFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapBegins); + Owner->RightThumbFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapEnds); + + Owner->RightIndexFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapBegins); + Owner->RightIndexFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapEnds); + + Owner->RightMiddleFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapBegins); + Owner->RightMiddleFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapEnds); +} + +void ASGPawn::FImpl::BindFingerTouchOverlapEvents() +{ + Owner->LeftThumbFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipTouchColliderOverlapBegins); + Owner->LeftThumbFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipTouchColliderOverlapEnds); + + Owner->LeftIndexFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipTouchColliderOverlapBegins); + Owner->LeftIndexFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipTouchColliderOverlapEnds); + + Owner->LeftMiddleFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapBegins); + Owner->LeftMiddleFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapEnds); + + Owner->LeftRingFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftRingFingertipTouchColliderOverlapBegins); + Owner->LeftRingFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftRingFingertipTouchColliderOverlapEnds); + + Owner->LeftPinkyFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapBegins); + Owner->LeftPinkyFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapEnds); + + Owner->RightThumbFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightThumbFingertipTouchColliderOverlapBegins); + Owner->RightThumbFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightThumbFingertipTouchColliderOverlapEnds); + + Owner->RightIndexFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightIndexFingertipTouchColliderOverlapBegins); + Owner->RightIndexFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightIndexFingertipTouchColliderOverlapEnds); + + Owner->RightMiddleFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipTouchColliderOverlapBegins); + Owner->RightMiddleFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipTouchColliderOverlapEnds); + + Owner->RightRingFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightRingFingertipTouchColliderOverlapBegins); + Owner->RightRingFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightRingFingertipTouchColliderOverlapEnds); + + Owner->RightPinkyFingertipTouchCollider->OnComponentBeginOverlap.AddDynamic( + Owner, &ASGPawn::OnRightPinkyFingertipTouchColliderOverlapBegins); + Owner->RightPinkyFingertipTouchCollider->OnComponentEndOverlap.AddDynamic( + Owner, &ASGPawn::OnRightPinkyFingertipTouchColliderOverlapEnds); +} + +void ASGPawn::FImpl::UnbindFingerTouchOverlapEvents() +{ + Owner->LeftThumbFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipTouchColliderOverlapBegins); + Owner->LeftThumbFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftThumbFingertipTouchColliderOverlapEnds); + + Owner->LeftIndexFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipTouchColliderOverlapBegins); + Owner->LeftIndexFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftIndexFingertipTouchColliderOverlapEnds); + + Owner->LeftMiddleFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapBegins); + Owner->LeftMiddleFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftMiddleFingertipTouchColliderOverlapEnds); + + Owner->LeftRingFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftRingFingertipTouchColliderOverlapBegins); + Owner->LeftRingFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftRingFingertipTouchColliderOverlapEnds); + + Owner->LeftPinkyFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapBegins); + Owner->LeftPinkyFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnLeftPinkyFingertipTouchColliderOverlapEnds); + + Owner->RightThumbFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapBegins); + Owner->RightThumbFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipGrabColliderOverlapEnds); + + Owner->RightIndexFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapBegins); + Owner->RightIndexFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipGrabColliderOverlapEnds); + + Owner->RightMiddleFingertipGrabCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapBegins); + Owner->RightMiddleFingertipGrabCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipGrabColliderOverlapEnds); + + Owner->RightThumbFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipTouchColliderOverlapBegins); + Owner->RightThumbFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightThumbFingertipTouchColliderOverlapEnds); + + Owner->RightIndexFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipTouchColliderOverlapBegins); + Owner->RightIndexFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightIndexFingertipTouchColliderOverlapEnds); + + Owner->RightMiddleFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipTouchColliderOverlapBegins); + Owner->RightMiddleFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightMiddleFingertipTouchColliderOverlapEnds); + + Owner->RightRingFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightRingFingertipTouchColliderOverlapBegins); + Owner->RightRingFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightRingFingertipTouchColliderOverlapEnds); + + Owner->RightPinkyFingertipTouchCollider->OnComponentBeginOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightPinkyFingertipTouchColliderOverlapBegins); + Owner->RightPinkyFingertipTouchCollider->OnComponentEndOverlap.RemoveDynamic( + Owner, &ASGPawn::OnRightPinkyFingertipTouchColliderOverlapEnds); +} + +void ASGPawn::FImpl::SetVisibility(USceneComponent* SceneComponent, const bool bVisibility) const +{ + if (!ensureAlwaysMsgf(IsValid(SceneComponent), TEXT("Invalid SceneComponent!"))) + { + return; + } + + SceneComponent->SetHiddenInGame(!bVisibility); +} + +void ASGPawn::FImpl::UpdateHandLocation(const bool bRight, const FVector& Location, const bool bUpdateVirtualHand) const +{ + if (bRight) + { + UpdateRightHandLocation(Location, bUpdateVirtualHand); + } + else + { + UpdateLeftHandLocation(Location, bUpdateVirtualHand); + } +} + +void ASGPawn::FImpl::UpdateLeftHandLocation(const FVector& Location, const bool bUpdateVirtualHand) const +{ + if (bUpdateVirtualHand) + { + Owner->HandLeft->SetWorldLocation(Location); + } + Owner->RealHandLeft->SetWorldLocation(Location); +} + +void ASGPawn::FImpl::UpdateRightHandLocation(const FVector& Location, const bool bUpdateVirtualHand) const +{ + if (bUpdateVirtualHand) + { + Owner->HandRight->SetWorldLocation(Location); + } + Owner->RealHandRight->SetWorldLocation(Location); +} + +void ASGPawn::FImpl::UpdateHandRotation(const bool bRight, const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + if (bRight) + { + UpdateRightHandRotation(Rotation, bUpdateVirtualHand); + } + else + { + UpdateLeftHandRotation(Rotation, bUpdateVirtualHand); + } +} + +void ASGPawn::FImpl::UpdateLeftHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + const FSGVirtualHandMeshSettings& MeshSettings{Owner->HandLeft->GetVirtualHandSettings().MeshSettings}; + const FQuat NewRotation{ + Rotation.Quaternion() * MeshSettings.RootBoneRotationCorrection.Quaternion() + }; + if (bUpdateVirtualHand) + { + Owner->HandLeft->SetWorldRotation(NewRotation); + } + Owner->RealHandLeft->SetWorldRotation(NewRotation); +} + +void ASGPawn::FImpl::UpdateRightHandRotation(const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + const FSGVirtualHandMeshSettings& MeshSettings{Owner->HandLeft->GetVirtualHandSettings().MeshSettings}; + const FQuat NewRotation{ + Rotation.Quaternion() * MeshSettings.RootBoneRotationCorrection.Quaternion() + }; + if (bUpdateVirtualHand) + { + Owner->HandRight->SetWorldRotation(NewRotation); + } + Owner->RealHandRight->SetWorldRotation(NewRotation); +} + +void ASGPawn::FImpl::UpdateHandLocationAndRotation( + const bool bRight, const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + if (bRight) + { + UpdateRightHandLocationAndRotation(Location, Rotation, bUpdateVirtualHand); + } + else + { + UpdateLeftHandLocationAndRotation(Location, Rotation, bUpdateVirtualHand); + } +} + +void ASGPawn::FImpl::UpdateLeftHandLocationAndRotation( + const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + UpdateLeftHandLocation(Location, bUpdateVirtualHand); + UpdateLeftHandRotation(Rotation, bUpdateVirtualHand); +} + +void ASGPawn::FImpl::UpdateRightHandLocationAndRotation( + const FVector& Location, const FRotator& Rotation, const bool bUpdateVirtualHand) +{ + UpdateRightHandLocation(Location, bUpdateVirtualHand); + UpdateRightHandRotation(Rotation, bUpdateVirtualHand); +} + +void ASGPawn::FImpl::SetFingerColliderCollisionEnabled(USphereComponent* Collider, const bool bEnabled) const +{ + if (!ensureAlwaysMsgf(IsValid(Collider), TEXT("Invalid collider object!"))) + { + return; + } + + if (bEnabled) + { + Collider->SetGenerateOverlapEvents(true); + Collider->SetCollisionEnabled(ECollisionEnabled::QueryOnly); + Collider->SetCollisionResponseToAllChannels(ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_WorldStatic, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_WorldDynamic, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_Pawn, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_Visibility, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_PhysicsBody, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_Vehicle, ECR_Overlap); + Collider->SetCollisionResponseToChannel(ECC_Destructible, ECR_Overlap); + } + else + { + Collider->SetGenerateOverlapEvents(false); + Collider->SetCollisionEnabled(ECollisionEnabled::NoCollision); + Collider->SetCollisionResponseToAllChannels(ECR_Ignore); + } +} + +void ASGPawn::FImpl::SetAllFingersColliderCollisionEnabled(const bool bRight, const bool bEnabled) const +{ + if (bRight) + { + SetFingerColliderCollisionEnabled(Owner->RightThumbFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightThumbFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightIndexFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightIndexFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightMiddleFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightMiddleFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightRingFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->RightPinkyFingertipTouchCollider, bEnabled); + } + else + { + SetFingerColliderCollisionEnabled(Owner->LeftThumbFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftThumbFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftIndexFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftIndexFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftMiddleFingertipGrabCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftMiddleFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftRingFingertipTouchCollider, bEnabled); + SetFingerColliderCollisionEnabled(Owner->LeftPinkyFingertipTouchCollider, bEnabled); + } +} + +void ASGPawn::FImpl::ApplyHandVelocityToGrabbedActor(const FSGGrabState& GrabState) const +{ + if (!IsValid(GrabState.Hand)) + { + return; + } + + if (!IsValid(GrabState.GrabbedActor)) + { + return; + } + + UPrimitiveComponent* ActorRootComponent{Cast(GrabState.GrabbedActor->GetRootComponent())}; + if (!ensureAlwaysMsgf(IsValid(ActorRootComponent), TEXT("RootComponent is not a valid UPrimativeComponent!"))) + { + return; + } + + FVector HandVelocity{UKismetMathLibrary::GetVectorArrayAverage(GrabState.HandVelocityHistory)}; + + ActorRootComponent->SetPhysicsLinearVelocity(HandVelocity); + ActorRootComponent->AddImpulse(MoveTemp(HandVelocity), NAME_None, true); +} + +void ASGPawn::FImpl::SetGrabbedActor(FSGGrabState& GrabState, AActor* Actor) const +{ + GrabState.GrabbedActor = Actor; +} + +void ASGPawn::FImpl::SetLeftHandGrabbedActor(AActor* Actor) const +{ + SetGrabbedActor(Owner->LeftHandGrabState, Actor); +} + +void ASGPawn::FImpl::SetRightHandGrabbedActor(AActor* Actor) const +{ + SetGrabbedActor(Owner->RightHandGrabState, Actor); +} + +void ASGPawn::FImpl::RecordHandVelocity(FSGGrabState& GrabState, const float DeltaSeconds) const +{ + if (!IsValid(GrabState.Hand)) + { + return; + } + + FVector HandVelocity{ + (GrabState.Hand->GetComponentLocation() - GrabState.PreviousHandLocation) / DeltaSeconds + }; + + if (GrabState.HandVelocityHistory.Num() >= Owner->MaxNumberOfHandVelocitySamples) + { + if (GrabState.HandVelocityHistory.IsValidIndex(0)) + { + GrabState.HandVelocityHistory.RemoveAt(0, 1, false); + GrabState.HandVelocityHistory.Emplace(MoveTemp(HandVelocity)); + } + } + else + { + GrabState.HandVelocityHistory.Emplace(MoveTemp(HandVelocity)); + } + + GrabState.PreviousHandLocation = GrabState.Hand->GetComponentLocation(); +} + +void ASGPawn::FImpl::Release(FSGGrabState& GrabState) const +{ + if (!IsValid(GrabState.GrabbedActor)) + { + return; + } + + const USGGrabComponent* GrabComponent{USGGrabComponent::GetGrabComponent(GrabState.GrabbedActor)}; + if (!IsValid(GrabComponent)) + { + return; + } + + GrabState.GrabbedActor->DetachFromActor( + FDetachmentTransformRules(GrabComponent->GetDetachmentLocationRule(), + GrabComponent->GetDetachmentRotationRule(), + GrabComponent->GetDetachmentScaleRule(), + GrabComponent->GetDetachmentInCallModify()) + ); + + if (GrabComponent->GetAffectPhysicsState()) + { + GrabComponent->SimulatePhysics(true); + } + + ApplyHandVelocityToGrabbedActor(GrabState); + + TriggerActorReleasedEvent(GrabState.Hand, GrabState.GrabbedActor); + + SetGrabbedActor(GrabState, nullptr); +} + +void ASGPawn::FImpl::TriggerGrabStateUpdatedEvent(const FSGGrabState& GrabState) const +{ + Owner->GrabStateUpdatedEvent.Broadcast(GrabState); + Owner->OnGrabStateUpdated(GrabState); +} + +void ASGPawn::FImpl::TriggerTouchStateUpdatedEvent(const FSGTouchState& TouchState) const +{ + Owner->TouchStateUpdatedEvent.Broadcast(TouchState); + Owner->OnTouchStateUpdated(TouchState); +} + +void ASGPawn::FImpl::TriggerActorGrabbedEvent(const USGVirtualHandComponent* Hand, const AActor* Actor) const +{ + Owner->ActorGrabbedEvent.Broadcast(Hand, Actor); + Owner->OnActorGrabbed(Hand, Actor); +} + +void ASGPawn::FImpl::TriggerActorReleasedEvent(const USGVirtualHandComponent* Hand, const AActor* Actor) const +{ + Owner->ActorReleasedEvent.Broadcast(Hand, Actor); + Owner->OnActorReleased(Hand, Actor); +} + +void ASGPawn::FImpl::TriggerBeginTouch(const USGVirtualHandComponent* Hand, const AActor* Actor) const +{ + Owner->ActorBeginTouchEvent.Broadcast(Hand, Actor); + Owner->OnActorBeginTouch(Hand, Actor); +} + +void ASGPawn::FImpl::TriggerEndTouch(const USGVirtualHandComponent* Hand, const AActor* Actor) const +{ + Owner->ActorEndTouchEvent.Broadcast(Hand, Actor); + Owner->OnActorEndTouch(Hand, Actor); +} + +void ASGPawn::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp new file mode 100644 index 0000000..23ee9d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/GameFramework/SGPlayerController.cpp @@ -0,0 +1,405 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/GameFramework/SGPlayerController.h" + +#include "Runtime/Launch/Resources/Version.h" +#include "Engine/TimerHandle.h" +#include "TimerManager.h" + +#include "SenseGlove/Components/SGTouchComponent.h" +#include "SenseGlove/Components/SGVirtualHandComponent.h" +#include "SenseGlove/GameFramework/SGPawn.h" +#include "SenseGlove/Haptics/SGGrabState.h" +#include "SenseGlove/Haptics/SGTouchState.h" +#include "SGBuildHacks/SGPlatform.h" +#include "SGCore/SGHapticGlove.h" + +struct ASGPlayerController::FImpl +{ + /************************ + * Static methods + ************************/ + + static float GetForceFeedbackLevel(const AActor* Actor); + + static float GetVibrotactileDuration(const AActor* ActorThumbTouching, const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching); + static float GetVibrotactileLevel(const AActor* Actor); + + static TArray GetForceFeedbackLevels( + const AActor* ActorThumbTouching, + const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, + const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching); + + static TArray GetVibrotactileLevels( + const AActor* ActorThumbTouching, + const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, + const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching); + + /************************ + * Member variables + ************************/ + + FTimerHandle TouchVibrotactileStopTimer; + + /************************ + * Owner object + ************************/ + + ASGPlayerController* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(ASGPlayerController* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + void UpdateHapticsFeedback(const FSGTouchState& TouchState); +}; + +float ASGPlayerController::FImpl::GetForceFeedbackLevel(const AActor* Actor) +{ + if (IsValid(Actor)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(Actor); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetForceFeedbackLevel(); + } + } + + return 0.0f; +} + +float ASGPlayerController::FImpl::GetVibrotactileDuration(const AActor* ActorThumbTouching, + const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, + const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching) +{ + if (IsValid(ActorThumbTouching)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(ActorThumbTouching); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileDuration(); + } + } + + if (IsValid(ActorIndexTouching)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(ActorIndexTouching); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileDuration(); + } + } + + if (IsValid(ActorMiddleTouching)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(ActorMiddleTouching); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileDuration(); + } + } + + if (IsValid(ActorRingTouching)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(ActorRingTouching); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileDuration(); + } + } + + if (IsValid(ActorPinkyTouching)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(ActorPinkyTouching); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileDuration(); + } + } + + return 0.0f; +} + +float ASGPlayerController::FImpl::GetVibrotactileLevel(const AActor* Actor) +{ + if (IsValid(Actor)) + { + const USGTouchComponent* TouchComponent = USGTouchComponent::GetTouchComponent(Actor); + if (IsValid(TouchComponent)) + { + return TouchComponent->GetVibrotactileLevel(); + } + } + + return 0.0f; +} + +TArray ASGPlayerController::FImpl::GetForceFeedbackLevels( + const AActor* ActorThumbTouching, + const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, + const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching) +{ + const float ThumbForceFeedbackLevel = GetForceFeedbackLevel(ActorThumbTouching); + const float IndexForceFeedbackLevel = GetForceFeedbackLevel(ActorIndexTouching); + const float MiddleForceFeedbackLevel = GetForceFeedbackLevel(ActorMiddleTouching); + const float RingForceFeedbackLevel = GetForceFeedbackLevel(ActorRingTouching); + const float PinkyForceFeedbackLevel = GetForceFeedbackLevel(ActorPinkyTouching); + + const TArray ForceFeedbackLevels{ + ThumbForceFeedbackLevel, + IndexForceFeedbackLevel, + MiddleForceFeedbackLevel, + RingForceFeedbackLevel, + PinkyForceFeedbackLevel, + }; + + return ForceFeedbackLevels; +} + +TArray ASGPlayerController::FImpl::GetVibrotactileLevels( + const AActor* ActorThumbTouching, + const AActor* ActorIndexTouching, + const AActor* ActorMiddleTouching, + const AActor* ActorRingTouching, + const AActor* ActorPinkyTouching) +{ + const float ThumbVibrotactileLevel = GetVibrotactileLevel(ActorThumbTouching); + const float IndexVibrotactileLevel = GetVibrotactileLevel(ActorIndexTouching); + const float MiddleVibrotactileLevel = GetVibrotactileLevel(ActorMiddleTouching); + const float RingVibrotactileLevel = GetVibrotactileLevel(ActorRingTouching); + const float PinkyVibrotactileLevel = GetVibrotactileLevel(ActorPinkyTouching); + + const TArray ForceFeedbackLevels{ + ThumbVibrotactileLevel, + IndexVibrotactileLevel, + MiddleVibrotactileLevel, + RingVibrotactileLevel, + PinkyVibrotactileLevel, + }; + + return ForceFeedbackLevels; +} + +ASGPlayerController::ASGPlayerController(const FObjectInitializer& ObjectInitializer) + : Super(ObjectInitializer), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +void ASGPlayerController::BeginPlay() +{ + Super::BeginPlay(); + + ASGPawn* SGPawn = Cast(GetPawn()); + if (!ensureAlwaysMsgf(IsValid(SGPawn), TEXT("%s"), TEXT("ERROR: invalid SenseGlove pawn!"))) + { + return; + } + + SGPawn->OnGrabStateUpdated().AddWeakLambda( + this, [= SG_CAPTURE_THIS](const FSGGrabState& GrabState) -> void + { + if (!IsValid(SGPawn)) + { + return; + } + + if (!IsValid(GrabState.Hand)) + { + return; + } + + const bool bHandVisible = GrabState.Hand->IsVisible(); + if (!bHandVisible) + { + if (SGPawn->IsGrabbing(GrabState.Hand)) + { + SGPawn->Release(GrabState.Hand); + } + return; + } + + if (SGPawn->IsGrabbing(GrabState.Hand)) + { + if (!IsValid(GrabState.ActorThumbCanGrab) || + (GrabState.ActorIndexCanGrab != GrabState.ActorThumbCanGrab + && GrabState.ActorMiddleCanGrab != GrabState.ActorThumbCanGrab)) + { + SGPawn->Release(GrabState.Hand); + } + } + else + { + if (SGPawn->CanGrab(GrabState.Hand, GrabState.ActorThumbCanGrab)) + { + SGPawn->Grab(GrabState.Hand, GrabState.ActorThumbCanGrab); + } + } + }); + + SGPawn->OnTouchStateUpdated().AddWeakLambda( + this, [= SG_CAPTURE_THIS](const FSGTouchState& TouchState) -> void + { + if (!IsValid(SGPawn)) + { + return; + } + + if (!IsValid(TouchState.Hand)) + { + return; + } + + const bool bHandVisible = TouchState.Hand->IsVisible(); + if (!bHandVisible) + { + return; + } + + const bool bGloveConnected = TouchState.Hand->IsGloveConnected(); + if (!bGloveConnected) + { + return; + } + + Pimpl->UpdateHapticsFeedback(TouchState); + }); +} + +ASGPlayerController::FImpl::FImpl(ASGPlayerController* InOwner) + : Owner(InOwner) +{ +} + +ASGPlayerController::FImpl::~FImpl() = default; + +void ASGPlayerController::FImpl::UpdateHapticsFeedback(const FSGTouchState& TouchState) +{ + static const TArray VibrotactileOffCommand{0.0f, 0.0f, 0.0, 0.0, 0.0f}; + + if (!IsValid(TouchState.Hand)) + { + return; + } + + USGHapticGlove* Glove = TouchState.Hand->GetConnectedGlove(); + if (!IsValid(Glove)) + { + return; + } + + const bool bGloveConnected = Glove->IsConnected(); + if (!bGloveConnected) + { + return; + } + + // Queue the Force-Feedback command... + TArray ForceFeedbackLevels{ + GetForceFeedbackLevels( + TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, + TouchState.ActorRingTouching, TouchState.ActorPinkyTouching) + }; + Glove->QueueForceFeedbackLevels(MoveTemp(ForceFeedbackLevels)); + + // Queue the Vibrotactile command... + TArray VibrotactileLevels{ + GetVibrotactileLevels( + TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, + TouchState.ActorRingTouching, TouchState.ActorPinkyTouching) + }; + Glove->QueueVibroLevels(MoveTemp(VibrotactileLevels)); + + // Send the haptics commands! + Glove->SendHaptics(); + + // Stop the Vibrotactile command after the timeout if any haptic feedback is ongoing. + const float VibrotactileDuration = FImpl::GetVibrotactileDuration( + TouchState.ActorThumbTouching, TouchState.ActorIndexTouching, TouchState.ActorMiddleTouching, + TouchState.ActorRingTouching, TouchState.ActorPinkyTouching); + + Owner->GetWorldTimerManager().ClearTimer(TouchVibrotactileStopTimer); + + FTimerDelegate TouchVibrotactileStopHandler; + TouchVibrotactileStopHandler.BindLambda([= SG_CAPTURE_THIS]()-> void + { + if (!IsValid(Glove)) + { + return; + } + + const bool bGloveConnected = Glove->IsConnected(); + if (!bGloveConnected) + { + return; + } + + Glove->QueueVibroLevels(VibrotactileOffCommand); + Glove->SendHaptics(); + }); + + Owner->GetWorldTimerManager().SetTimer( + TouchVibrotactileStopTimer, TouchVibrotactileStopHandler, VibrotactileDuration, false, -1.0f); +} + +void ASGPlayerController::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGGrabState.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGGrabState.cpp new file mode 100644 index 0000000..3827bc6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGGrabState.cpp @@ -0,0 +1,68 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Haptics/SGGrabState.h" + +#include "GameFramework/Actor.h" + +#include "SenseGlove/Components/SGVirtualHandComponent.h" + +FSGGrabState::FSGGrabState() + : Hand(nullptr), + PreviousHandLocation(FVector::Zero()), + HandVelocityHistory{}, + ActorThumbCanGrab(nullptr), + ActorIndexCanGrab(nullptr), + ActorMiddleCanGrab(nullptr), + GrabbedActor(nullptr) +{ +} + +FSGGrabState::FSGGrabState(USGVirtualHandComponent* InHand, + const FVector& InPreviousHandLocation, + const TArray& InHandVelocityHistory, + AActor* InActorThumbCanGrab, + AActor* InActorIndexCanGrab, + AActor* InActorMiddleCanGrab, + AActor* InGrabbedActor) + : Hand(InHand), + PreviousHandLocation(InPreviousHandLocation), + HandVelocityHistory(InHandVelocityHistory), + ActorThumbCanGrab(InActorThumbCanGrab), + ActorIndexCanGrab(InActorIndexCanGrab), + ActorMiddleCanGrab(InActorMiddleCanGrab), + GrabbedActor(InGrabbedActor) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGTouchState.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGTouchState.cpp new file mode 100644 index 0000000..01d2e26 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGlove/Haptics/SGTouchState.cpp @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGlove/Haptics/SGTouchState.h" + +#include "GameFramework/Actor.h" + +#include "SenseGlove/Components/SGVirtualHandComponent.h" + +FSGTouchState::FSGTouchState() + : Hand(nullptr), + ActorThumbTouching(nullptr), + ActorIndexTouching(nullptr), + ActorMiddleTouching(nullptr), + ActorRingTouching(nullptr), + ActorPinkyTouching(nullptr) +{ +} + +FSGTouchState::FSGTouchState(USGVirtualHandComponent* InHand, + AActor* InActorThumbTouching, + AActor* InActorIndexTouching, + AActor* InActorMiddleTouching, + AActor* InActorRingTouching, + AActor* InActorPinkyTouching) + : Hand(InHand), + ActorThumbTouching(InActorThumbTouching), + ActorIndexTouching(InActorIndexTouching), + ActorMiddleTouching(InActorMiddleTouching), + ActorRingTouching(InActorRingTouching), + ActorPinkyTouching(InActorPinkyTouching) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.cpp b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.cpp new file mode 100644 index 0000000..d4de966 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.cpp @@ -0,0 +1,221 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveModule.h" + +#include "Engine/Engine.h" +#include "GameMapsSettings.h" +#include "Misc/CoreDelegates.h" + +#include "SGLog/SGLog.h" +#include "SenseGlove/Engine/SGGameInstance.h" +#include "SenseGlove/GameFramework/SGGameModeBase.h" +#include "SenseGlove/GameFramework/SGGameUserSettings.h" +#include "SGSettings/SGSettings.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveModule" + +void FSenseGloveModule::StartupModule() +{ + SGLOG("Starting up the SenseGlove module..."); + + OnPostEngineInitHandle = FCoreDelegates::OnPostEngineInit.AddRaw( + this, &FSenseGloveModule::OnPostEngineInit); +} + +void FSenseGloveModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGlove module..."); +} + +void FSenseGloveModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGlove module has succeeded!"); +} + +void FSenseGloveModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGlove module..."); + + FCoreDelegates::OnPostEngineInit.Remove(OnPostEngineInitHandle); +} + +void FSenseGloveModule::OnPostEngineInit() const +{ + const FSGInitializationSettings& Settings{ + USGSettings::GetInstance()->GetInitializationSettings() + }; + if (!Settings.bValidateIfDefaultClassesAreSGCompliant) + { + SGLOG("Will not be checking whether the default classes are SenseGlove-compliant, or not since it's disabled!"); + return; + } + + SGLOG("Checking whether the default classes are SenseGlove-compliant, or not..."); + + SGLOG("Checking whether the GameMapsSettings is compliant with SenseGlove, or not..."); + + UGameMapsSettings* GameMapsSettings{UGameMapsSettings::GetGameMapsSettings()}; + if (ensureAlwaysMsgf(GameMapsSettings, TEXT("Invalid GameMapsSettings!"))) + { + /************************************************************************************************************* + * GameInstanceClass + *************************************************************************************************************/ + + { + SGLOG("Validating if the GameInstanceClass is a SenseGlove GameInstance..."); + + bool bValidGameInstance = false; + const UClass* CurrentGameInstanceClass{GameMapsSettings->GameInstanceClass.TryLoadClass()}; + if (CurrentGameInstanceClass) + { + if (CurrentGameInstanceClass->IsChildOf(USGGameInstance::StaticClass())) + { + bValidGameInstance = true; + SGLOG("The GameInstanceClass is a SenseGlove GameInstance, or a subclass."); + } + else + { + SGLOG("The GameInstanceClass is not a SenseGlove GameInstance, or a subclass."); + } + } + else + { + SGLOG_ERROR("Failed to construct a valid GameInstance from the current settings!"); + } + + if (!bValidGameInstance) + { + SGLOG("Setting the SenseGlove GameInstance as the GameInstanceClass..."); + + static const FSoftClassPath GameInstanceClassPath{TEXT("/Script/SenseGlove.SGGameInstance")}; + GameMapsSettings->GameInstanceClass = GameInstanceClassPath; + + SGLOG("Successfully set the SenseGlove GameInstance as the GameInstanceClass!"); + } + } + + /************************************************************************************************************* + * DefaultGameMode + *************************************************************************************************************/ + + { + SGLOG("Validating if the DefaultGameMode is a SenseGlove GameMode..."); + + bool bValidDefaultGameMode = false; + const FSoftClassPath CurrentDefaultGameModeClassPath{GameMapsSettings->GetGlobalDefaultGameMode()}; + const UClass* CurrentDefaultGameMode{CurrentDefaultGameModeClassPath.TryLoadClass()}; + if (CurrentDefaultGameMode) + { + if (CurrentDefaultGameMode->IsChildOf(ASGGameModeBase::StaticClass())) + { + bValidDefaultGameMode = true; + SGLOG("The DefaultGameMode is a SenseGlove GameMode, or a subclass."); + } + else + { + SGLOG("The DefaultGameMode is not a SenseGlove GameMode, or a subclass."); + } + } + else + { + SGLOG_ERROR("Failed to construct a valid GameMode from the current settings!"); + } + + if (!bValidDefaultGameMode) + { + SGLOG("Setting the SenseGlove GameMode as the DefaultGameMode..."); + + static const FString DefaultGameMode{TEXT("/Script/SenseGlove.SGGameModeBase")}; + GameMapsSettings->SetGlobalDefaultGameMode(DefaultGameMode); + + SGLOG("Successfully set the SenseGlove GameMode as the DefaultGameMode!"); + } + } + + /************************************************************************************************************* + * + *************************************************************************************************************/ + } + else + { + SGLOG_ERROR("Failed to check whether the GameMapsSettings is compliant with SenseGlove, or not!"); + } + + SGLOG("Checking whether the GameUserSettingsClass is compliant with SenseGlove, or not..."); + + if (ensureAlwaysMsgf(GEngine, TEXT("Invalid GEngine!"))) + { + SGLOG("Validating if the GameUserSettingsClass is a SenseGlove GameUserSettings..."); + + bool bValidGameUserSettings = false; + const UClass* CurrentGameUserSettingsClass{GEngine->GameUserSettingsClassName.TryLoadClass()}; + if (CurrentGameUserSettingsClass) + { + if (CurrentGameUserSettingsClass->IsChildOf(USGGameUserSettings::StaticClass())) + { + bValidGameUserSettings = true; + SGLOG("The GameUserSettingsClass is a SenseGlove GameUserSettings, or a subclass."); + } + else + { + SGLOG("The GameUserSettingsClass is not a SenseGlove GameUserSettings, or a subclass."); + } + } + else + { + SGLOG_ERROR("Failed to construct a valid GameUserSettings from the current settings!"); + } + + if (!bValidGameUserSettings) + { + SGLOG("Setting the SenseGlove GameUserSettings as the GameUserSettingsClass..."); + + static const FSoftClassPath GameUserSettingsClassPath{TEXT("/Script/SenseGlove.SGGameUserSettings")}; + GEngine->GameUserSettingsClassName = GameUserSettingsClassPath; + GEngine->GameUserSettingsClass = USGGameUserSettings::StaticClass(); + GEngine->GameUserSettings = NewObject(); + GEngine->GetGameUserSettings()->LoadSettings(true); + + SGLOG("Successfully set the SenseGlove GameInstance as the GameInstanceClass!"); + } + } + else + { + SGLOG_ERROR("Failed to check whether the GameUserSettings is compliant with SenseGlove, or not!"); + } +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.h b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.h new file mode 100644 index 0000000..186b0a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Private/SenseGloveModule.h @@ -0,0 +1,56 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +// Copyright Epic Games, Inc. All Rights Reserved. + +#pragma once + +#include "Delegates/IDelegateInstance.h" +#include "Modules/ModuleInterface.h" + +class FSenseGloveModule : public IModuleInterface +{ +private: + FDelegateHandle OnPostEngineInitHandle; + +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; + +private: + void OnPostEngineInit() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstance.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstance.h new file mode 100644 index 0000000..daed8e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstance.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Animation/AnimInstance.h" + +#include "SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h" + +#include "SGVirtualHandAnimInstance.generated.h" + +UCLASS(Transient, Blueprintable, BlueprintType, meta=(BlueprintThreadSafe), Within=SkeletalMeshComponent) +class SENSEGLOVE_API USGVirtualHandAnimInstance : public UAnimInstance +{ + GENERATED_UCLASS_BODY() + +protected: + virtual FSGVirtualHandAnimInstanceProxy* CreateAnimInstanceProxy() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h new file mode 100644 index 0000000..2dd9760 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Animation/SGVirtualHandAnimInstanceProxy.h @@ -0,0 +1,132 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Animation/AnimInstanceProxy.h" +#include "Containers/Array.h" +#include "HeadMountedDisplayTypes.h" +#include "Math/Quat.h" +#include "Math/Transform.h" +#include "Templates/UniquePtr.h" +#include "UObject/NameTypes.h" + +#include "SGVirtualHandAnimInstanceProxy.generated.h" + +class USkeletalMesh; +class USkeleton; +class USGVirtualHandComponent; + +USTRUCT() +struct SENSEGLOVE_API FSGVirtualHandAnimInstanceProxy : public FAnimInstanceProxy +{ + GENERATED_USTRUCT_BODY() + +private: + UPROPERTY(Transient) + USGVirtualHandComponent* VirtualHand; + + UPROPERTY(Transient) + USkeletalMesh* HandMeshAsset; + + UPROPERTY(Transient) + USkeleton* HandSkeleton; + + bool bVirtualHandVisible; + bool bMarkRenderStateDirty; + + FXRMotionControllerData MotionControllerData; + TMap::SizeType, FName> BoneNamesMap; + + FTransform AnimationBoneCorrectionOffsetTransform; + bool bShouldAnimationApplyBoneLocation; + +public: + FSGVirtualHandAnimInstanceProxy(); + FSGVirtualHandAnimInstanceProxy(UAnimInstance* Instance); + +protected: + FORCEINLINE bool IsVirtualHandVisible() const + { + return bVirtualHandVisible; + } + + FORCEINLINE USGVirtualHandComponent* GetVirtualHand() const + { + return VirtualHand; + } + + FORCEINLINE USkeletalMesh* GetHandMeshAsset() const + { + return HandMeshAsset; + } + + FORCEINLINE USkeleton* GetHandSkeleton() const + { + return HandSkeleton; + } + + FORCEINLINE bool IsRenderStateDirty() const + { + return bMarkRenderStateDirty; + } + + FORCEINLINE const FXRMotionControllerData& GetMotionControllerData() const + { + return MotionControllerData; + } + + FORCEINLINE const TMap::SizeType, FName>& GetBoneNamesMap() const + { + return BoneNamesMap; + } + + FORCEINLINE const FTransform& GetAnimationBoneCorrectionOffsetTransform() const + { + return AnimationBoneCorrectionOffsetTransform; + } + + FORCEINLINE bool ShouldAnimationApplyBoneLocation() const + { + return bShouldAnimationApplyBoneLocation; + } + +protected: + virtual void PreEvaluateAnimation(UAnimInstance* InAnimInstance) override; + + virtual bool Evaluate(FPoseContext& Output) override; + + virtual void PostEvaluate(UAnimInstance* InAnimInstance) override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h new file mode 100644 index 0000000..e9bb06f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGGrabComponent.h @@ -0,0 +1,205 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Components/SceneComponent.h" +#include "Engine/EngineTypes.h" +#include "Templates/UniquePtr.h" +#include "UObject/NameTypes.h" + +#include "SGGrabComponent.generated.h" + +class AActor; + +UCLASS(Blueprintable, BlueprintType, meta=(BlueprintSpawnableComponent)) +class SENSEGLOVE_API USGGrabComponent : public USceneComponent +{ + GENERATED_UCLASS_BODY() + +public: + static USGGrabComponent* GetGrabComponent(const AActor* Actor); + + static bool IsGrabbable(const AActor* Actor); + +private: + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EAttachmentRule AttachmentLocationRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EAttachmentRule AttachmentRotationRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EAttachmentRule AttachmentScaleRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + bool bAttachmentWeldSimulatedBodies; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + FName AttachmentSocketName; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EDetachmentRule DetachmentLocationRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EDetachmentRule DetachmentRotationRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + EDetachmentRule DetachmentScaleRule; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + bool bDetachmentCallModify; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + bool bAffectPhysicsState; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FORCEINLINE EAttachmentRule GetAttachmentLocationRule() const + { + return AttachmentLocationRule; + } + + FORCEINLINE void SetAttachmentLocationRule(const EAttachmentRule InAttachmentLocationRule) + { + AttachmentLocationRule = InAttachmentLocationRule; + } + + FORCEINLINE EAttachmentRule GetAttachmentRotationRule() const + { + return AttachmentRotationRule; + } + + FORCEINLINE void SetAttachmentRotationRule(const EAttachmentRule InAttachmentRotationRule) + { + AttachmentRotationRule = InAttachmentRotationRule; + } + + FORCEINLINE EAttachmentRule GetAttachmentScaleRule() const + { + return AttachmentScaleRule; + } + + FORCEINLINE void SetAttachmentScaleRule(const EAttachmentRule InAttachmentScaleRule) + { + AttachmentScaleRule = InAttachmentScaleRule; + } + + FORCEINLINE bool GetAttachmentWeldSimulatedBodies() const + { + return bAttachmentWeldSimulatedBodies; + } + + FORCEINLINE void SetAttachmentWeldSimulatedBodies(const bool bInAttachmentWeldSimulatedBodies) + { + bAttachmentWeldSimulatedBodies = bInAttachmentWeldSimulatedBodies; + } + + FORCEINLINE const FName& GetAttachmentSocketName() const + { + return AttachmentSocketName; + } + + FORCEINLINE void SetAttachmentSocketName(const FName& InAttachmentSocketName) + { + AttachmentSocketName = InAttachmentSocketName; + } + + FORCEINLINE EDetachmentRule GetDetachmentLocationRule() const + { + return DetachmentLocationRule; + } + + FORCEINLINE void SetDetachmentLocationRule(const EDetachmentRule InDetachmentLocationRule) + { + DetachmentLocationRule = InDetachmentLocationRule; + } + + FORCEINLINE EDetachmentRule GetDetachmentRotationRule() const + { + return DetachmentRotationRule; + } + + FORCEINLINE void SetDetachmentRotationRule(const EDetachmentRule InDetachmentRotationRule) + { + DetachmentRotationRule = InDetachmentRotationRule; + } + + FORCEINLINE EDetachmentRule GetDetachmentScaleRule() const + { + return DetachmentScaleRule; + } + + FORCEINLINE void SetDetachmentScaleRule(const EDetachmentRule InDetachmentScaleRule) + { + DetachmentScaleRule = InDetachmentScaleRule; + } + + FORCEINLINE bool GetDetachmentInCallModify() const + { + return bDetachmentCallModify; + } + + FORCEINLINE void SetDetachmentInCallModify(const bool bInDetachmentCallModify) + { + bDetachmentCallModify = bInDetachmentCallModify; + } + + FORCEINLINE bool GetAffectPhysicsState() const + { + return bAffectPhysicsState; + } + + FORCEINLINE void SetAffectPhysicsState(const bool bInAffectPhysicsState) + { + bAffectPhysicsState = bInAffectPhysicsState; + } + +public: + virtual void SimulatePhysics(bool bSimulatePhysics) const; + +public: + virtual void BeginPlay() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h new file mode 100644 index 0000000..cf6d55b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGTouchComponent.h @@ -0,0 +1,107 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Components/SceneComponent.h" +#include "Templates/UniquePtr.h" + +#include "SGTouchComponent.generated.h" + +class AActor; + +UCLASS(Blueprintable, BlueprintType, meta=(BlueprintSpawnableComponent)) +class SENSEGLOVE_API USGTouchComponent : public USceneComponent +{ + GENERATED_UCLASS_BODY() + +public: + static USGTouchComponent* GetTouchComponent(const AActor* Actor); + + static bool IsTouchable(const AActor* Actor); + +private: + UPROPERTY(EditAnywhere, Category="SenseGlove", + meta=(AllowPrivateAccess="false", ClampMin = "0.0", ClampMax = "1.0", UIMin = "0.0", UIMax = "1.0")) + float ForceFeedbackLevel; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false", ClampMin = "0.0", UIMin = "0.0")) + float VibrotactileDuration; + + UPROPERTY(EditAnywhere, Category="SenseGlove", + meta=(AllowPrivateAccess="false", ClampMin = "0.0", ClampMax = "100.0", UIMin = "0.0", UIMax = "100.0")) + float VibrotactileLevel; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FORCEINLINE float GetForceFeedbackLevel() const + { + return ForceFeedbackLevel; + } + + FORCEINLINE void SetForceFeedbackLevel(const float Level) + { + ForceFeedbackLevel = Level; + } + + FORCEINLINE float GetVibrotactileDuration() const + { + return VibrotactileDuration; + } + + FORCEINLINE void SetVibrotactileDuration(const float Duration) + { + VibrotactileDuration = Duration; + } + FORCEINLINE float GetVibrotactileLevel() const + { + return VibrotactileLevel; + } + + FORCEINLINE void SetVibrotactileLevel(const float Level) + { + VibrotactileLevel = Level; + } +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h new file mode 100644 index 0000000..c0819df --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGVirtualHandComponent.h @@ -0,0 +1,191 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Components/SkeletalMeshComponent.h" +#include "Containers/Map.h" +#include "GameFramework/Actor.h" +#include "HeadMountedDisplayTypes.h" +#include "Math/Rotator.h" +#include "Math/Transform.h" +#include "Misc/AssertionMacros.h" +#include "ReferenceSkeleton.h" +#include "Templates/UniquePtr.h" +#include "UObject/NameTypes.h" + +#include "SGSettings/SGVirtualHandSettings.h" +#include "SGSettings/SGVirtualHandSettingsOverrides.h" + +#include "SGVirtualHandComponent.generated.h" + +class USphereComponent; +class USkeletalMesh; + +class USGHapticGlove; +class USGWristTrackerComponent; + +UCLASS(Config=Engine, Blueprintable, ClassGroup=(Rendering, Common), hidecategories=(Object, "Mesh|SkeletalAsset"), + editinlinenew, meta=(BlueprintSpawnableComponent)) +class SENSEGLOVE_API USGVirtualHandComponent : public USkeletalMeshComponent +{ + GENERATED_UCLASS_BODY() + +public: + DECLARE_EVENT_OneParam(USGVirtualHandComponent, FHandVisibilityChangedEvent, bool bNewVisibiliy); + + FHandVisibilityChangedEvent& OnHandVisibilityChanged() + { + return HandVisibilityChangedEvent; + }; + +private: + FHandVisibilityChangedEvent HandVisibilityChangedEvent; + +public: + static const TArray& GetLeftHandBoneNames(); + static const TArray& GetRightHandBoneNames(); + + static const FName& GetLeftHandBoneName(int32 Joint); + static const FName& GetRightHandBoneName(int32 Joint); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + bool bRight; + + /** + * Overrides the plugin's virtual hand settings. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", meta=(AllowPrivateAccess="false")) + FSGVirtualHandSettingsOverrides VirtualHandSettingsOverrides; + +private: + UPROPERTY(Transient) + USGWristTrackerComponent* WristTracker; + +protected: + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Components | Virtual Hand Component") + void OnHandVisibilityChanged(bool bNewVisibility); + +public: + FORCEINLINE bool IsLeft() const + { + return !IsRight(); + } + + FORCEINLINE bool IsRight() const + { + return bRight; + } + + void SetRight(const bool bInRight); + + FORCEINLINE bool OverridesPluginVirtualHandSettings() const + { + return VirtualHandSettingsOverrides.bOverridePluginSettings; + } + + FORCEINLINE const FSGVirtualHandSettingsOverrides& GetVirtualHandSettingsOverrides() const + { + return VirtualHandSettingsOverrides; + } + + void SetVirtualHandSettingsOverrides(const FSGVirtualHandSettingsOverrides& InVirtualHandSettingsOverrides); + + FSGVirtualHandSettings GetVirtualHandSettings() const; + +public: + FORCEINLINE void SetWristTracker(USGWristTrackerComponent* InWristTracker) + { + WristTracker = InWristTracker; + } + +public: + virtual void SetAnimClass(class UClass* NewClass) override; + + virtual void PostInitProperties() override; + +#if WITH_EDITOR + virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; +#endif /* WITH_EDITOR */ + + virtual void InitializeComponent() override; + + virtual void UninitializeComponent() override; + + virtual void BeginPlay() override; + + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + + virtual void TickComponent(float DeltaTime, + enum ELevelTick TickType, + FActorComponentTickFunction* ThisTickFunction) override; + + virtual void SetSkeletalMesh(USkeletalMesh* NewMesh, bool bReinitPose = true) override; + +protected: + virtual void EditorTick(float DeltaTime, + enum ELevelTick TickType, + FActorComponentTickFunction* ThisTickFunction); + +public: + bool IsGloveConnected() const; + USGHapticGlove* GetConnectedGlove() const; + bool GetMotionControllerData(FXRMotionControllerData& OutMotionControllerData); + +public: + const TArray& GetHandBoneNames() const; + const FName& GetHandBoneName(int32 Joint) const; + + const FTransform& GetHandBoneRefTransform(const FName& BoneName) const; + const FTransform& GetHandBoneRefTransform(int32 Joint) const; + + const FTransform& GetHandRootBoneRefTransform() const; + + FRotator GetHandBoneRefRotation(const FName& BoneName) const; + FRotator GetHandBoneRefRotation(int32 Joint) const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGWristTrackerComponent.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGWristTrackerComponent.h new file mode 100644 index 0000000..3ad5ee5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Components/SGWristTrackerComponent.h @@ -0,0 +1,168 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "GameFramework/Actor.h" +#include "HeadMountedDisplayTypes.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" +#include "MotionControllerComponent.h" +#include "Templates/UniquePtr.h" + +#include "SGSettings/SGWristTrackingSettings.h" +#include "SGSettings/SGWristTrackingSettingsOverrides.h" + +#include "SGWristTrackerComponent.generated.h" + +UCLASS(Blueprintable, ClassGroup = MotionController, meta = (BlueprintSpawnableComponent)) +class SENSEGLOVE_API USGWristTrackerComponent : public UMotionControllerComponent +{ + GENERATED_UCLASS_BODY() + +public: + DECLARE_EVENT_OneParam(USGWristTrackerComponent, FWristLocationChangedEvent, const FVector&) + + FWristLocationChangedEvent& OnWristLocationChanged() + { + return WristLocationChangedEvent; + }; + + DECLARE_EVENT_OneParam(USGWristTrackerComponent, FWristRotationChangedEvent, const FRotator&) + + FWristRotationChangedEvent& OnWristRotationChanged() + { + return WristRotationChangedEvent; + }; + + DECLARE_EVENT_TwoParams(USGWristTrackerComponent, FWristLocationAndRotationChangedEvent, + const FVector&, const FRotator&) + + FWristLocationAndRotationChangedEvent& OnWristLocationAndRotationChanged() + { + return WristLocationAndRotationChangedEvent; + }; + +private: + FWristLocationChangedEvent WristLocationChangedEvent; + FWristRotationChangedEvent WristRotationChangedEvent; + FWristLocationAndRotationChangedEvent WristLocationAndRotationChangedEvent; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + bool bRight; + + /** + * Overrides the plugin's wrist tracking settings. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", meta=(AllowPrivateAccess="false")) + FSGWristTrackingSettingsOverrides WristTrackingSettingsOverrides; + +private: + UPROPERTY(Transient) + FVector WristLocation; + + UPROPERTY(Transient) + FRotator WristRotation; + +public: + FORCEINLINE bool IsLeft() const + { + return !IsRight(); + } + + FORCEINLINE bool IsRight() const + { + return bRight; + } + + void SetRight(const bool bInRight); + + FORCEINLINE bool OverridesPluginWristTrackingSettings() const + { + return WristTrackingSettingsOverrides.bOverridePluginSettings; + } + + FORCEINLINE const FSGWristTrackingSettingsOverrides& GetWristTrackingSettingsOverrides() const + { + return WristTrackingSettingsOverrides; + } + + void SetWristTrackingSettingsOverrides(const FSGWristTrackingSettingsOverrides& InWristTrackingSettingsOverrides); + + FSGWristTrackingSettings GetWristTrackingSettings() const; + + FORCEINLINE const FVector& GetWristLocation() const + { + return WristLocation; + } + + FORCEINLINE const FRotator& GetWristRotation() const + { + return WristRotation; + } + +public: +#if WITH_EDITOR + virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) override; +#endif /* WITH_EDITOR */ + + virtual void InitializeComponent() override; + + virtual void BeginPlay() override; + + virtual void TickComponent(float DeltaTime, + enum ELevelTick TickType, + FActorComponentTickFunction* ThisTickFunction) override; + +protected: + virtual void EditorTick(float DeltaTime, + enum ELevelTick TickType, + FActorComponentTickFunction* ThisTickFunction); + +public: + bool GetMotionControllerData(FXRMotionControllerData& OutMotionControllerData); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Engine/SGGameInstance.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Engine/SGGameInstance.h new file mode 100644 index 0000000..045eccc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Engine/SGGameInstance.h @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Engine/GameInstance.h" + +#include "SGTypes/SGTypes.h" + +#include "SGGameInstance.generated.h" + +UCLASS(config=Game, Transient, BlueprintType, Blueprintable) +class SENSEGLOVE_API USGGameInstance : public UGameInstance +{ + GENERATED_UCLASS_BODY() + +public: + UFUNCTION(Exec, Category = "Console Command") + static void SG_GetEngineScalabilitySettings(); + + UFUNCTION(Exec, Category = "Console Command") + static void SG_SetEngineScalabilitySettings(ESGEngineScalabilitySettings Scalability); + +public: + virtual void Init() override; + virtual void Shutdown() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameModeBase.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameModeBase.h new file mode 100644 index 0000000..aa478c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameModeBase.h @@ -0,0 +1,46 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "GameFramework/GameModeBase.h" + +#include "SGGameModeBase.generated.h" + +UCLASS(Config=Game, NotPlaceable, BlueprintType, Blueprintable, Transient) +class SENSEGLOVE_API ASGGameModeBase : public AGameModeBase +{ + GENERATED_UCLASS_BODY() +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameUserSettings.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameUserSettings.h new file mode 100644 index 0000000..ee052f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGGameUserSettings.h @@ -0,0 +1,67 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "GameFramework/GameUserSettings.h" +#include "Templates/UniquePtr.h" + +#include "SGTypes/SGTypes.h" + +#include "SGGameUserSettings.generated.h" + +UCLASS(config=GameUserSettings, configdonotcheckdefaults, BlueprintType, Blueprintable) +class SENSEGLOVE_API USGGameUserSettings : public UGameUserSettings +{ + GENERATED_UCLASS_BODY() + +public: + static USGGameUserSettings* GetInstance(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + ESGEngineScalabilitySettings GetEngineScalabilitySettings() const; + void SetEngineScalabilitySettings(ESGEngineScalabilitySettings Scalability); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h new file mode 100644 index 0000000..e812d41 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPawn.h @@ -0,0 +1,750 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "GameFramework/Pawn.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/UniquePtr.h" + +#include "SenseGlove/Haptics/SGGrabState.h" +#include "SenseGlove/Haptics/SGTouchState.h" + +#include "SGPawn.generated.h" + +class UCameraComponent; +class UPrimitiveComponent; +class USphereComponent; +class UXRDeviceVisualizationComponent; + +class USGVirtualHandComponent; +class USGWristTrackerComponent; + +UCLASS(Config=Game, BlueprintType, Blueprintable) +class SENSEGLOVE_API ASGPawn : public APawn +{ + GENERATED_UCLASS_BODY() + +public: + DECLARE_EVENT_OneParam(ASGPawn, FGrabStateUpdatedEvent, const FSGGrabState& GrabState); + + FGrabStateUpdatedEvent& OnGrabStateUpdated() + { + return GrabStateUpdatedEvent; + }; + + DECLARE_EVENT_OneParam(ASGPawn, FTouchStateUpdatedEvent, const FSGTouchState& TouchState) + + FTouchStateUpdatedEvent& OnTouchStateUpdated() + { + return TouchStateUpdatedEvent; + }; + + DECLARE_EVENT_TwoParams(ASGPawn, FActorGrabbedEvent, const USGVirtualHandComponent* Hand, const AActor* Actor); + + FActorGrabbedEvent& OnGrabbed() + { + return ActorGrabbedEvent; + }; + + DECLARE_EVENT_TwoParams(ASGPawn, FActorReleasedEvent, const USGVirtualHandComponent* Hand, const AActor* Actor); + + FActorReleasedEvent& OnReleased() + { + return ActorReleasedEvent; + }; + + DECLARE_EVENT_TwoParams(ASGPawn, FActorBeginTouchEvent, const USGVirtualHandComponent* Hand, const AActor* Actor); + + FActorBeginTouchEvent& OnActorBeginTouch() + { + return ActorBeginTouchEvent; + }; + + DECLARE_EVENT_TwoParams(ASGPawn, FActorEndTouchEvent, const USGVirtualHandComponent* Hand, const AActor* Actor); + + FActorEndTouchEvent& OnActorEndTouch() + { + return ActorEndTouchEvent; + }; + +private: + FGrabStateUpdatedEvent GrabStateUpdatedEvent; + FTouchStateUpdatedEvent TouchStateUpdatedEvent; + FActorGrabbedEvent ActorGrabbedEvent; + FActorReleasedEvent ActorReleasedEvent; + FActorBeginTouchEvent ActorBeginTouchEvent; + FActorEndTouchEvent ActorEndTouchEvent; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USceneComponent* SceneRoot; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + UCameraComponent* Camera; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGWristTrackerComponent* WristTrackerLeft; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + UXRDeviceVisualizationComponent* ControllerVisualizerLeft; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGVirtualHandComponent* HandLeft; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGVirtualHandComponent* RealHandLeft; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftThumbFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftIndexFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftMiddleFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftThumbFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftIndexFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftMiddleFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftRingFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* LeftPinkyFingertipTouchCollider; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGWristTrackerComponent* WristTrackerRight; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + UXRDeviceVisualizationComponent* ControllerVisualizerRight; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGVirtualHandComponent* HandRight; + + UPROPERTY(VisibleAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USGVirtualHandComponent* RealHandRight; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightThumbFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightIndexFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightMiddleFingertipGrabCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightThumbFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightIndexFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightMiddleFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightRingFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + USphereComponent* RightPinkyFingertipTouchCollider; + + UPROPERTY(EditAnywhere, Category="SenseGlove", meta=(AllowPrivateAccess="false")) + int32 MaxNumberOfHandVelocitySamples; + +private: + UPROPERTY(Transient) + FSGGrabState LeftHandGrabState; + + UPROPERTY(Transient) + FSGTouchState LeftHandTouchState; + + UPROPERTY(Transient) + FSGGrabState RightHandGrabState; + + UPROPERTY(Transient) + FSGTouchState RightHandTouchState; + + UPROPERTY(Transient) + TArray LeftHandOverlappedActors; + + UPROPERTY(Transient) + TArray RightHandOverlappedActors; + +protected: + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnGrabStateUpdated(const FSGGrabState& GrabState); + + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnTouchStateUpdated(const FSGTouchState& TouchState); + + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnActorGrabbed(const USGVirtualHandComponent* Hand, const AActor* Actor); + + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnActorReleased(const USGVirtualHandComponent* Hand, const AActor* Actor); + + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnActorBeginTouch(const USGVirtualHandComponent* Hand, const AActor* Actor); + + UFUNCTION(BlueprintNativeEvent, Category="SenseGlove | Game Framework | Pawn") + void OnActorEndTouch(const USGVirtualHandComponent* Hand, const AActor* Actor); + +public: + FORCEINLINE UCameraComponent* GetCamera() const + { + return Camera; + } + + FORCEINLINE USGWristTrackerComponent* GetWristTrackerLeft() const + { + return WristTrackerLeft; + } + + FORCEINLINE UXRDeviceVisualizationComponent* GetControllerVisualizerLeft() const + { + return ControllerVisualizerLeft; + } + + FORCEINLINE USGVirtualHandComponent* GetHandLeft() const + { + return HandLeft; + } + + FORCEINLINE USGVirtualHandComponent* GetRealHandLeft() const + { + return RealHandLeft; + } + + FORCEINLINE USphereComponent* GetLeftThumbFingertipGrabCollider() const + { + return LeftThumbFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetLeftIndexFingertipGrabCollider() const + { + return LeftIndexFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetLeftMiddleFingertipGrabCollider() const + { + return LeftMiddleFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetLeftThumbFingertipTouchCollider() const + { + return LeftThumbFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftIndexFingertipTouchCollider() const + { + return LeftIndexFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftMiddleFingertipTouchCollider() const + { + return LeftMiddleFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftRingFingertipTouchCollider() const + { + return LeftRingFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetLeftPinkyFingertipTouchCollider() const + { + return LeftPinkyFingertipTouchCollider; + } + + FORCEINLINE USGWristTrackerComponent* GetWristTrackerRight() const + { + return WristTrackerRight; + } + + FORCEINLINE UXRDeviceVisualizationComponent* GetControllerVisualizerRight() const + { + return ControllerVisualizerLeft; + } + + FORCEINLINE USGVirtualHandComponent* GetHandRight() const + { + return HandRight; + } + + FORCEINLINE USGVirtualHandComponent* GetRealHandRight() const + { + return RealHandRight; + } + + FORCEINLINE USphereComponent* GetRightThumbFingertipGrabCollider() const + { + return RightThumbFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetRightIndexFingertipGrabCollider() const + { + return RightIndexFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetRightMiddleFingertipGrabCollider() const + { + return RightMiddleFingertipGrabCollider; + } + + FORCEINLINE USphereComponent* GetRightThumbFingertipTouchCollider() const + { + return RightThumbFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightIndexFingertipTouchCollider() const + { + return RightIndexFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightMiddleFingertipTouchCollider() const + { + return RightMiddleFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightRingFingertipTouchCollider() const + { + return RightRingFingertipTouchCollider; + } + + FORCEINLINE USphereComponent* GetRightPinkyFingertipTouchCollider() const + { + return RightPinkyFingertipTouchCollider; + } + + FORCEINLINE int32 GetMaxNumberOfHandVelocitySamples() const + { + return MaxNumberOfHandVelocitySamples; + } + + FORCEINLINE void SetMaxNumberOfHandVelocitySamples(const int32 InMaxNumberOfHandVelocitySamples) + { + MaxNumberOfHandVelocitySamples = InMaxNumberOfHandVelocitySamples; + } + +public: + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; + virtual void Tick(float DeltaSeconds) override; + virtual void PreInitializeComponents() override; + virtual void PostInitializeComponents() override; + +protected: + UFUNCTION() + virtual void OnRealLeftHandOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRealLeftHandOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRealRightHandOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRealRightHandOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftThumbFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftThumbFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftIndexFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftIndexFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftMiddleFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftMiddleFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftThumbFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftThumbFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftIndexFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftIndexFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftMiddleFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftMiddleFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftRingFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftRingFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnLeftPinkyFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnLeftPinkyFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightThumbFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightThumbFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightIndexFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightIndexFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightMiddleFingertipGrabColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightMiddleFingertipGrabColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightThumbFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightThumbFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightIndexFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightIndexFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightMiddleFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightMiddleFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightRingFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightRingFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + + UFUNCTION() + virtual void OnRightPinkyFingertipTouchColliderOverlapBegins( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex, + bool bFromSweep, + const FHitResult& SweepResult); + + UFUNCTION() + virtual void OnRightPinkyFingertipTouchColliderOverlapEnds( + UPrimitiveComponent* OverlappedComponent, + AActor* OtherActor, + UPrimitiveComponent* OtherComp, + int32 OtherBodyIndex); + +public: + FORCEINLINE bool CanLeftHandGrab(const AActor* Actor) const + { + return !IsLeftHandGrabbing() && ((IsValid(Actor) && Actor == LeftHandGrabState.ActorThumbCanGrab) + && (Actor == LeftHandGrabState.ActorIndexCanGrab || Actor == LeftHandGrabState.ActorMiddleCanGrab)); + } + + FORCEINLINE bool IsLeftHandGrabbing(const AActor* Actor) const + { + return IsValid(Actor) && LeftHandGrabState.GrabbedActor == Actor; + } + + bool IsLeftHandGrabbing(AActor*& OutActor) const; + + FORCEINLINE bool IsLeftHandGrabbing() const + { + return IsValid(LeftHandGrabState.GrabbedActor); + } + + FORCEINLINE bool CanRightHandGrab(const AActor* Actor) const + { + return !IsRightHandGrabbing() && ((IsValid(Actor) && Actor == RightHandGrabState.ActorThumbCanGrab) + && (Actor == RightHandGrabState.ActorIndexCanGrab || Actor == RightHandGrabState.ActorMiddleCanGrab)); + } + + FORCEINLINE bool IsRightHandGrabbing(const AActor* Actor) const + { + return IsValid(Actor) && RightHandGrabState.GrabbedActor == Actor; + } + + FORCEINLINE bool IsRightHandGrabbing() const + { + return IsValid(RightHandGrabState.GrabbedActor); + } + + bool IsRightHandGrabbing(AActor*& OutActor) const; + + FORCEINLINE bool CanGrab(const USGVirtualHandComponent* Hand, const AActor* Actor) const + { + return Hand == HandRight ? CanRightHandGrab(Actor) : CanLeftHandGrab(Actor); + } + + FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand, const AActor* Actor) const + { + return Hand == HandRight ? IsRightHandGrabbing(Actor) : IsLeftHandGrabbing(Actor); + } + + bool IsGrabbing(const USGVirtualHandComponent* Hand, AActor*& OutActor) const; + + FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand) const + { + return Hand == HandRight ? IsRightHandGrabbing() : IsLeftHandGrabbing(); + } + +public: + FORCEINLINE void GrabLeft(AActor* Actor) + { + Grab(HandLeft, Actor); + } + + FORCEINLINE void GrabRight(AActor* Actor) + { + Grab(HandRight, Actor); + } + + void Grab(USGVirtualHandComponent* Hand, AActor* Actor); + + void ReleaseLeft(); + + void ReleaseRight(); + + FORCEINLINE void Release(const USGVirtualHandComponent* Hand) + { + return Hand == HandRight ? ReleaseRight() : ReleaseLeft(); + } +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPlayerController.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPlayerController.h new file mode 100644 index 0000000..8009684 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/GameFramework/SGPlayerController.h @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "GameFramework/PlayerController.h" +#include "Templates/UniquePtr.h" + +#include "SGPlayerController.generated.h" + +UCLASS(Config=Game, BlueprintType, Blueprintable) +class SENSEGLOVE_API ASGPlayerController : public APlayerController +{ + GENERATED_UCLASS_BODY() + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +protected: + virtual void BeginPlay() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGGrabState.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGGrabState.h new file mode 100644 index 0000000..472c508 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGGrabState.h @@ -0,0 +1,86 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGGrabState.generated.h" + +class AActor; +class UPrimitiveComponent; + +class USGVirtualHandComponent; + +USTRUCT(BlueprintType) +struct SENSEGLOVE_API FSGGrabState +{ + GENERATED_USTRUCT_BODY() + +public: + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + USGVirtualHandComponent* Hand; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + FVector PreviousHandLocation; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + TArray HandVelocityHistory; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorThumbCanGrab; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorIndexCanGrab; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorMiddleCanGrab; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* GrabbedActor; + +public: + FSGGrabState(); + + explicit FSGGrabState(USGVirtualHandComponent* InHand, + const FVector& InPreviousHandLocation, + const TArray& InHandVelocityHistory, + AActor* InActorThumbCanGrab, + AActor* InActorIndexCanGrab, + AActor* InActorMiddleCanGrab, + AActor* InGrabbedActor); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGTouchState.h b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGTouchState.h new file mode 100644 index 0000000..10f4b99 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/Public/SenseGlove/Haptics/SGTouchState.h @@ -0,0 +1,79 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGTouchState.generated.h" + +class AActor; + +class USGVirtualHandComponent; + +USTRUCT(BlueprintType) +struct SENSEGLOVE_API FSGTouchState +{ + GENERATED_USTRUCT_BODY() + +public: + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + USGVirtualHandComponent* Hand; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorThumbTouching; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorIndexTouching; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorMiddleTouching; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorRingTouching; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "SenseGlove") + AActor* ActorPinkyTouching; + +public: + FSGTouchState(); + + explicit FSGTouchState(USGVirtualHandComponent* InHand, + AActor* InActorThumbTouching, + AActor* InActorIndexTouching, + AActor* InActorMiddleTouching, + AActor* InActorRingTouching, + AActor* InActorPinkyTouching); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGlove/SenseGlove.Build.cs b/Plugins/SenseGlove/Source/SenseGlove/SenseGlove.Build.cs new file mode 100644 index 0000000..49ba340 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGlove/SenseGlove.Build.cs @@ -0,0 +1,85 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGlove : ModuleRules +{ + public SenseGlove(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "AnimGraphRuntime", + "Core", + "CoreUObject", + "Engine", + "EngineSettings", + "HeadMountedDisplay", + "InputCore", + "InputDevice", + "OpenXRHMD", + // NOTE + // UE 5.3+ provides UXRDeviceVisualizationComponent as part of the XRBase plugin. + // UE 5.2 provides UXRDeviceVisualizationComponent as part of the HeadMountDisplay module. +#if UE_5_3_OR_LATER + "XRBase", +#endif + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveCore", + "SenseGloveDebug", + "SenseGloveLog", + "SenseGloveSettings", + "SenseGloveTracking", + "SenseGloveTypes", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGConnectJNI.cpp b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGConnectJNI.cpp new file mode 100644 index 0000000..1dd7b98 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGConnectJNI.cpp @@ -0,0 +1,128 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGAndroid/SGConnectJNI.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidApplication.h" +#include "Android/AndroidJava.h" +#endif /* PLATFORM_ANDROID */ + +#include "Misc/Paths.h" + +#if PLATFORM_ANDROID +#include "SGConnectImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_jclass.h" +#include "SGInterop/SGIC_jmethodID.h" +#include "SGInterop/SGIC_JNIEnv_Ptr.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGLog/SGLog.h" + +int32 FSGConnectJNI::Initialize() +{ + int32 Result = -999999; + +#if PLATFORM_ANDROID + static constexpr char SGCONNECT_JAVA_CLASS_NAME[] = "com.senseglove.sgconnect.SGConnect"; + + SGLOG("FSGCoreJNI: attempting to get the Android JNI environment..."); + + JNIEnv* Env = FAndroidApplication::GetJavaEnv(); + FAndroidApplication::CheckJavaException(); + if (!Env) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI environmnet!"); + return -1999999; + } + FSGIC_JNIEnv_Ptr InEnvContainer{Env}; + + SGLOG("FSGCoreJNI: attempting to find the Android Java class..."); + + jclass Class = FAndroidApplication::FindJavaClass(SGCONNECT_JAVA_CLASS_NAME); + FAndroidApplication::CheckJavaException(); + if (Env->IsSameObject(Class, nullptr)) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android Java class!"); + return -2999999; + } + Class = (jclass)Env->NewGlobalRef(Class); + FSGIC_jclass InClassContainer{Class}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'Init'..."); + + jmethodID InitMethodID = Env->GetStaticMethodID(Class, "Init", "()I"); + FAndroidApplication::CheckJavaException(); + if (!InitMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'Init'!"); + return -3999999; + } + FSGIC_jmethodID InInitMethodIDContainer{InitMethodID}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'Dispose'..."); + + jmethodID DisposeMethodID = Env->GetStaticMethodID(Class, "Dispose", "()I"); + FAndroidApplication::CheckJavaException(); + if (!DisposeMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'Dispose'!"); + return -4999999; + } + FSGIC_jmethodID InDisposeMethodIDContainer{DisposeMethodID}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetLibraryVersion'..."); + + jmethodID GetLibraryVersionMethodID = Env->GetStaticMethodID(Class, "GetLibraryVersion", "()Ljava/lang/String;"); + FAndroidApplication::CheckJavaException(); + if (!GetLibraryVersionMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetLibraryVersion'!"); + return -5999999; + } + FSGIC_jmethodID InGetLibraryVersionMethodIDContainer{GetLibraryVersionMethodID}; + + FSGIC_FString ProjectSavedDirContainer{FPaths::ProjectSavedDir()}; + + Result = SGConnectImpl_Android_Initialize(&InEnvContainer, &InClassContainer, + &InInitMethodIDContainer, + &InDisposeMethodIDContainer, + &InGetLibraryVersionMethodIDContainer, + &ProjectSavedDirContainer); +#endif /* PLATFORM_ANDROID */ + + return Result; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGCoreJNI.cpp b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGCoreJNI.cpp new file mode 100644 index 0000000..5e8bf8d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SGAndroid/SGCoreJNI.cpp @@ -0,0 +1,140 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGAndroid/SGCoreJNI.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidApplication.h" +#include "Android/AndroidJava.h" +#endif /* PLATFORM_ANDROID */ + +#include "Misc/Paths.h" + +#if PLATFORM_ANDROID +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_jclass.h" +#include "SGInterop/SGIC_jmethodID.h" +#include "SGInterop/SGIC_JNIEnv_Ptr.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGLog/SGLog.h" + +int32 FSGCoreJNI::Initialize() +{ + int32 Result = -999999; + +#if PLATFORM_ANDROID + static constexpr char SGCONNECT_JAVA_CLASS_NAME[] = "com.senseglove.sgconnect.SGConnect"; + + SGLOG("FSGCoreJNI: attempting to get the Android JNI environment..."); + + JNIEnv* Env = FAndroidApplication::GetJavaEnv(); + FAndroidApplication::CheckJavaException(); + if (!Env) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI environmnet!"); + return -1999999; + } + FSGIC_JNIEnv_Ptr InEnvContainer{Env}; + + SGLOG("FSGCoreJNI: attempting to find the Android Java class..."); + + jclass Class = FAndroidApplication::FindJavaClass(SGCONNECT_JAVA_CLASS_NAME); + FAndroidApplication::CheckJavaException(); + if (Env->IsSameObject(Class, nullptr)) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android Java class!"); + return -2999999; + } + Class = (jclass)Env->NewGlobalRef(Class); + FSGIC_jclass InClassContainer{Class}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'ActiveDevices'..."); + + jmethodID ActiveDevicesMethodID = Env->GetStaticMethodID(Class, "ActiveDevices", "()I"); + FAndroidApplication::CheckJavaException(); + if (!ActiveDevicesMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'ActiveDevices'!"); + return -3999999; + } + FSGIC_jmethodID InActiveDevicesMethodIDContainer{ActiveDevicesMethodID}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetDeviceString'..."); + + jmethodID GetDeviceStringMethodID = Env->GetStaticMethodID(Class, "GetDeviceString", "(I)Ljava/lang/String;"); + FAndroidApplication::CheckJavaException(); + if (!GetDeviceStringMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetDeviceString'!"); + return -4999999; + } + FSGIC_jmethodID InGetDeviceStringMethodIDContainer{GetDeviceStringMethodID}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'GetSensorString'..."); + + jmethodID GetSensorStringMethodID = Env->GetStaticMethodID(Class, "GetSensorString", "(I)Ljava/lang/String;"); + FAndroidApplication::CheckJavaException(); + if (!GetSensorStringMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'GetSensorString'!"); + return -5999999; + } + FSGIC_jmethodID InGetSensorStringMethodIDContainer{GetSensorStringMethodID}; + + SGLOG("FSGCoreJNI: attempting to find the Android JNI method 'WriteHaptics'..."); + + jmethodID WriteHapticsMethodID = Env->GetStaticMethodID(Class, "WriteHaptics", "(IILjava/lang/String;)I"); + FAndroidApplication::CheckJavaException(); + if (!WriteHapticsMethodID) + { + SGLOG_ERROR("FSGCoreJNI: failed to get the Android JNI method 'WriteHaptics'!"); + return -6999999; + } + FSGIC_jmethodID InWriteHapticsMethodIDContainer{WriteHapticsMethodID}; + + FSGIC_FString ProjectSavedDirContainer{FPaths::ProjectSavedDir()}; + + Result = SGCoreImpl_Android_Initialize(&InEnvContainer, &InClassContainer, + &InActiveDevicesMethodIDContainer, + &InGetDeviceStringMethodIDContainer, + &InGetSensorStringMethodIDContainer, + &InWriteHapticsMethodIDContainer, + &ProjectSavedDirContainer); +#endif /* PLATFORM_ANDROID */ + + return Result; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.cpp b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.cpp new file mode 100644 index 0000000..9e6e180 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.cpp @@ -0,0 +1,41 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveAndroid.h" + +#include "Modules/ModuleManager.h" +#include "SenseGloveAndroidModule.h" + +IMPLEMENT_MODULE(FSenseGloveAndroidModule, SenseGloveAndroid) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.h b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroid.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.cpp b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.cpp new file mode 100644 index 0000000..c481f0a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.cpp @@ -0,0 +1,75 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveAndroidModule.h" + +#include "SGAndroid/SGConnectJNI.h" +#include "SGAndroid/SGCoreJNI.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveAndroidModule" + +void FSenseGloveAndroidModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveAndroid module..."); + +#if PLATFORM_ANDROID + const int32 R1 = FSGConnectJNI::Initialize(); + const int32 R2 = FSGCoreJNI::Initialize(); + + ensureAlwaysMsgf(R1 == 0, + TEXT("Failed to initialize the SGConnect JNI bridge to SGConnect for Android! Status Code: %d"), R1); + + ensureAlwaysMsgf(R2 == 0, + TEXT("Failed to initialize the SGCore JNI bridge to SGConnect for Android! Status Code: %d"), R2); +#endif /* PLATFORM_ANDROID */ +} + +void FSenseGloveAndroidModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveAndroid module..."); +} + +void FSenseGloveAndroidModule::PostLoadCallback() +{ + SGLOG("Loading the SenseGloveAndroid module has succeeded!"); +} + +void FSenseGloveAndroidModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveAndroid module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.h b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.h new file mode 100644 index 0000000..af62a29 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Private/SenseGloveAndroidModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveAndroid" + +class FSenseGloveAndroidModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGConnectJNI.h b/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGConnectJNI.h new file mode 100644 index 0000000..71ae325 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGConnectJNI.h @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGConnectJNI.generated.h" + +USTRUCT() +struct SENSEGLOVEANDROID_API FSGConnectJNI +{ + GENERATED_BODY() + +public: + static int32 Initialize(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGCoreJNI.h b/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGCoreJNI.h new file mode 100644 index 0000000..cddd699 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/Public/SGAndroid/SGCoreJNI.h @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGCoreJNI.generated.h" + +USTRUCT() +struct SENSEGLOVEANDROID_API FSGCoreJNI +{ + GENERATED_BODY() + +public: + static int32 Initialize(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid.Build.cs b/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid.Build.cs new file mode 100644 index 0000000..809ab0f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid.Build.cs @@ -0,0 +1,77 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using System.IO; +using UnrealBuildTool; + +public class SenseGloveAndroid : ModuleRules +{ + public SenseGloveAndroid(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveConnectImpl", + "SenseGloveCoreImpl", + "SenseGloveLog", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveInterop", + } + ); + + if (Target.Platform == UnrealTargetPlatform.Android) + { + AdditionalPropertiesForReceipt.Add("AndroidPlugin", + Path.Combine(ModuleDirectory, "SenseGloveAndroid_UPL.xml")); + } + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid_UPL.xml b/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid_UPL.xml new file mode 100644 index 0000000..72c166c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveAndroid/SenseGloveAndroid_UPL.xml @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + kapt.incremental.apt=true + + + + + + + + + + -dontwarn com.senseglove.** + -keep class com.senseglove.** { *; } + -keep interface com.senseglove.** { *; } + -keep public class com.senseglove.sgconnect.** { public protected *; } + + + + + + + + + + + + + + + + + + + + + + + + + + + ext { + android { + buildTypes { + release { + minifyEnabled false + } + } + } + } + + repositories { + mavenCentral() + } + + dependencies { + implementation files('libs/sgconnect.jar') + } + + + + + + + + + allprojects { + def mappings = [ + ] + beforeEvaluate { + } + } + + + + \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SGBackend/SGBackend.cpp b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SGBackend/SGBackend.cpp new file mode 100644 index 0000000..abf0e47 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SGBackend/SGBackend.cpp @@ -0,0 +1,223 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBackend/SGBackend.h" + +#include "Engine/Engine.h" + +#if PLATFORM_ANDROID +#include "SGConnect/SGConnect.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGCore/SGDeviceList.h" +#include "SGCore/SGHandLayer.h" +#include "SGLog/SGLog.h" + +struct USGBackend::FImpl +{ + /************************ + * Owner object + ************************/ + + USGBackend* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGBackend* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGBackend* USGBackend::GetInstance() +{ + if (!ensureAlwaysMsgf(GEngine, TEXT("The engine has not been initialized!"))) + { + return nullptr; + } + + USGBackend* Instance{GEngine->GetEngineSubsystem()}; + return Instance; +} + +USGBackend::USGBackend() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + bBackendInitialized = false; +} + +bool USGBackend::InitializeBackend() +{ + if (!IsBackendInitialized()) + { +#if PLATFORM_ANDROID + const int32 Result = FSGConnect::Init(); + switch (Result) + { + case -3: + SGLOG_ERROR("An Unexpected error occurred. Please try again."); + return false; + case -2: + SGLOG_ERROR("Device Scanning is already running within a different program."); + return false; + case -1: + SGLOG_ERROR("Device Scanning already being initialized (function called twice in short succession)."); + return false; + case 0: + SGLOG_ERROR("Device Scanning is already running within this program."); + return false; + case 1: + SGLOG("Successfully started up DeviceScanning from the current program."); + break; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled Init return status code!")); + return false; + } +#endif /* PLATFORM_ANDROID */ + + // Ensure that the device list is empty before doing anything. + FSGDeviceList::Dispose(); + FSGDeviceList::Reinitialize(); + + bBackendInitialized = true; + + return true; + } + + return false; +} + +bool USGBackend::UninitializeBackend() +{ + if (IsBackendInitialized()) + { + FSGDeviceList::Dispose(); + +#if PLATFORM_ANDROID + const int32 Result = FSGConnect::Dispose(); + switch (Result) + { + case -3: + SGLOG_ERROR("An Unexpected error occurred. Please try again."); + return false; + case -2: + SGLOG_ERROR("Not allowed to dispose of Device Scanning because this is not the program which started it."); + return false; + case -1: + SGLOG_ERROR("Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession)."); + return false; + case 0: + SGLOG_ERROR("There is no deviceScanner running from any program, so disposing is skipped."); + return false; + case 1: + SGLOG("Successfully disposed of DeviceScanner resources."); + break; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled Dispose return status code!")); + return false; + } +#endif /* PLATFORM_ANDROID */ + + bBackendInitialized = false; + + return true; + } + + return false; +} + +bool USGBackend::ShouldCreateSubsystem(UObject* Outer) const +{ + return true; +} + +void USGBackend::Initialize(FSubsystemCollectionBase& Collection) +{ + SGLOG("Initializing the SenseGlove Backend singleton with the engine lifetime..."); + + Super::Initialize(Collection); + + SGLOG("Initializing the SenseGlove Backend singleton with the engine lifetime..."); + + if (InitializeBackend()) + { + SGLOG("The bridge to the SenseGlove Backend has been initialized successfully!") + } + else + { + SGLOG_ERROR("Failed to initialize the bridge to the SenseGlove Backend!") + } + + SGLOG("The SenseGlove Backend singleton has been successfully initialized with the engine lifetime!"); +} + +void USGBackend::Deinitialize() +{ + SGLOG("De-initializing the SenseGlove Backend singleton due to the engine lifetime expiration..."); + + Super::Deinitialize(); + + if (UninitializeBackend()) + { + SGLOG("The bridge to the SenseGlove Backend has been uninitialized successfully!") + } + else + { + SGLOG_ERROR("Failed to uninitialize the bridge to the SenseGlove Backend!") + } + + (void)Pimpl.Release(); + + SGLOG("The SenseGlove Backend singleton has been successfully de-initialized!"); +} + +USGBackend::FImpl::FImpl(USGBackend* InOwner) + : Owner(InOwner) +{ +} + +USGBackend::FImpl::~FImpl() = default; + +void USGBackend::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.cpp b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.cpp new file mode 100644 index 0000000..1671c80 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBackend.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveBackendModule.h" + +IMPLEMENT_MODULE(FSenseGloveBackendModule, SenseGloveBackend) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.h b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackend.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.cpp b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.cpp new file mode 100644 index 0000000..15c2a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.cpp @@ -0,0 +1,63 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBackendModule.h" + +#include "SGLog/SGLog.h" +#include "SGBackend/SGBackend.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveBackendModule" + +void FSenseGloveBackendModule::StartupModule() +{ + SGLOG("Starting up SenseGloveBackend module..."); +} + +void FSenseGloveBackendModule::PreUnloadCallback() +{ + SGLOG("Unloading SenseGloveBackend module..."); +} + +void FSenseGloveBackendModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveBackend module has succeeded!"); +} + +void FSenseGloveBackendModule::ShutdownModule() +{ + SGLOG("Shutting down SenseGloveBackend module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.h b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.h new file mode 100644 index 0000000..1eab4a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Private/SenseGloveBackendModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveBackend" + +class FSenseGloveBackendModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/Public/SGBackend/SGBackend.h b/Plugins/SenseGlove/Source/SenseGloveBackend/Public/SGBackend/SGBackend.h new file mode 100644 index 0000000..ec4d59a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/Public/SGBackend/SGBackend.h @@ -0,0 +1,87 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Color.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" +#include "Subsystems/EngineSubsystem.h" +#include "Templates/UniquePtr.h" +#include "UObject/ObjectMacros.h" + +#include "SGBackend.generated.h" + +UCLASS(config = SenseGloveBackend) +class SENSEGLOVEBACKEND_API USGBackend : public UEngineSubsystem +{ + GENERATED_BODY() + +private: + UPROPERTY(Transient) + bool bBackendInitialized; + +public: + static USGBackend* GetInstance(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + USGBackend(); + +public: + FORCEINLINE bool IsBackendInitialized() const + { + return bBackendInitialized; + } + + bool InitializeBackend(); + bool UninitializeBackend(); + +public: + virtual bool ShouldCreateSubsystem(UObject* Outer) const override; + + virtual void Initialize(FSubsystemCollectionBase& Collection) override; + virtual void Deinitialize() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackend/SenseGloveBackend.Build.cs b/Plugins/SenseGlove/Source/SenseGloveBackend/SenseGloveBackend.Build.cs new file mode 100644 index 0000000..ecce332 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackend/SenseGloveBackend.Build.cs @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveBackend : ModuleRules +{ + public SenseGloveBackend(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "InputCore", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveConnect", + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SGBackendKismet/SGBackendKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SGBackendKismet/SGBackendKismetLibrary.cpp new file mode 100644 index 0000000..d0a428b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SGBackendKismet/SGBackendKismetLibrary.cpp @@ -0,0 +1,58 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBackendKismet/SGBackendKismetLibrary.h" + +#include "SGBackend/SGBackend.h" + +USGBackend* USGBackendKismetLibrary::GetInstance() +{ + return USGBackend::GetInstance(); +} + +bool USGBackendKismetLibrary::IsBackendInitialized(const USGBackend* Backend) +{ + return Backend->IsBackendInitialized(); +} + +bool USGBackendKismetLibrary::InitializeBackend(USGBackend* Backend) +{ + return Backend->InitializeBackend(); +} + +bool USGBackendKismetLibrary::UninitializeBackend(USGBackend* Backend) +{ + return Backend->UninitializeBackend(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.cpp new file mode 100644 index 0000000..a60324b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBackendKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveBackendKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveBackendKismetModule, SenseGloveBackendKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.h b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.cpp new file mode 100644 index 0000000..f03f707 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBackendKismetModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveBackendKismetModule" + +void FSenseGloveBackendKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveBackendKismet module..."); +} + +void FSenseGloveBackendKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveBackendKismet module..."); +} + +void FSenseGloveBackendKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveBackendKismet module has succeeded!"); +} + +void FSenseGloveBackendKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveBackendKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.h new file mode 100644 index 0000000..a666e40 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Private/SenseGloveBackendKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveBackendKismet" + +class FSenseGloveBackendKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Public/SGBackendKismet/SGBackendKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Public/SGBackendKismet/SGBackendKismetLibrary.h new file mode 100644 index 0000000..f043991 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/Public/SGBackendKismet/SGBackendKismetLibrary.h @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGBackendKismetLibrary.generated.h" + +class USGBackend; + +UCLASS(meta=(ScriptName = "SenseGloveBackendKismetLibrary")) +class SENSEGLOVEBACKENDKISMET_API USGBackendKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Backend") + static USGBackend* GetInstance(); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Backend") + static bool IsBackendInitialized(const USGBackend* Backend); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Backend") + bool InitializeBackend(UPARAM(ref) USGBackend* Backend); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Backend") + bool UninitializeBackend(UPARAM(ref) USGBackend* Backend); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBackendKismet/SenseGloveBackendKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/SenseGloveBackendKismet.Build.cs new file mode 100644 index 0000000..382734e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBackendKismet/SenseGloveBackendKismet.Build.cs @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveBackendKismet : ModuleRules +{ + public SenseGloveBackendKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveBackend", + "SenseGloveLog", + "SenseGloveKismet", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4263.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4263.cpp new file mode 100644 index 0000000..c30d796 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4263.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGDisable_C4263.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4264.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4264.cpp new file mode 100644 index 0000000..dc7f4eb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4264.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGDisable_C4264.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4706.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4706.cpp new file mode 100644 index 0000000..261e80d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4706.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGDisable_C4706.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4800.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4800.cpp new file mode 100644 index 0000000..4f421b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGDisable_C4800.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGDisable_C4800.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_Android.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_Android.cpp new file mode 100644 index 0000000..1a01ca7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_Android.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Connect_Android.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_SGConnect.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_SGConnect.cpp new file mode 100644 index 0000000..4c7667d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Connect_SGConnect.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Connect_SGConnect.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Anatomy.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Anatomy.cpp new file mode 100644 index 0000000..ff02eff --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Anatomy.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Anatomy.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Android.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Android.cpp new file mode 100644 index 0000000..3b062a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Android.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Android.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BasicHandModel.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BasicHandModel.cpp new file mode 100644 index 0000000..60dc3de --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BasicHandModel.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BetaDevice.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BetaDevice.cpp new file mode 100644 index 0000000..2e94e06 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_BetaDevice.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_BetaDevice.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_CustomWaveform.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_CustomWaveform.cpp new file mode 100644 index 0000000..50e58e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_CustomWaveform.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceList.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceList.cpp new file mode 100644 index 0000000..f6606c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceList.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_DeviceList.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceModel.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceModel.cpp new file mode 100644 index 0000000..addbe64 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_DeviceModel.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_DeviceModel.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Fingers.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Fingers.cpp new file mode 100644 index 0000000..dbf5fd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Fingers.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Fingers.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandInterpolator.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandInterpolator.cpp new file mode 100644 index 0000000..ba2c904 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandInterpolator.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_HandInterpolator.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandLayer.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandLayer.cpp new file mode 100644 index 0000000..380d841 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandLayer.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_HandLayer.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandPose.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandPose.cpp new file mode 100644 index 0000000..84a89a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HandPose.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_HandPose.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticChannelInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticChannelInfo.cpp new file mode 100644 index 0000000..1ea198e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticChannelInfo.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_HapticChannelInfo.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticGlove.cpp new file mode 100644 index 0000000..f5d8509 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_HapticGlove.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_InterpolationSet.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_InterpolationSet.cpp new file mode 100644 index 0000000..8276bb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_InterpolationSet.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_InterpolationSet.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_JointKinematics.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_JointKinematics.cpp new file mode 100644 index 0000000..e200650 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_JointKinematics.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_JointKinematics.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Library.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Library.cpp new file mode 100644 index 0000000..c6c9624 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Library.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Library.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NormalizationState.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NormalizationState.cpp new file mode 100644 index 0000000..070974f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NormalizationState.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_NormalizationState.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2Glove.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2Glove.cpp new file mode 100644 index 0000000..362ffaa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2Glove.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Nova2Glove.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.cpp new file mode 100644 index 0000000..fd9ef20 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGlove.cpp new file mode 100644 index 0000000..03b7c6b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGlove.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_NovaGlove.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveInfo.cpp new file mode 100644 index 0000000..ee04a6c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveInfo.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_NovaGloveInfo.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.cpp new file mode 100644 index 0000000..b954939 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveVars.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveVars.cpp new file mode 100644 index 0000000..da7fb37 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_NovaGloveVars.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_NovaGloveVars.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Quat.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Quat.cpp new file mode 100644 index 0000000..6e769b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Quat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Quat.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SGDevice.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SGDevice.cpp new file mode 100644 index 0000000..2a1b1c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SGDevice.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SGDevice.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseCom.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseCom.cpp new file mode 100644 index 0000000..0a3a6ba --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseCom.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseCom.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlove.cpp new file mode 100644 index 0000000..439d43b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlove.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGlove.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveInfo.cpp new file mode 100644 index 0000000..28beecb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveInfo.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGloveInfo.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlovePose.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlovePose.cpp new file mode 100644 index 0000000..1309919 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGlovePose.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGlovePose.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.cpp new file mode 100644 index 0000000..e520fdd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.cpp new file mode 100644 index 0000000..4d6748c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.cpp new file mode 100644 index 0000000..ed39a1e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveVars.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveVars.cpp new file mode 100644 index 0000000..1eeb6a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SenseGloveVars.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SenseGloveVars.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SensorNormalization.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SensorNormalization.cpp new file mode 100644 index 0000000..145a4b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_SensorNormalization.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_SensorNormalization.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_ThresholdCommand.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_ThresholdCommand.cpp new file mode 100644 index 0000000..246236e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_ThresholdCommand.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_ThresholdCommand.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Tracking.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Tracking.cpp new file mode 100644 index 0000000..b99f1bc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Tracking.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Tracking.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Vect3D.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Vect3D.cpp new file mode 100644 index 0000000..d3c76a1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Core_Vect3D.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Windows.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Windows.cpp new file mode 100644 index 0000000..4b51cbc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGInclude_Windows.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGInclude_Windows.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGPlatform.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGPlatform.cpp new file mode 100644 index 0000000..d5ccc83 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGPlatform.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGPlatform.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4263.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4263.cpp new file mode 100644 index 0000000..72b4f44 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4263.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_C4263.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4264.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4264.cpp new file mode 100644 index 0000000..a6cfb76 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4264.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_C4264.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4706.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4706.cpp new file mode 100644 index 0000000..4c49fad --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4706.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_C4706.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4800.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4800.cpp new file mode 100644 index 0000000..13ae14f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_C4800.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_C4800.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_TEXT.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_TEXT.cpp new file mode 100644 index 0000000..e5b8a18 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_TEXT.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_check.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_check.cpp new file mode 100644 index 0000000..6caa3d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGRestore_check.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGRestore_check.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_TEXT.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_TEXT.cpp new file mode 100644 index 0000000..27077f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_TEXT.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGUndef_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_check.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_check.cpp new file mode 100644 index 0000000..c9c7df2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SGBuildHacks/SGUndef_check.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGBuildHacks/SGUndef_check.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.cpp new file mode 100644 index 0000000..76b7be4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBuildHacks.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveBuildHacksModule.h" + +IMPLEMENT_MODULE(FSenseGloveBuildHacksModule, SenseGloveBuildHacks) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacks.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.cpp b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.cpp new file mode 100644 index 0000000..a086bcd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveBuildHacksModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveBuildHacksModule" + +void FSenseGloveBuildHacksModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveBuildHacks module..."); +} + +void FSenseGloveBuildHacksModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveBuildHacks module..."); +} + +void FSenseGloveBuildHacksModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveBuildHacks module has succeeded!"); +} + +void FSenseGloveBuildHacksModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveBuildHacks module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.h new file mode 100644 index 0000000..a4ee2ae --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Private/SenseGloveBuildHacksModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveBuildHacks" + +class FSenseGloveBuildHacksModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4263.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4263.h new file mode 100644 index 0000000..479ede4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4263.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(disable: 4263) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4264.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4264.h new file mode 100644 index 0000000..d31ada1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4264.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(disable: 4264) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4706.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4706.h new file mode 100644 index 0000000..a3b3339 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4706.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(disable: 4706) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4800.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4800.h new file mode 100644 index 0000000..826ea3e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_C4800.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(disable: 4800) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_Woverloaded_virtual.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_Woverloaded_virtual.h new file mode 100644 index 0000000..85ec52e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGDisable_Woverloaded_virtual.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#if ! PLATFORM_WINDOWS + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Woverloaded-virtual" + +#endif /* ! PLATFORM_WINDOWS */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_Android.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_Android.h new file mode 100644 index 0000000..0183322 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_Android.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Connect/Android.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_SGConnect.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_SGConnect.h new file mode 100644 index 0000000..ea01d42 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Connect_SGConnect.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Connect/SGConnect.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Anatomy.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Anatomy.h new file mode 100644 index 0000000..d6f5905 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Anatomy.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Anatomy.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Android.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Android.h new file mode 100644 index 0000000..9463b23 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Android.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Android.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BasicHandModel.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BasicHandModel.h new file mode 100644 index 0000000..e100b17 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BasicHandModel.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/BasicHandModel.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BetaDevice.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BetaDevice.h new file mode 100644 index 0000000..ff80854 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_BetaDevice.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/BetaDevice.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_CustomWaveform.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_CustomWaveform.h new file mode 100644 index 0000000..f525f00 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_CustomWaveform.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/CustomWaveform.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceList.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceList.h new file mode 100644 index 0000000..b8e0f03 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceList.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/DeviceList.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceModel.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceModel.h new file mode 100644 index 0000000..a75ad2c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_DeviceModel.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/DeviceModel.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Fingers.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Fingers.h new file mode 100644 index 0000000..902d0f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Fingers.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Fingers.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandInterpolator.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandInterpolator.h new file mode 100644 index 0000000..666bb84 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandInterpolator.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/HandInterpolator.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandLayer.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandLayer.h new file mode 100644 index 0000000..2ce8a40 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandLayer.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/HandLayer.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandPose.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandPose.h new file mode 100644 index 0000000..6b56265 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HandPose.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/HandPose.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticChannelInfo.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticChannelInfo.h new file mode 100644 index 0000000..8532211 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticChannelInfo.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/HapticChannelInfo.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticGlove.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticGlove.h new file mode 100644 index 0000000..7f6ba70 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_HapticGlove.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/HapticGlove.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_InterpolationSet.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_InterpolationSet.h new file mode 100644 index 0000000..24f91b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_InterpolationSet.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/InterpolationSet.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_JointKinematics.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_JointKinematics.h new file mode 100644 index 0000000..683b785 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_JointKinematics.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/JointKinematics.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Library.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Library.h new file mode 100644 index 0000000..a1d7bd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Library.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Library.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NormalizationState.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NormalizationState.h new file mode 100644 index 0000000..9c4ebf0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NormalizationState.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/NormalizationState.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2Glove.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2Glove.h new file mode 100644 index 0000000..b5a33e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2Glove.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Nova2Glove.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h new file mode 100644 index 0000000..1267096 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Nova2GloveSensorData.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGlove.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGlove.h new file mode 100644 index 0000000..6cee7d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGlove.h @@ -0,0 +1,52 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +#include "SGBuildHacks/SGDisable_C4263.h" +#include "SGBuildHacks/SGDisable_C4264.h" +#include "SGBuildHacks/SGDisable_Woverloaded_virtual.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/NovaGlove.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_C4263.h" +#include "SGBuildHacks/SGRestore_C4264.h" +#include "SGBuildHacks/SGRestore_Woverloaded_virtual.h" + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveInfo.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveInfo.h new file mode 100644 index 0000000..41cec78 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveInfo.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/NovaGloveInfo.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h new file mode 100644 index 0000000..2f0617c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/NovaGloveSensorData.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveVars.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveVars.h new file mode 100644 index 0000000..99666fe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_NovaGloveVars.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/NovaGloveVars.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Quat.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Quat.h new file mode 100644 index 0000000..ee05165 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Quat.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Quat.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SGDevice.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SGDevice.h new file mode 100644 index 0000000..ba424e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SGDevice.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SGDevice.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseCom.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseCom.h new file mode 100644 index 0000000..5b84cbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseCom.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseCom.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlove.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlove.h new file mode 100644 index 0000000..3c3bf98 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlove.h @@ -0,0 +1,52 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +#include "SGBuildHacks/SGDisable_C4263.h" +#include "SGBuildHacks/SGDisable_C4264.h" +#include "SGBuildHacks/SGDisable_Woverloaded_virtual.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGlove.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_C4263.h" +#include "SGBuildHacks/SGRestore_C4264.h" +#include "SGBuildHacks/SGRestore_Woverloaded_virtual.h" + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveInfo.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveInfo.h new file mode 100644 index 0000000..0fe083d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveInfo.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGloveInfo.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlovePose.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlovePose.h new file mode 100644 index 0000000..6a28419 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGlovePose.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGlovePose.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h new file mode 100644 index 0000000..8036dac --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGloveSensorData.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h new file mode 100644 index 0000000..02ac297 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGloveSensorNormalizer.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.h new file mode 100644 index 0000000..f0b719b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGloveThumperCommand.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveVars.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveVars.h new file mode 100644 index 0000000..af1a38b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SenseGloveVars.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SenseGloveVars.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SensorNormalization.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SensorNormalization.h new file mode 100644 index 0000000..2fb218d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_SensorNormalization.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/SensorNormalization.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_ThresholdCommand.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_ThresholdCommand.h new file mode 100644 index 0000000..f8ee40f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_ThresholdCommand.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/ThresholdCommand.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Tracking.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Tracking.h new file mode 100644 index 0000000..a0332f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Tracking.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Tracking.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Vect3D.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Vect3D.h new file mode 100644 index 0000000..82e1e68 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Core_Vect3D.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGUndef_TEXT.h" + +THIRD_PARTY_INCLUDES_START +#include "SenseGlove/Core/Vect3D.hpp" +THIRD_PARTY_INCLUDES_END + +#include "SGBuildHacks/SGRestore_TEXT.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Windows.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Windows.h new file mode 100644 index 0000000..67937ad --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGInclude_Windows.h @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#if PLATFORM_WINDOWS + +#include + +THIRD_PARTY_INCLUDES_START + +#include +#include +#include + +THIRD_PARTY_INCLUDES_END + +#undef CopyFile +#undef CreateDirectory +#undef DeleteFile +#undef DrawText +#undef GetObject +#undef InterlockedAdd +#undef InterlockedDecrement +#undef InterlockedExchange +#undef InterlockedIncrement +#undef MoveFile +#undef TEXT +#undef UpdateResource + +#include + +#endif /* PLATFORM_WINDOWS */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGPlatform.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGPlatform.h new file mode 100644 index 0000000..05d1aa6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGPlatform.h @@ -0,0 +1,60 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#if ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L ) +#define SG_CPP17 1 +#else /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L ) */ +#define SG_CPP17 0 +#endif /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 201703L ) || __cplusplus >= 201703L ) */ + +#if ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 202002L ) || __cplusplus >= 202002L ) +#define SG_CPP20 1 +#else /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 202002L ) || __cplusplus >= 202002L ) */ +#define SG_CPP20 0 +#endif /* ( ( defined( _MSVC_LANG ) && _MSVC_LANG >= 202002L ) || __cplusplus >= 202002L ) */ + +#if SG_CPP17 || SG_CPP20 +#define SG_NOEXCEPT noexcept +#else /* SG_CPP17 || SG_CPP20 */ +#define SG_NOEXCEPT +#endif /* SG_CPP17 || SG_CPP20 */ + +#if SG_CPP20 +#define SG_CAPTURE_THIS , this +#else /* SG_CPP17 || SG_CPP20 */ +#define SG_CAPTURE_THIS +#endif /* SG_CPP17 || SG_CPP20 */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4263.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4263.h new file mode 100644 index 0000000..1631b7c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4263.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(default: 4263) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4264.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4264.h new file mode 100644 index 0000000..99fd922 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4264.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(default: 4264) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4706.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4706.h new file mode 100644 index 0000000..097a8d3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4706.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(default: 4706) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4800.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4800.h new file mode 100644 index 0000000..6c41e15 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_C4800.h @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma warning(default: 4800) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_TEXT.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_TEXT.h new file mode 100644 index 0000000..8bf1852 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_TEXT.h @@ -0,0 +1,39 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#ifdef SENSEGLOVEBUILDHACKS_RESTORE_TEXT +#pragma pop_macro("TEXT") +#undef SENSEGLOVEBUILDHACKS_RESTORE_TEXT +#endif /* SENSEGLOVEBUILDHACKS_RESTORE_TEXT */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_Woverloaded_virtual.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_Woverloaded_virtual.h new file mode 100644 index 0000000..5423907 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_Woverloaded_virtual.h @@ -0,0 +1,42 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "HAL/Platform.h" + +#if ! PLATFORM_WINDOWS + +#pragma clang diagnostic pop + +#endif /* ! PLATFORM_WINDOWS */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_check.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_check.h new file mode 100644 index 0000000..7eb98e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGRestore_check.h @@ -0,0 +1,39 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#ifdef SENSEGLOVEBUILDHACKS_RESTORE_check +#pragma pop_macro("check") +#undef SENSEGLOVEBUILDHACKS_RESTORE_check +#endif /* SENSEGLOVEBUILDHACKS_RESTORE_check */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_TEXT.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_TEXT.h new file mode 100644 index 0000000..9f2b662 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_TEXT.h @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#ifdef TEXT +#pragma push_macro("TEXT") +#undef TEXT +#define SENSEGLOVEBUILDHACKS_RESTORE_TEXT +#endif /* TEXT */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_check.h b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_check.h new file mode 100644 index 0000000..48b5068 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/Public/SGBuildHacks/SGUndef_check.h @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#ifdef check +#pragma push_macro("check") +#undef check +#define SENSEGLOVEBUILDHACKS_RESTORE_check +#endif /* check */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveBuildHacks/SenseGloveBuildHacks.Build.cs b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/SenseGloveBuildHacks.Build.cs new file mode 100644 index 0000000..31634f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveBuildHacks/SenseGloveBuildHacks.Build.cs @@ -0,0 +1,77 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using System.IO; +using UnrealBuildTool; + +public class SenseGloveBuildHacks : ModuleRules +{ + public SenseGloveBuildHacks(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + bEnableExceptions = true; + bUseRTTI = true; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + } + ); + + AddConnectHeaders(); + } + + private void AddConnectHeaders() + { + string PluginRootDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..")); + string SourceDirectory = Path.GetFullPath(Path.Combine(PluginRootDirectory, "Source")); + string ThirdPartyDirectory = Path.GetFullPath(Path.Combine(SourceDirectory, "ThirdParty")); + string IncludePath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "include")); + + PrivateIncludePaths.Add(IncludePath); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SGConnect/SGConnect.cpp b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SGConnect/SGConnect.cpp new file mode 100644 index 0000000..c24fceb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SGConnect/SGConnect.cpp @@ -0,0 +1,56 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGConnect/SGConnect.h" + +#include "SGConnectImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FString.h" + +int32 FSGConnect::Init() +{ + return SGConnect_Init(); +} + +int32 FSGConnect::Dispose() +{ + return SGConnect_Dispose(); +} + +FString FSGConnect::GetLibraryVersion() +{ + FSGIC_FString Container; + SGConnect_GetLibraryVersion(&Container); + return Container.String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.cpp b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.cpp new file mode 100644 index 0000000..7abc2fc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnect.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveConnectModule.h" + +IMPLEMENT_MODULE(FSenseGloveConnectModule, SenseGloveConnect) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.h b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnect.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.cpp b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.cpp new file mode 100644 index 0000000..1dee901 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.cpp @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnectModule.h" +#include "Containers/UnrealString.h" +#include "SGConnect/SGConnect.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveConnectModule" + +void FSenseGloveConnectModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveConnect module..."); + SGLOG(FString::Printf(TEXT("The Unreal Engine implementation of '%s' has been loaded successfully!"), + *FSGConnect::GetLibraryVersion())); +} + +void FSenseGloveConnectModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveConnect module..."); +} + +void FSenseGloveConnectModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveConnect module has succeeded!"); +} + +void FSenseGloveConnectModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveConnect module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.h b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.h new file mode 100644 index 0000000..5b1cad0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Private/SenseGloveConnectModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveConnect" + +class FSenseGloveConnectModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/Public/SGConnect/SGConnect.h b/Plugins/SenseGlove/Source/SenseGloveConnect/Public/SGConnect/SGConnect.h new file mode 100644 index 0000000..d76be72 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/Public/SGConnect/SGConnect.h @@ -0,0 +1,77 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGConnect.generated.h" + +USTRUCT() +struct SENSEGLOVECONNECT_API FSGConnect +{ + GENERATED_BODY() + +public: + /** + * Begin Scanning for Sense Glove Devices and set up communications with them. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Device Scanning is already running within a different program. + * -1 : Device Scanning already being initialized (function called twice in short succession). + * 0 : Device Scanning is already running within this program. + * 1 : Successfully started up DeviceScanning from the current program. + */ + static int32 Init(); + + /** + * Dispose of unmanaged resources and finalize Sense Glove devices. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Not allowed to dispose of Device Scanning because this is not the program which started it. + * -1 : Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession). + * 0 : There is no deviceScanner running from any program, so disposing is skipped. + * 1 : Successfully disposed of DeviceScanner resources. + * @remark If the Dispose function returns 1, the resources were neatly disposed of. Only a value of -3 is cause for concern. + */ + static int32 Dispose(); + + /** + * Check which version of SGConnect you are using. + */ + static FString GetLibraryVersion(); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveConnect/SenseGloveConnect.Build.cs b/Plugins/SenseGlove/Source/SenseGloveConnect/SenseGloveConnect.Build.cs new file mode 100644 index 0000000..3059f52 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnect/SenseGloveConnect.Build.cs @@ -0,0 +1,80 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveConnect : ModuleRules +{ + public SenseGloveConnect(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveConnectImpl", + "SenseGloveLog", + "SenseGloveTypes", + } + ); + + if (Target.Platform == UnrealTargetPlatform.Android) + { + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveAndroid", + } + ); + } + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveInterop", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGConnectImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGConnectImpl.cpp new file mode 100644 index 0000000..210d662 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGConnectImpl.cpp @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGConnectImpl/SGConnectImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Connect_SGConnect.h" + +int32 FSGConnectImpl::Init() +{ + return SGConnect::Init(); +} + +int32 FSGConnectImpl::Dispose() +{ + return SGConnect::Dispose(); +} + +FString FSGConnectImpl::GetLibraryVersion() +{ + std::string Version; + SGConnect::GetLibraryVersion(&Version); + return UTF8_TO_TCHAR(Version.c_str()); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGExportedFunctions.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGExportedFunctions.cpp new file mode 100644 index 0000000..4841ab3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SGConnectImpl/SGExportedFunctions.cpp @@ -0,0 +1,94 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGConnectImpl/SGExportedFunctions.h" + +#include "Containers/StringConv.h" +#include "Templates/UnrealTemplate.h" + +#if PLATFORM_ANDROID +#include "SGBuildHacks/SGInclude_Connect_Android.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGConnectImpl/SGConnectImpl.h" +#include "SGInterop/SGIC_FString.h" + +#if PLATFORM_ANDROID +#include "SGInterop/SGIC_jclass.h" +#include "SGInterop/SGIC_jmethodID.h" +#include "SGInterop/SGIC_JNIEnv_Ptr.h" +#endif /* PLATFORM_ANDROID */ + +/******************************************************************************* + * Exceptional function calls + ******************************************************************************/ + +#if PLATFORM_ANDROID +int32 SGConnectImpl_Android_Initialize( + void* InEnv, + void* InClass, + void* InInitMethodID, + void* InDisposeMethodID, + void* InGetLibraryVersionMethodID, + void* StoragePath) +{ + return SGConnect::Android::Initialize( + StaticCast(InEnv)->Ptr, + StaticCast(InClass)->Class, + StaticCast(InInitMethodID)->MethodID, + StaticCast(InDisposeMethodID)->MethodID, + StaticCast(InGetLibraryVersionMethodID)->MethodID, + std::string{TCHAR_TO_UTF8(*StaticCast(StoragePath)->String)}); +} +#endif /* PLATFORM_ANDROID */ + +/******************************************************************************* + * SGConnectImpl.h + ******************************************************************************/ + +int32 SGConnect_Init() +{ + return FSGConnectImpl::Init(); +} + +int32 SGConnect_Dispose() +{ + return FSGConnectImpl::Dispose(); +} + +void SGConnect_GetLibraryVersion(void* OutVersion) +{ + StaticCast(OutVersion)->String = FSGConnectImpl::GetLibraryVersion(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.cpp new file mode 100644 index 0000000..c098048 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnectImpl.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveConnectImplModule.h" + +IMPLEMENT_MODULE(FSenseGloveConnectImplModule, SenseGloveConnectImpl) diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.h b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImpl.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.cpp new file mode 100644 index 0000000..87c651c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.cpp @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnectImplModule.h" +#include "Containers/UnrealString.h" +#include "SGConnectImpl/SGConnectImpl.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveConnectImplModule" + +void FSenseGloveConnectImplModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveConnectImpl module..."); + SGLOG(FString::Printf(TEXT("The low-level implementation of '%s' has been loaded successfully!"), *FSGConnectImpl:: + GetLibraryVersion())); +} + +void FSenseGloveConnectImplModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveConnectImpl module..."); +} + +void FSenseGloveConnectImplModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveConnectImpl module has succeeded!"); +} + +void FSenseGloveConnectImplModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveConnectImpl module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.h b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.h new file mode 100644 index 0000000..ee41aaf --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Private/SenseGloveConnectImplModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveConnectImpl" + +class FSenseGloveConnectImplModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGConnectImpl.h b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGConnectImpl.h new file mode 100644 index 0000000..0316cbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGConnectImpl.h @@ -0,0 +1,72 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +class SENSEGLOVECONNECTIMPL_API FSGConnectImpl +{ +public: + /** + * Begin Scanning for Sense Glove Devices and set up communications with them. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Device Scanning is already running within a different program. + * -1 : Device Scanning already being initialized (function called twice in short succession). + * 0 : Device Scanning is already running within this program. + * 1 : Successfully started up DeviceScanning from the current program. + */ + static int32 Init(); + + /** + * Dispose of unmanaged resources and finalize Sense Glove devices. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Not allowed to dispose of Device Scanning because this is not the program which started it. + * -1 : Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession). + * 0 : There is no deviceScanner running from any program, so disposing is skipped. + * 1 : Successfully disposed of DeviceScanner resources. + * @remark If the Dispose function returns 1, the resources were neatly disposed of. Only a value of -3 is cause for concern. + */ + static int32 Dispose(); + + /** + * Check which version of SGConnect you are using. + */ + static FString GetLibraryVersion(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGExportedFunctions.h b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGExportedFunctions.h new file mode 100644 index 0000000..4ef95dc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/Public/SGConnectImpl/SGExportedFunctions.h @@ -0,0 +1,92 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +/* Defines a C++ like static_assert. */ +#if ! __cplusplus +#include +#endif /* ! __cplusplus */ + +/* Contains __bool_true_false_are_defined macro that can be used in order to + check whether boolean type is supported by the compiler or not. */ +#include + +#include "CoreTypes.h" + +/* Check at compile time whether the C compiler has support for bool, true, + and false macros. */ +static_assert(__bool_true_false_are_defined, "Error: bool, true, and false are not defined!"); + +#if defined ( SENSEGLOVE_BUILDING_CONNECT_IMPL_MODULE ) +#define SENSEGLOVECONNECTIMPL_PUBLIC_API DLLEXPORT +#else +#define SENSEGLOVECONNECTIMPL_PUBLIC_API DLLIMPORT +#endif /* defined ( SENSEGLOVE_BUILDING_CONNECT_IMPL_MODULE ) */ + +/* If C++ is used, switch to C mode in order to prevent the C++ name mangling of + method names. */ +#if __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/******************************************************************************* + * Exceptional function calls + ******************************************************************************/ + +#if PLATFORM_ANDROID +SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnectImpl_Android_Initialize( + void* InEnv, + void* InClass, + void* InInitMethodID, + void* InDisposeMethodID, + void* InGetLibraryVersionMethodID, + void* StoragePath); +#endif /* PLATFORM_ANDROID */ + +/******************************************************************************* + * SGConnectImpl.h + ******************************************************************************/ + +SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnect_Init(); +SENSEGLOVECONNECTIMPL_PUBLIC_API int32 SGConnect_Dispose(); +SENSEGLOVECONNECTIMPL_PUBLIC_API void SGConnect_GetLibraryVersion(void* OutVersion); + +/******************************************************************************* + ******************************************************************************/ + +#if __cplusplus +} +#endif /* __cplusplus */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectImpl/SenseGloveConnectImpl.Build.cs b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/SenseGloveConnectImpl.Build.cs new file mode 100644 index 0000000..be34b2d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectImpl/SenseGloveConnectImpl.Build.cs @@ -0,0 +1,323 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using UnrealBuildTool; + +public class SenseGloveConnectImpl : ModuleRules +{ + public SenseGloveConnectImpl(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + bEnableExceptions = true; + bUseRTTI = true; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveUtils", + "SenseGloveTypes", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + "SenseGloveInterop", + } + ); + + AddConnectLibrary(Target); + AddSerialLibrary(Target); + + PublicDefinitions.Add("SENSEGLOVE_BUILDING_CONNECT_IMPL_MODULE"); + PublicDefinitions.Add("SENSEGLOVE_UNREAL_ENGINE_PLUGIN"); + } + + private void AddConnectLibrary(ReadOnlyTargetRules Target) + { + string PluginRootDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..")); + string SourceDirectory = Path.GetFullPath(Path.Combine(PluginRootDirectory, "Source")); + string ThirdPartyDirectory = Path.GetFullPath(Path.Combine(SourceDirectory, "ThirdParty")); + string LibraryPath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "lib")); + string LibraryPathAnroidArm64 = ""; + string LibraryPathAnroidx64 = ""; + string LibraryName = "sgconnect"; + + bool bIsAndroid = Target.IsInPlatformGroup(UnrealPlatformGroup.Android); + bool bIsLinux = Target.Platform == UnrealTargetPlatform.Linux; + bool bIsLinuxArm64 = Target.Platform == UnrealTargetPlatform.LinuxArm64; + bool bIsWin64 = Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) && + Target.WindowsPlatform.Architecture == UnrealArch.X64; + bool bIsDebugBuild = (Target.Configuration == UnrealTargetConfiguration.Debug); + + if (bIsAndroid) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android")); + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r25b")); + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPath, "arm64")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPath, "x64")); + + LibraryName = string.Format("lib{0}.a", LibraryName); + } + else if (bIsLinux) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "x86-64")); + } + else if (bIsLinuxArm64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "aarch64")); + } + else if (bIsWin64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "win64")); + switch (Target.WindowsPlatform.Compiler) + { + case WindowsCompiler.VisualStudio2022: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc143")); + break; +#if ! UE_5_4_OR_LATER + case WindowsCompiler.VisualStudio2019: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc142")); + break; +#endif + default: + Debug.Assert(false, "Unsupported engine version or compiler!"); + break; + } + + LibraryName = string.Format("{0}.lib", LibraryName); + } + else + { + Debug.Assert(false, "Unsupported platform!"); + } + + string IncludePath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "include")); + PrivateIncludePaths.Add(IncludePath); + + if (bIsAndroid) + { + if (bIsDebugBuild) + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "debug")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "debug")); + } + else + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "release")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "release")); + } + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, LibraryName)); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, LibraryName)); + + PublicAdditionalLibraries.Add(LibraryPathAnroidArm64); + PublicAdditionalLibraries.Add(LibraryPathAnroidx64); + } + else + { + if (bIsDebugBuild) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "debug")); + } + else + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "release")); + } + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, LibraryName)); + PublicAdditionalLibraries.Add(LibraryPath); + } + } + + private void AddSerialLibrary(ReadOnlyTargetRules Target) + { + string PluginRootDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..")); + string SourceDirectory = Path.GetFullPath(Path.Combine(PluginRootDirectory, "Source")); + string ThirdPartyDirectory = Path.GetFullPath(Path.Combine(SourceDirectory, "ThirdParty")); + string LibraryPath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "lib")); + string LibraryPathAnroidArm64 = ""; + string LibraryPathAnroidx64 = ""; + string LibraryName = "serial"; + + bool bIsAndroid = Target.IsInPlatformGroup(UnrealPlatformGroup.Android); + bool bIsLinux = Target.Platform == UnrealTargetPlatform.Linux; + bool bIsLinuxArm64 = Target.Platform == UnrealTargetPlatform.LinuxArm64; + bool bIsWin64 = Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) && + Target.WindowsPlatform.Architecture == UnrealArch.X64; + bool bIsDebugBuild = (Target.Configuration == UnrealTargetConfiguration.Debug); + + if (bIsAndroid) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android")); + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r25b")); + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPath, "arm64")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPath, "x64")); + + LibraryName = string.Format("lib{0}.a", LibraryName); + } + else if (bIsLinux) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "x86-64")); + } + else if (bIsLinuxArm64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "aarch64")); + } + else if (bIsWin64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "win64")); + switch (Target.WindowsPlatform.Compiler) + { + case WindowsCompiler.VisualStudio2022: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc143")); + break; +#if ! UE_5_4_OR_LATER + case WindowsCompiler.VisualStudio2019: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc142")); + break; +#endif + default: + Debug.Assert(false, "Unsupported engine version or compiler!"); + break; + } + + LibraryName = string.Format("{0}.lib", LibraryName); + } + else + { + Debug.Assert(false, "Unsupported platform!"); + } + + string IncludePath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "include")); + PrivateIncludePaths.Add(IncludePath); + + if (bIsAndroid) + { + if (bIsDebugBuild) + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "debug")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "debug")); + } + else + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "release")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "release")); + } + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, LibraryName)); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, LibraryName)); + + PublicAdditionalLibraries.Add(LibraryPathAnroidArm64); + PublicAdditionalLibraries.Add(LibraryPathAnroidx64); + } + else + { + if (bIsDebugBuild) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "debug")); + } + else + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "release")); + } + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, LibraryName)); + PublicAdditionalLibraries.Add(LibraryPath); + } + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SGConnectKismet/SGConnectKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SGConnectKismet/SGConnectKismetLibrary.cpp new file mode 100644 index 0000000..498be4a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SGConnectKismet/SGConnectKismetLibrary.cpp @@ -0,0 +1,53 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGConnectKismet/SGConnectKismetLibrary.h" + +#include "SGConnect/SGConnect.h" + +int32 USGConnectKismetLibrary::Init() +{ + return FSGConnect::Init(); +} + +int32 USGConnectKismetLibrary::Dispose() +{ + return FSGConnect::Dispose(); +} + +FString USGConnectKismetLibrary::GetLibraryVersion() +{ + return FSGConnect::GetLibraryVersion(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.cpp new file mode 100644 index 0000000..5004bd4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnectKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveConnectKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveConnectKismetModule, SenseGloveConnectKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.h b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.cpp new file mode 100644 index 0000000..c3b8ea6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveConnectKismetModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveConnectKismetModule" + +void FSenseGloveConnectKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveConnectKismet module..."); +} + +void FSenseGloveConnectKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveConnectKismet module..."); +} + +void FSenseGloveConnectKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveConnectKismet module has succeeded!"); +} + +void FSenseGloveConnectKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveConnectKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.h new file mode 100644 index 0000000..3b1fbaa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Private/SenseGloveConnectKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveConnectKismet" + +class FSenseGloveConnectKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Public/SGConnectKismet/SGConnectKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Public/SGConnectKismet/SGConnectKismetLibrary.h new file mode 100644 index 0000000..1fda0af --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/Public/SGConnectKismet/SGConnectKismetLibrary.h @@ -0,0 +1,84 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGConnectKismetLibrary.generated.h" + +UCLASS(meta=(ScriptName = "SenseGloveConnectKismetLibrary")) +class SENSEGLOVECONNECTKISMET_API USGConnectKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: +public: + /** + * Begin Scanning for Sense Glove Devices and set up communications with them. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Device Scanning is already running within a different program. + * -1 : Device Scanning already being initialized (function called twice in short succession). + * 0 : Device Scanning is already running in within this program. + * 1 : Successfully started up DeviceScanning from the current program. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Connect") + static int32 Init(); + + /** + * Dispose of unmanaged resources and finalize Sense Glove devices. + * + * @return + * -3 : An Unexpected error occured. Please try again. + * -2 : Not allowed to dispose of Device Scanning because this is not the program which started it. + * -1 : Device Scanning is currently being disposed off. This takes a second or two. (function called twice in short succession). + * 0 : There is no deviceScanner running from any program, so disposing is skipped. + * 1 : Successfully disposed of DeviceScanner resources. + * @remark If the Dispose function returns 1, the resources were neatly disposed of. Only a value of -3 is cause for concern. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Connect") + static int32 Dispose(); + + /** + * Check which version of SGConnect you are using. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Connect") + static FString GetLibraryVersion(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveConnectKismet/SenseGloveConnectKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/SenseGloveConnectKismet.Build.cs new file mode 100644 index 0000000..c3aee7b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveConnectKismet/SenseGloveConnectKismet.Build.cs @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveConnectKismet : ModuleRules +{ + public SenseGloveConnectKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveConnect", + "SenseGloveKismet", + "SenseGloveLog", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGAnatomy.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGAnatomy.cpp new file mode 100644 index 0000000..2512c7c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGAnatomy.cpp @@ -0,0 +1,113 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGAnatomy.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" + +float FSGAnatomy::GetTotalFingerFlexion() +{ + return SGCoreImpl_FSGAnatomyImpl_GetTotalFingerFlexion(); +} + +float FSGAnatomy::GetTotalFingerExtension() +{ + return SGCoreImpl_FSGAnatomyImpl_GetTotalFingerExtension(); +} + +float FSGAnatomy::GetTotalThumbFlexion() +{ + return SGCoreImpl_FSGAnatomyImpl_GetTotalThumbFlexion(); +} + +float FSGAnatomy::GetTotalThumbExtension() +{ + return SGCoreImpl_FSGAnatomyImpl_GetTotalThumbExtension(); +} + +float FSGAnatomy::GetFingerJointLimit(const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax) +{ + return SGCoreImpl_FSGAnatomyImpl_GetFingerJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float FSGAnatomy::GetThumbJointLimit(const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax) +{ + return SGCoreImpl_FSGAnatomyImpl_GetThumbJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float FSGAnatomy::ClampJointAngle( + const float Value, const int32 Finger, const bool bRightHand, const int32 Joint, const int32 Movement) +{ + return SGCoreImpl_FSGAnatomyImpl_ClampJointAngle(Value, Finger, bRightHand, Joint, Movement); +} + +float FSGAnatomy::NormalizeFingerFlexion(const float FlexionInDegrees) +{ + return SGCoreImpl_FSGAnatomyImpl_NormalizeFingerFlexion(FlexionInDegrees); +} + +float FSGAnatomy::NormalizeThumbFlexion(const float FlexionInDegrees) +{ + return SGCoreImpl_FSGAnatomyImpl_NormalizeThumbFlexion(FlexionInDegrees); +} + +TArray> FSGAnatomy::GetDefaultHandAngles(const bool bRightHanded) +{ + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGAnatomyImpl_GetDefaultHandAngles(&OutAnglesContainer, bRightHanded); + return OutAnglesContainer.Array; +} + +TArray> FSGAnatomy::GetFlatHandAngles(const bool bRightHanded) +{ + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGAnatomyImpl_GetFlatHandAngles(&OutAnglesContainer, bRightHanded); + return OutAnglesContainer.Array; +} + +TArray> FSGAnatomy::GetThumbsUpHandAngles(const bool bRightHanded) +{ + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGAnatomyImpl_GetThumbsUpHandAngles(&OutAnglesContainer, bRightHanded); + return OutAnglesContainer.Array; +} + +TArray> FSGAnatomy::GetFistHandAngles(const bool bRightHanded) +{ + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGAnatomyImpl_GetFistHandAngles(&OutAnglesContainer, bRightHanded); + return OutAnglesContainer.Array; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBasicHandModel.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBasicHandModel.cpp new file mode 100644 index 0000000..dd005ad --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBasicHandModel.cpp @@ -0,0 +1,568 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGBasicHandModel.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_float.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGBasicHandModel::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGBasicHandModelImpl BasicHandModelImpl; + + /************************ + * Owner object + ************************/ + + USGBasicHandModel* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGBasicHandModel* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const FSGBasicHandModelImpl& BasicHandModelImpl) +{ + USGBasicHandModel* Instance = NewObject(Outer); + Instance->SetBasicHandModelImpl(BasicHandModelImpl); + return Instance; +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + SGCoreImpl_FSGBasicHandModelImpl_ctor(&OutBasicHandModelImplContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray>& Lengths, + const TArray& StartPositions) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray& Lengths, + const TArray& StartPositions) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray>& Lengths, + const TArray& StartPositions, + const TArray& StartRotations) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray>& Lengths, + const TArray& StartPositions, + const TArray& StartRotations) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray& Lengths, + const TArray& StartPositions, + const TArray& StartRotations) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::NewBasicHandModel(UObject* Outer, const bool bRightHanded, + const TArray& Lengths, + const TArray& StartPositions, + const TArray& StartRotations) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::Default(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + SGCoreImpl_FSGBasicHandModelImpl_Default(&OutBasicHandModelImplContainer, bRightHanded); + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl)); +} + +USGBasicHandModel* USGBasicHandModel::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGBasicHandModelImpl_Deserialize(&OutBasicHandModelContainer, &SerializedStringContainer); + return NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelContainer.BasicHandModelImpl));; +} + +TArray> USGBasicHandModel::GetBaseFingerLengths() +{ + FSGIC_TArray_TArray_float OutLengthsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetBaseFingerLengths(&OutLengthsContainer); + return OutLengthsContainer.Array; +} + +TArray USGBasicHandModel::GetBaseJointPositions() +{ + FSGIC_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointPositions(&OutPositionsContainer); + return OutPositionsContainer.Array; +} + +TArray USGBasicHandModel::GetBaseJointAngles() +{ + FSGIC_TArray_FVector OutRotationsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointAngles(&OutRotationsContainer); + return OutRotationsContainer.Array; +} + +USGBasicHandModel::USGBasicHandModel() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + SGCoreImpl_FSGBasicHandModelImpl_ctor(&OutBasicHandModelImplContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, &StartPositionsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{Lengths}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelImplContainer; + FSGIC_TArray_TArray_float LengthsContainer{ + FSGArrayUtils::FromNestedBPArray(Lengths) + }; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + &OutBasicHandModelImplContainer, bRightHanded, &LengthsContainer, + &StartPositionsContainer, &StartRotationsContainer); + + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelImplContainer.BasicHandModelImpl); +} + +USGBasicHandModel::USGBasicHandModel(const FSGBasicHandModelImpl& BasicHandModelImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetBasicHandModelImpl(BasicHandModelImpl); +} + +USGBasicHandModel::~USGBasicHandModel() = default; + +void USGBasicHandModel::SetBasicHandModelImpl(const FSGBasicHandModelImpl& BasicHandModelImpl) +{ + FSGIC_FSGBasicHandModelImpl OutBasicHandModelContainer; + FSGIC_FSGBasicHandModelImpl RhsContainer{BasicHandModelImpl}; + SGCoreImpl_FSGBasicHandModelImpl_ctor_copy(&OutBasicHandModelContainer, &RhsContainer); + Pimpl->BasicHandModelImpl = MoveTemp(OutBasicHandModelContainer.BasicHandModelImpl); +} + +const FSGBasicHandModelImpl& USGBasicHandModel::ToBasicHandModelImpl() const +{ + return Pimpl->BasicHandModelImpl; +} + +FSGBasicHandModelImpl& USGBasicHandModel::ToBasicHandModelImpl() +{ + return Pimpl->BasicHandModelImpl; +} + +bool USGBasicHandModel::IsRight() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + return SGCoreImpl_FSGBasicHandModelImpl_IsRight(&InstanceContainer); +} + +TArray> USGBasicHandModel::GetFingerLengths() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_TArray_float OutLengthsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths(&InstanceContainer, &OutLengthsContainer); + return OutLengthsContainer.Array; +} + +TArray USGBasicHandModel::GetFingerLengths(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_float OutLengthsContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths_Finger(&InstanceContainer, &OutLengthsContainer, + &FingerContainer); + return OutLengthsContainer.Array; +} + +void USGBasicHandModel::SetFingerLengths(const ESGFinger Finger, const TArray& Lengths) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_TArray_float LengthsContainer{Lengths}; + SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_ESGFinger(&InstanceContainer, &FingerContainer, + &LengthsContainer); +} + +void USGBasicHandModel::SetFingerLengths(const uint8 Finger, const TArray& Lengths) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_float LengthsContainer{Lengths}; + SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_uint8Finger(&InstanceContainer, Finger, &LengthsContainer); +} + +TArray> USGBasicHandModel::GetFingerRatios() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_TArray_float OutRatiosContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios(&InstanceContainer, &OutRatiosContainer); + return OutRatiosContainer.Array; +} + +TArray USGBasicHandModel::GetFingerRatios(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_TArray_float OutRatiosContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios_Finger(&InstanceContainer, &OutRatiosContainer, + &FingerContainer); + return OutRatiosContainer.Array; +} + +TArray USGBasicHandModel::GetStartJointPositions() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetStartJointPositions(&InstanceContainer, &OutPositionsContainer); + return OutPositionsContainer.Array; +} + +void USGBasicHandModel::SetStartJointPosition(const ESGFinger Finger, const FVector& Position) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_FVector PositionContainer{Position}; + SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_ESGFinger(&InstanceContainer, &FingerContainer, + &PositionContainer); +} + +void USGBasicHandModel::SetStartJointPosition(const uint8 Finger, const FVector& Position) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FVector PositionContainer{Position}; + SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_uin8Finger(&InstanceContainer, Finger, &PositionContainer); +} + +TArray USGBasicHandModel::GetStartJointRotationsQ() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetStartJointRotations(&InstanceContainer, &OutRotationsContainer); + return OutRotationsContainer.Array; +} + +TArray USGBasicHandModel::GetStartJointRotations() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetStartJointRotations(&InstanceContainer, &OutRotationsContainer); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +FVector USGBasicHandModel::GetJointPosition(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FVector OutPositionContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_GetJointPosition(&InstanceContainer, &OutPositionContainer, &FingerContainer); + return OutPositionContainer.Vector; +} + +void USGBasicHandModel::SetJointPosition(const FVector& NewPosition, const ESGFinger Finger) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FVector NewPositionContainer{NewPosition}; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_SetJointPosition(&InstanceContainer, &NewPositionContainer, &FingerContainer); +} + +FQuat USGBasicHandModel::GetJointRotationQ(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FQuat OutRotationContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer); + return OutRotationContainer.Quat; +} + +FRotator USGBasicHandModel::GetJointRotation(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FQuat OutRotationContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer); + return OutRotationContainer.Quat.Rotator(); +} + +void USGBasicHandModel::SetJointRotation(const FQuat& NewRotation, const ESGFinger Finger) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FQuat NewRotationContainer{NewRotation}; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation(&InstanceContainer, &NewRotationContainer, &FingerContainer); +} + +void USGBasicHandModel::SetJointRotation(const FRotator& NewRotation, const ESGFinger Finger) +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FQuat NewRotationContainer{NewRotation.Quaternion()}; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation(&InstanceContainer, &NewRotationContainer, &FingerContainer); +} + +TArray USGBasicHandModel::GetTotalLengths() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_float OutLengthsContainer; + SGCoreImpl_FSGBasicHandModelImpl_GetTotalLengths(&InstanceContainer, &OutLengthsContainer); + return OutLengthsContainer.Array; +} + +float USGBasicHandModel::GetTotalLength(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + return SGCoreImpl_FSGBasicHandModelImpl_GetTotalLength(&InstanceContainer, &FingerContainer); +} + +TArray USGBasicHandModel::Get3DLengths(const ESGFinger Finger) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_TArray_FVector OutLengthsContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGBasicHandModelImpl_Get3DLengths(&InstanceContainer, &OutLengthsContainer, + &FingerContainer); + return OutLengthsContainer.Array; +} + +bool USGBasicHandModel::Equals(const USGBasicHandModel* BasicHandModel) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FSGBasicHandModelImpl BasicHandModelContainer{BasicHandModel->ToBasicHandModelImpl()}; + return SGCoreImpl_FSGBasicHandModelImpl_Equals(&InstanceContainer, &BasicHandModelContainer); +} + +FString USGBasicHandModel::ToString() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGBasicHandModelImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGBasicHandModel::ToString(const bool bLengthsOnly) const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGBasicHandModelImpl_ToString_bLengthsOnly(&InstanceContainer, &OutStringContainer, bLengthsOnly); + return OutStringContainer.String; +} + +FString USGBasicHandModel::SGSerialize() const +{ + FSGIC_FSGBasicHandModelImpl InstanceContainer{ToBasicHandModelImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGBasicHandModelImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGBasicHandModel::FImpl::FImpl(USGBasicHandModel* InOwner) + : Owner(InOwner) +{ +} + +USGBasicHandModel::FImpl::~FImpl() = default; + +void USGBasicHandModel::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBetaDevice.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBetaDevice.cpp new file mode 100644 index 0000000..7be8add --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGBetaDevice.cpp @@ -0,0 +1,208 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGBetaDevice.h" + +#include "Engine/World.h" + +#include "SGCore/SGDeviceImplCast.h" +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h" + +USGBetaDevice* USGBetaDevice::NewBetaDevice(UObject* Outer, const FSGBetaDeviceImpl& BetaDeviceImpl) +{ + USGBetaDevice* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(BetaDeviceImpl); + return Instance; +} + +USGBetaDevice* USGBetaDevice::NewBetaDevice(UObject* Outer, TSharedRef BetaDeviceImpl) +{ + USGBetaDevice* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(MoveTemp(BetaDeviceImpl)); + return Instance; +} + +USGBetaDevice* USGBetaDevice::NewBetaDevice(UObject* Outer) +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer); + + return NewBetaDevice(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGBetaDevice* USGBetaDevice::NewBetaDevice(UObject* Outer, const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + FSGIC_FString ConstantsStringContainer{ConstantsString}; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_MakeShared( + &OutSharedPtrContainer, &ConstantsStringContainer, &DeviceIdContainer, + &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + + return NewBetaDevice(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGBetaDevice* USGBetaDevice::Parse(UObject* Outer, const FString& String) +{ + FSGIC_FString StringContainer{String}; + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + SGCoreImpl_FSGBetaDeviceImpl_Parse(&OutSharedPtrContainer, &StringContainer); + + return NewBetaDevice(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGBetaDevice::USGBetaDevice() + : USGDevice() +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGBetaDevice::USGBetaDevice(const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) + : USGDevice() +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + FSGIC_FString ConstantsStringContainer{ConstantsString}; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_MakeShared( + &OutSharedPtrContainer, &ConstantsStringContainer, &DeviceIdContainer, + &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGBetaDevice::USGBetaDevice(const FSGBetaDeviceImpl& BetaDeviceImpl) + : USGDevice(BetaDeviceImpl) +{ +} + +USGBetaDevice::USGBetaDevice(TSharedRef BetaDeviceImpl) + : USGDevice(MoveTemp(BetaDeviceImpl)) +{ +} + +USGBetaDevice::~USGBetaDevice() = default; + +TSharedRef USGBetaDevice::ToBetaDeviceImpl() const +{ + return FSGDeviceImplCast::ToBetaDeviceImpl(ToSGDeviceImpl()); +} + +ESGDeviceType USGBetaDevice::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +FString USGBetaDevice::GetDeviceId() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGBetaDevice::GetHardwareVersion() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString VersionContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetHardwareVersion(&InstanceContainer, &VersionContainer); + return VersionContainer.String; +} + +int32 USGBetaDevice::GetFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + return SGCoreImpl_FSGBetaDeviceImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGBetaDevice::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + return SGCoreImpl_FSGBetaDeviceImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +FString USGBetaDevice::GetConstantsString() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetConstantsString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGBetaDevice::GetSensorData() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString OutDataContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetSensorData(&InstanceContainer, &OutDataContainer); + return OutDataContainer.String; +} + +FString USGBetaDevice::GetLastCommand() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString OutCommandContainer; + SGCoreImpl_FSGBetaDeviceImpl_GetLastCommand(&InstanceContainer, &OutCommandContainer); + return OutCommandContainer.String; +} + +bool USGBetaDevice::SendHaptics(const FString& Command) const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString CommandContainer{Command}; + return SGCoreImpl_FSGBetaDeviceImpl_SendHaptics(&InstanceContainer, &CommandContainer); +} + +FString USGBetaDevice::ToString() const +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl InstanceContainer{ToBetaDeviceImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGBetaDeviceImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCore.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCore.cpp new file mode 100644 index 0000000..3b296c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCore.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGCore.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCustomWaveform.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCustomWaveform.cpp new file mode 100644 index 0000000..ee1ffd3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGCustomWaveform.cpp @@ -0,0 +1,340 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGCustomWaveform.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGWaveformType.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FString.h" + +struct USGCustomWaveform::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGCustomWaveformImpl CustomWaveformImpl; + + /************************ + * Owner object + ************************/ + + USGCustomWaveform* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGCustomWaveform* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGCustomWaveform* USGCustomWaveform::NewCustomWaveform(UObject* Outer, const FSGCustomWaveformImpl& CustomWaveformImpl) +{ + USGCustomWaveform* Instance = NewObject(Outer); + Instance->SetCustomWaveformImpl(CustomWaveformImpl); + return Instance; +} + +USGCustomWaveform* USGCustomWaveform::NewCustomWaveform(UObject* Outer) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor(&OutCustomWaveformImplContainer); + + return NewCustomWaveform(Outer, MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl)); +} + +USGCustomWaveform* USGCustomWaveform::NewCustomWaveform(UObject* Outer, const float Amplitude, const float Duration) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration( + &OutCustomWaveformImplContainer, Amplitude, Duration); + + return NewCustomWaveform(Outer, MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl)); +} + +USGCustomWaveform* USGCustomWaveform::NewCustomWaveform( + UObject* Outer, const float Amplitude, const float Duration, const float Frequency) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration_Frequency( + &OutCustomWaveformImplContainer, Amplitude, Duration, Frequency); + + return NewCustomWaveform(Outer, MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl)); +} + +FString USGCustomWaveform::ToString(const ESGWaveformType Type) +{ + FSGIC_ESGWaveformType TypeContainer{Type}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGCustomWaveformImpl_ToString_Type(&OutStringContainer, &TypeContainer); + return OutStringContainer.String; +} + +USGCustomWaveform::USGCustomWaveform() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor(&OutCustomWaveformImplContainer); + + Pimpl->CustomWaveformImpl = MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl); +} + +USGCustomWaveform::USGCustomWaveform(const float Amplitude, const float Duration) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration( + &OutCustomWaveformImplContainer, Amplitude, Duration); + + Pimpl->CustomWaveformImpl = MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl); +} + +USGCustomWaveform::USGCustomWaveform(const float Amplitude, const float Duration, const float Frequency) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformImplContainer; + SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration_Frequency( + &OutCustomWaveformImplContainer, Amplitude, Duration, Frequency); + + Pimpl->CustomWaveformImpl = MoveTemp(OutCustomWaveformImplContainer.CustomWaveformImpl); +} + +USGCustomWaveform::USGCustomWaveform(const FSGCustomWaveformImpl& CustomWaveformImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetCustomWaveformImpl(CustomWaveformImpl); +} + +USGCustomWaveform::~USGCustomWaveform() = default; + +void USGCustomWaveform::SetCustomWaveformImpl(const FSGCustomWaveformImpl& CustomWaveformImpl) +{ + FSGIC_FSGCustomWaveformImpl OutCustomWaveformContainer; + FSGIC_FSGCustomWaveformImpl RhsContainer{CustomWaveformImpl}; + SGCoreImpl_FSGCustomWaveformImpl_ctor_copy(&OutCustomWaveformContainer, &RhsContainer); + Pimpl->CustomWaveformImpl = MoveTemp(OutCustomWaveformContainer.CustomWaveformImpl); +} + +const FSGCustomWaveformImpl& USGCustomWaveform::ToCustomWaveformImpl() const +{ + return Pimpl->CustomWaveformImpl; +} + +float USGCustomWaveform::GetAmplitude() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetAmplitude(&InstanceContainer); +} + +void USGCustomWaveform::SetAmplitude(const float Amplitude) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetAmplitude(&InstanceContainer, Amplitude); +} + +ESGWaveformType USGCustomWaveform::GetWaveType() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + FSGIC_ESGWaveformType OutTypeContainer; + SGCoreImpl_FSGCustomWaveformImpl_GetWaveType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +void USGCustomWaveform::SetWaveType(const ESGWaveformType Type) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + FSGIC_ESGWaveformType TypeContainer{Type}; + SGCoreImpl_FSGCustomWaveformImpl_SetWaveType(&InstanceContainer, &TypeContainer); +} + +bool USGCustomWaveform::IsInfinite() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_IsInfinite(&InstanceContainer); +} + +void USGCustomWaveform::SetInfinite(const bool bInfinite) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetInfinite(&InstanceContainer, bInfinite); +} + +int32 USGCustomWaveform::GetRepeatAmount() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetRepeatAmount(&InstanceContainer); +} + +void USGCustomWaveform::SetRepeatAmount(const int32 Amount) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetRepeatAmount(&InstanceContainer, Amount); +} + +float USGCustomWaveform::GetAttackTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetAttackTime(&InstanceContainer); +} + +void USGCustomWaveform::SetAttackTime(const float Time) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetAttackTime(&InstanceContainer, Time); +} + +float USGCustomWaveform::GetSustainTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetSustainTime(&InstanceContainer); +} + +void USGCustomWaveform::SetSustainTime(const float Time) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetSustainTime(&InstanceContainer, Time); +} + +float USGCustomWaveform::GetDecayTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetDecayTime(&InstanceContainer); +} + +void USGCustomWaveform::SetDecayTime(const float Time) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetDecayTime(&InstanceContainer, Time); +} + +float USGCustomWaveform::GetFrequencyStart() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyStart(&InstanceContainer); +} + +void USGCustomWaveform::SetFrequencyStart(const float Frequency) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyStart(&InstanceContainer, Frequency); +} + +float USGCustomWaveform::GetFrequencyEnd() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyEnd(&InstanceContainer); +} + +void USGCustomWaveform::SetFrequencyEnd(const float Frequency) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyEnd(&InstanceContainer, Frequency); +} + +float USGCustomWaveform::GetFrequencySwitchTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchTime(&InstanceContainer); +} + +void USGCustomWaveform::SetFrequencySwitchTime(const float Time) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchTime(&InstanceContainer, Time); +} + +float USGCustomWaveform::GetFrequencySwitchFactor() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchFactor(&InstanceContainer); +} + +void USGCustomWaveform::SetFrequencySwitchFactor(const float Time) +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchFactor(&InstanceContainer, Time); +} + +float USGCustomWaveform::GetEffectTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetEffectTime(&InstanceContainer); +} + +float USGCustomWaveform::GetTotalEffectTime() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_GetTotalEffectTime(&InstanceContainer); +} + +bool USGCustomWaveform::FrequencyJumps() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_FrequencyJumps(&InstanceContainer); +} + +bool USGCustomWaveform::Equals(const USGCustomWaveform* CustomWaveform) const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + FSGIC_FSGCustomWaveformImpl CustomWaveformContainer{CustomWaveform->ToCustomWaveformImpl()}; + return SGCoreImpl_FSGCustomWaveformImpl_Equals(&InstanceContainer, &CustomWaveformContainer); +} + +FString USGCustomWaveform::ToString() const +{ + FSGIC_FSGCustomWaveformImpl InstanceContainer{ToCustomWaveformImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGCustomWaveformImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGCustomWaveform::FImpl::FImpl(USGCustomWaveform* InOwner) + : Owner(InOwner) +{ +} + +USGCustomWaveform::FImpl::~FImpl() = default; + +void USGCustomWaveform::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp new file mode 100644 index 0000000..234f918 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDevice.cpp @@ -0,0 +1,556 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGDevice.h" + +#include "SGDeviceImplCast.h" +#include "Engine/Engine.h" + +#include "SGCore/SGBetaDevice.h" +#include "SGCore/SGHapticChannelInfo.h" +#include "SGCore/SGHapticGlove.h" +#include "SGCore/SGNova2Glove.h" +#include "SGCore/SGNovaGlove.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGHapticChannelInfoImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGConnectionType.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGHapticChannelType.h" +#include "SGInterop/SGIC_FSGBetaDeviceImpl.h" +#include "SGInterop/SGIC_FSGDeviceImpl.h" +#include "SGInterop/SGIC_FSGHapticChannelInfoImpl.h" +#include "SGInterop/SGIC_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h" + +struct USGDevice::FImpl +{ + /************************ + * Member variables + ************************/ + + TSharedPtr SGDeviceImpl; + + /************************ + * Owner object + ************************/ + + USGDevice* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGDevice* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +void USGDevice::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + FSGIC_FString RawFirmwareContainer{RawFirmware}; + SGCoreImpl_FSGDeviceImpl_ParseFirmware(&RawFirmwareContainer, &OutMainVersion, &OutSubVersion); +} + +bool USGDevice::FirmwareNewerThan( + const int32 MyFirmwareMain, const int32 MyFirmwareSub, const int32 ReferenceMain, const int32 ReferenceSub, + const bool bInclusive) +{ + return + SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +bool USGDevice::FirmwareOlderThan( + const int32 MyFirmwareMain, const int32 MyFirmwareSub, const int32 ReferenceMain, const int32 ReferenceSub, + const bool bInclusive) +{ + return + SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +FString USGDevice::ToString(const ESGDeviceType DeviceType) +{ + FSGIC_ESGDeviceType DeviceTypeContainer{DeviceType}; + FSGIC_FString OutString; + SGCoreImpl_FSGDeviceImpl_ToString(&DeviceTypeContainer, &OutString); + return OutString.String; +} + +USGDevice::USGDevice() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGDeviceImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGDeviceImpl& SGDeviceImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGDeviceImpl OutSharedPtrContainer; + FSGIC_FSGDeviceImpl RhsContainer{SGDeviceImpl}; + SGCoreImpl_FSGDeviceImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGBetaDeviceImpl& BetaDeviceImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + FSGIC_FSGBetaDeviceImpl RhsContainer{BetaDeviceImpl}; + SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGHapticGloveImpl& HapticGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer; + FSGIC_FSGHapticGloveImpl RhsContainer{HapticGloveImpl}; + SGCoreImpl_FSGHapticGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGNova2GloveImpl& Nova2GloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + FSGIC_FSGNova2GloveImpl RhsContainer{Nova2GloveImpl}; + SGCoreImpl_FSGNova2GloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGNovaGloveImpl& NovaGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveImpl RhsContainer{NovaGloveImpl}; + SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(const FSGSenseGloveImpl& SenseGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + FSGIC_FSGSenseGloveImpl RhsContainer{SenseGloveImpl}; + SGCoreImpl_FSGSenseGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +USGDevice::USGDevice(TSharedRef SGDeviceImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(SGDeviceImpl); +} + +USGDevice::USGDevice(TSharedRef BetaDeviceImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(BetaDeviceImpl); +} + +USGDevice::USGDevice(TSharedRef HapticGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(HapticGloveImpl); +} + +USGDevice::USGDevice(TSharedRef Nova2GloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(Nova2GloveImpl); +} + +USGDevice::USGDevice(TSharedRef NovaGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(NovaGloveImpl); +} + +USGDevice::USGDevice(TSharedRef SenseGloveImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SGDeviceImpl = MoveTemp(SenseGloveImpl); +} + +USGDevice::~USGDevice() = default; + +void USGDevice::SetSGDeviceImpl(const FSGDeviceImpl& SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl OutSharedPtrContainer; + FSGIC_FSGDeviceImpl RhsContainer{SGDeviceImpl}; + SGCoreImpl_FSGDeviceImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(const FSGBetaDeviceImpl& BetaDeviceImpl) +{ + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + FSGIC_FSGBetaDeviceImpl RhsContainer{BetaDeviceImpl}; + SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(const FSGHapticGloveImpl& HapticGloveImpl) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer; + FSGIC_FSGHapticGloveImpl RhsContainer{HapticGloveImpl}; + SGCoreImpl_FSGHapticGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(const FSGNova2GloveImpl& Nova2GloveImpl) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + FSGIC_FSGNova2GloveImpl RhsContainer{Nova2GloveImpl}; + SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(const FSGNovaGloveImpl& NovaGloveImpl) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveImpl RhsContainer{NovaGloveImpl}; + SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(const FSGSenseGloveImpl& SenseGloveImpl) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + FSGIC_FSGSenseGloveImpl RhsContainer{SenseGloveImpl}; + SGCoreImpl_FSGSenseGloveImpl_ctor_copy_MakeShared(&OutSharedPtrContainer, &RhsContainer); + Pimpl->SGDeviceImpl = MoveTemp(OutSharedPtrContainer.Ptr); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef SGDeviceImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(SGDeviceImpl); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef BetaDeviceImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(BetaDeviceImpl); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef HapticGloveImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(HapticGloveImpl); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef Nova2GloveImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(Nova2GloveImpl); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef NovaGloveImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(NovaGloveImpl); +} + +void USGDevice::SetSGDeviceImpl(TSharedRef SenseGloveImpl) +{ + Pimpl->SGDeviceImpl = MoveTemp(SenseGloveImpl); +} + +TSharedRef USGDevice::ToSGDeviceImpl() const +{ + return Pimpl->SGDeviceImpl.ToSharedRef(); +} + +bool USGDevice::IsABetaDevice() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsABetaDevice(&InstanceContainer); +} + +bool USGDevice::IsAHapticGlove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsAHapticGlove(&InstanceContainer); +} + +bool USGDevice::IsANova2Glove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsANova2Glove(&InstanceContainer); +} + +bool USGDevice::IsANovaGlove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsANovaGlove(&InstanceContainer); +} + +bool USGDevice::IsASenseGlove() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsASenseGlove(&InstanceContainer); +} + +USGBetaDevice* USGDevice::AsBetaDevice(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtr; + SGCoreImpl_FSGDeviceImpl_AsBetaDevice(&InstanceContainer, &OutSharedPtr); + + USGBetaDevice* BetaDevice = NewObject(Outer); + BetaDevice->SetSGDeviceImpl(OutSharedPtr.Ptr.ToSharedRef()); + return BetaDevice; +} + +USGHapticGlove* USGDevice::AsHapticGlove(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtr; + SGCoreImpl_FSGDeviceImpl_AsHapticGlove(&InstanceContainer, &OutSharedPtr); + + USGHapticGlove* HapticGlove = NewObject(Outer); + HapticGlove->SetSGDeviceImpl(OutSharedPtr.Ptr.ToSharedRef()); + return HapticGlove; +} + +USGNova2Glove* USGDevice::AsNova2Glove(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtr; + SGCoreImpl_FSGDeviceImpl_AsNova2Glove(&InstanceContainer, &OutSharedPtr); + + USGNova2Glove* Nova2Glove = NewObject(Outer); + Nova2Glove->SetSGDeviceImpl(OutSharedPtr.Ptr.ToSharedRef()); + return Nova2Glove; +} + +USGNovaGlove* USGDevice::AsNovaGlove(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtr; + SGCoreImpl_FSGDeviceImpl_AsNovaGlove(&InstanceContainer, &OutSharedPtr); + + USGNovaGlove* NovaGlove = NewObject(Outer); + NovaGlove->SetSGDeviceImpl(OutSharedPtr.Ptr.ToSharedRef()); + return NovaGlove; +} + +USGSenseGlove* USGDevice::AsSenseGlove(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtr; + SGCoreImpl_FSGDeviceImpl_AsSenseGlove(&InstanceContainer, &OutSharedPtr); + + USGSenseGlove* SenseGlove = NewObject(Outer); + SenseGlove->SetSGDeviceImpl(OutSharedPtr.Ptr.ToSharedRef()); + return SenseGlove; +} + +ESGDeviceType USGDevice::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGDeviceImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +int32 USGDevice::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +FString USGDevice::GetFirmwareString() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGDeviceImpl_GetFirmwareString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +bool USGDevice::FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + &InstanceContainer, FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGDevice::FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + &InstanceContainer, FirmwareMain, FirmwareSub, bInclusive); +} + +FString USGDevice::GetAddress() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_FString AddressContainer; + SGCoreImpl_FSGDeviceImpl_GetAddress(&InstanceContainer, &AddressContainer); + return AddressContainer.String; +} + +bool USGDevice::IsConnected() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsConnected(&InstanceContainer); +} + +ESGConnectionType USGDevice::GetConnectionType() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_ESGConnectionType OutTypeContainer; + SGCoreImpl_FSGDeviceImpl_GetConnectionType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +int32 USGDevice::PacketsPerSecondReceived() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_PacketsPerSecondReceived(&InstanceContainer); +} + +int32 USGDevice::PacketsPerSecondSent() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_PacketsPerSecondSent(&InstanceContainer); +} + +int32 USGDevice::GetDeviceIndex() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_GetDeviceIndex(&InstanceContainer); +} + +void USGDevice::SetDeviceIndex(const int32 NewIndex) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + SGCoreImpl_FSGDeviceImpl_SetDeviceIndex(&InstanceContainer, NewIndex); +} + +bool USGDevice::IsWireless() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_IsWireless(&InstanceContainer); +} + +bool USGDevice::HasBattery() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_HasBattery(&InstanceContainer); +} + +bool USGDevice::IsCharging() +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + const bool bResult = SGCoreImpl_FSGDeviceImpl_IsCharging(&InstanceContainer); + + return bResult; +} + +bool USGDevice::GetBatteryLevel(float& OutLevel) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + const bool bResult = SGCoreImpl_FSGDeviceImpl_GetBatteryLevel(&InstanceContainer, &OutLevel); + return bResult; +} + +void USGDevice::SetHapticChannels(const USGHapticChannelInfo* Channels) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_FSGHapticChannelInfoImpl ChannelsContainer{Channels->ToHapticChannelInfoImpl()}; + SGCoreImpl_FSGDeviceImpl_SetHapticChannels(&InstanceContainer, &ChannelsContainer); +} + +int32 USGDevice::GetHapticChannelCount() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + return SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount(&InstanceContainer); +} + +int32 USGDevice::GetHapticChannelCount(ESGHapticChannelType ChannelType) const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_ESGHapticChannelType ChannelTypeContainer{ChannelType}; + return SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount_ChannelType(&InstanceContainer, &ChannelTypeContainer); +} + +FString USGDevice::ToString() const +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{ToSGDeviceImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGDeviceImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGDevice::FImpl::FImpl(USGDevice* InOwner) + : Owner(InOwner) +{ +} + +USGDevice::FImpl::~FImpl() = default; + +void USGDevice::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.cpp new file mode 100644 index 0000000..82f68bc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.cpp @@ -0,0 +1,90 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGDeviceImplCast.h" + +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h" + +TSharedRef FSGDeviceImplCast::ToBetaDeviceImpl(TSharedRef SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{MoveTemp(SGDeviceImpl)}; + FSGIC_TSharedPtr_FSGBetaDeviceImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ToBetaDeviceImplRef(&InstanceContainer, &OutSharedPtrContainer); + return OutSharedPtrContainer.Ptr.ToSharedRef(); +} + +TSharedRef FSGDeviceImplCast::ToHapticGloveImpl(TSharedRef SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{MoveTemp(SGDeviceImpl)}; + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ToHapticGloveImplRef(&InstanceContainer, &OutSharedPtrContainer); + return OutSharedPtrContainer.Ptr.ToSharedRef(); +} + +TSharedRef FSGDeviceImplCast::ToNova2GloveImpl(TSharedRef SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{MoveTemp(SGDeviceImpl)}; + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ToNova2GloveImplRef(&InstanceContainer, &OutSharedPtrContainer); + return OutSharedPtrContainer.Ptr.ToSharedRef(); +} + +TSharedRef FSGDeviceImplCast::ToNovaGloveImpl(TSharedRef SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{MoveTemp(SGDeviceImpl)}; + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ToNovaGloveImplRef(&InstanceContainer, &OutSharedPtrContainer); + return OutSharedPtrContainer.Ptr.ToSharedRef(); +} + +TSharedRef FSGDeviceImplCast::ToSenseGloveImpl(TSharedRef SGDeviceImpl) +{ + FSGIC_TSharedPtr_FSGDeviceImpl InstanceContainer{MoveTemp(SGDeviceImpl)}; + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef(&InstanceContainer, &OutSharedPtrContainer); + return OutSharedPtrContainer.Ptr.ToSharedRef(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.h b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.h new file mode 100644 index 0000000..5374fc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceImplCast.h @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Templates/SharedPointer.h" + +class FSGBetaDeviceImpl; +class FSGDeviceImpl; +class FSGHapticGloveImpl; +class FSGNova2GloveImpl; +class FSGNovaGloveImpl; +class FSGSenseGloveImpl; + +class SENSEGLOVECORE_API FSGDeviceImplCast +{ +public: + static TSharedRef ToBetaDeviceImpl(TSharedRef SGDeviceImpl); + + static TSharedRef ToHapticGloveImpl(TSharedRef SGDeviceImpl); + + static TSharedRef ToNova2GloveImpl(TSharedRef SGDeviceImpl); + + static TSharedRef ToNovaGloveImpl(TSharedRef SGDeviceImpl); + + static TSharedRef ToSenseGloveImpl(TSharedRef SGDeviceImpl); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceList.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceList.cpp new file mode 100644 index 0000000..3f62b2a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceList.cpp @@ -0,0 +1,225 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGDeviceList.h" + +#include "Templates/SubclassOf.h" + +#include "SGCore/SGBetaDevice.h" +#include "SGCore/SGDevice.h" +#include "SGCore/SGDeviceImplCast.h" +#include "SGCore/SGNova2Glove.h" +#include "SGCore/SGNovaGlove.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGConnectionType.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h" + +int32 FSGDeviceList::ActiveDevices() +{ + return SGCoreImpl_FSGDeviceListImpl_ActiveDevices(); +} + +bool FSGDeviceList::SenseCommRunning() +{ + return SGCoreImpl_FSGDeviceListImpl_SenseCommRunning(); +} + +void FSGDeviceList::Dispose() +{ + SGCoreImpl_FSGDeviceListImpl_Dispose(); +} + +void FSGDeviceList::Reinitialize() +{ + SGCoreImpl_FSGDeviceListImpl_Reinitialize(); +} + +TArray FSGDeviceList::GetDevices(UObject* Outer) +{ + FSGIC_TArray_TSharedRef_FSGDeviceListImpl DeviceImplsArrayContainer; + SGCoreImpl_FSGDeviceListImpl_GetDevices(&DeviceImplsArrayContainer); + + TArray Devices; + + for (TSharedRef DeviceImpl: DeviceImplsArrayContainer.Array) + { + FSGIC_TSharedPtr_FSGDeviceImpl DeviceImplContainer{DeviceImpl}; + FSGIC_ESGDeviceType DeviceTypeContainer; + SGCoreImpl_FSGDeviceImpl_GetDeviceType(&DeviceImplContainer, &DeviceTypeContainer); + switch (DeviceTypeContainer.Type) + { + case ESGDeviceType::BetaDevice: + { + TSharedRef BetaDeviceImpl{FSGDeviceImplCast::ToBetaDeviceImpl(DeviceImpl)}; + USGBetaDevice* BetaDevice = USGBetaDevice::NewBetaDevice(Outer, MoveTemp(BetaDeviceImpl)); + Devices.Push(BetaDevice); + } + break; + case ESGDeviceType::Nova2: + { + TSharedRef Nova2GloveImpl{FSGDeviceImplCast::ToNova2GloveImpl(DeviceImpl)}; + USGNova2Glove* Nova2Glove = USGNova2Glove::NewNova2Glove(Outer, MoveTemp(Nova2GloveImpl)); + Devices.Push(Nova2Glove); + } + case ESGDeviceType::Nova: + { + TSharedRef NovaGloveImpl{FSGDeviceImplCast::ToNovaGloveImpl(DeviceImpl)}; + USGNovaGlove* NovaGlove = USGNovaGlove::NewNovaGlove(Outer, MoveTemp(NovaGloveImpl)); + Devices.Push(NovaGlove); + } + break; + case ESGDeviceType::SenseGlove: + { + TSharedRef SenseGloveImpl{FSGDeviceImplCast::ToSenseGloveImpl(DeviceImpl)}; + USGSenseGlove* SenseGlove = USGSenseGlove::NewSenseGlove(Outer, MoveTemp(SenseGloveImpl)); + Devices.Push(SenseGlove); + } + break; + default: + ensureAlwaysMsgf(false, TEXT("Unknown SenseGlove device!")); + break; + } + } + + return Devices; +} + +TArray FSGDeviceList::GetDevices(UObject* Outer, const TSubclassOf& DeviceType) +{ + ensureAlwaysMsgf(IsValid(DeviceType.GetDefaultObject()), TEXT("Invalid default object!")); + const UClass* ClassFilter = DeviceType->StaticClass(); + + const TArray CurrentDevices = GetDevices(Outer); + TArray Devices; + + for (USGDevice* Device: CurrentDevices) + { + ensureAlwaysMsgf(IsValid(Device), TEXT("Invalid device!")); + + const UClass* DeviceClass = Device->StaticClass(); + if (DeviceClass == ClassFilter) + { + Devices.Push(Device); + } + } + + return Devices; +} + +TArray FSGDeviceList::GetDevices(UObject* Outer, const ESGDeviceType DeviceType) +{ + const TArray CurrentDevices = GetDevices(Outer); + TArray Devices; + + for (USGDevice* Device: CurrentDevices) + { + ensureAlwaysMsgf(IsValid(Device), TEXT("Invalid device!")); + + if (Device->GetDeviceType() == DeviceType) + { + Devices.Push(Device); + } + } + + return Devices; +} + +bool FSGDeviceList::GetSensorDataString(const int32 IpcIndex, const FString& IpcAddress, FString& OutString) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + FSGIC_FString OutStringContainer; + const bool bReturn = SGCoreImpl_FSGDeviceListImpl_GetSensorDataString( + IpcIndex, &IpcAddressContainer, &OutStringContainer); + OutString = OutStringContainer.String; + return bReturn; +} + +bool FSGDeviceList::SendHaptics( + const int32 IpcIndex, const FString& IpcAddress, const int32 ChannelIndex, const FString& Commands) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + FSGIC_FString CommandsContainer{Commands}; + return SGCoreImpl_FSGDeviceListImpl_SendHaptics(IpcIndex, &IpcAddressContainer, ChannelIndex, &CommandsContainer); +} + +FString FSGDeviceList::GetDeviceStringAt(const int32 IpcIndex, const FString& IpcAddress, const int32 Index) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGDeviceListImpl_GetDeviceStringAt(&OutStringContainer, IpcIndex, &IpcAddressContainer, Index); + return OutStringContainer.String; +} + +FString FSGDeviceList::GetAddress(const int32 IpcIndex, const FString& IpcAddress) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGDeviceListImpl_GetAddress(&OutStringContainer, IpcIndex, &IpcAddressContainer); + return OutStringContainer.String; +} + +ESGConnectionType FSGDeviceList::GetConnectionType(const int32 IpcIndex, const FString& IpcAddress) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + FSGIC_ESGConnectionType OutTypeContainer; + SGCoreImpl_FSGDeviceListImpl_GetConnectionType(&OutTypeContainer, IpcIndex, &IpcAddressContainer); + return OutTypeContainer.Type; +} + +bool FSGDeviceList::IsConnected(const int32 IpcIndex, const FString& IpcAddress) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + return SGCoreImpl_FSGDeviceListImpl_IsConnected(IpcIndex, &IpcAddressContainer); +} + +int32 FSGDeviceList::PacketsPerSecondReceived(const int32 IpcIndex, const FString& IpcAddress) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + return SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondReceived(IpcIndex, &IpcAddressContainer); +} + +int32 FSGDeviceList::PacketsPerSecondSent(const int32 IpcIndex, const FString& IpcAddress) +{ + FSGIC_FString IpcAddressContainer{IpcAddress}; + return SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondSent(IpcIndex, &IpcAddressContainer); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceModel.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceModel.cpp new file mode 100644 index 0000000..f3eadb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGDeviceModel.cpp @@ -0,0 +1,215 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGDeviceModel.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FSGDeviceModelImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_bool.h" + +struct USGDeviceModel::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGDeviceModelImpl DeviceModelImpl; + + /************************ + * Owner object + ************************/ + + USGDeviceModel* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGDeviceModel* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGDeviceModel* USGDeviceModel::NewDeviceModel(UObject* Outer, const FSGDeviceModelImpl& DeviceModelImpl) +{ + USGDeviceModel* Instance = NewObject(Outer); + Instance->SetDeviceModelImpl(DeviceModelImpl); + return Instance; +} + +USGDeviceModel* USGDeviceModel::NewDeviceModel(UObject* Outer) +{ + FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer; + SGCoreImpl_FSGDeviceModelImpl_ctor(&OutDeviceModelImplContainer); + + return NewDeviceModel(Outer, MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl)); +} + +USGDeviceModel* USGDeviceModel::NewDeviceModel( + UObject* Outer, + const FString& Id, const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer; + FSGIC_FString IdContainer{Id}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGDeviceModelImpl_ctor_Id_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + &OutDeviceModelImplContainer, &IdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + + return NewDeviceModel(Outer, MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl)); +} + +TArray USGDeviceModel::ParseFunctions(const int32 Value, const int32 Size) +{ + FSGIC_TArray_bool OutParseFunctionsContainer; + SGCoreImpl_FSGDeviceModelImpl_ParseFunctions(&OutParseFunctionsContainer, Value, Size); + return OutParseFunctionsContainer.Array; +} + +void USGDeviceModel::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + FSGIC_FString RawFirmwareContainer{RawFirmware}; + SGCoreImpl_FSGDeviceModelImpl_ParseFirmware(&RawFirmwareContainer, &OutMainVersion, &OutSubVersion); +} + +USGDeviceModel::USGDeviceModel() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer; + SGCoreImpl_FSGDeviceModelImpl_ctor(&OutDeviceModelImplContainer); + + Pimpl->DeviceModelImpl = MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl); +} + +USGDeviceModel::USGDeviceModel(const FString& Id, const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGDeviceModelImpl OutDeviceModelImplContainer; + FSGIC_FString IdContainer{Id}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGDeviceModelImpl_ctor_Id_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + &OutDeviceModelImplContainer, &IdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + + Pimpl->DeviceModelImpl = MoveTemp(OutDeviceModelImplContainer.DeviceModelImpl); +} + +USGDeviceModel::USGDeviceModel(const FSGDeviceModelImpl& DeviceModelImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetDeviceModelImpl(DeviceModelImpl); +} + +USGDeviceModel::~USGDeviceModel() = default; + +void USGDeviceModel::SetDeviceModelImpl(const FSGDeviceModelImpl& DeviceModelImpl) +{ + FSGIC_FSGDeviceModelImpl OutDeviceModelContainer; + FSGIC_FSGDeviceModelImpl RhsContainer{DeviceModelImpl}; + SGCoreImpl_FSGDeviceModelImpl_ctor_copy(&OutDeviceModelContainer, &RhsContainer); + Pimpl->DeviceModelImpl = MoveTemp(OutDeviceModelContainer.DeviceModelImpl); +} + +const FSGDeviceModelImpl& USGDeviceModel::ToDeviceModelImpl() const +{ + return Pimpl->DeviceModelImpl; +} + +FSGDeviceModelImpl& USGDeviceModel::ToDeviceModelImpl() +{ + return Pimpl->DeviceModelImpl; +} + +FString USGDeviceModel::GetDeviceId() const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGDeviceModelImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGDeviceModel::GetHardwareVersion() const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGDeviceModelImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGDeviceModel::GetFirmwareVersion() const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + return SGCoreImpl_FSGDeviceModelImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGDeviceModel::GetSubFirmwareVersion() const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + return SGCoreImpl_FSGDeviceModelImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGDeviceModel::FirmwareNewerThan(const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + return SGCoreImpl_FSGDeviceModelImpl_FirmwareNewerThan( + &InstanceContainer, FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGDeviceModel::FirmwareOlderThan(const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) const +{ + FSGIC_FSGDeviceModelImpl InstanceContainer{ToDeviceModelImpl()}; + return SGCoreImpl_FSGDeviceModelImpl_FirmwareOlderThan( + &InstanceContainer, FirmwareMain, FirmwareSub, bInclusive); +} + +USGDeviceModel::FImpl::FImpl(USGDeviceModel* InOwner) + : Owner(InOwner) +{ +} + +USGDeviceModel::FImpl::~FImpl() = default; + +void USGDeviceModel::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandInterpolator.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandInterpolator.cpp new file mode 100644 index 0000000..0930186 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandInterpolator.cpp @@ -0,0 +1,220 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGHandInterpolator.h" + +#include "SGCore/SGInterpolationSet.h" +#include "SGCoreImpl/SGInterpolationSetImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGFingerMovement.h" +#include "SGInterop/SGIC_ESGThumbMovement.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_FSGInterpolationSetImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGHandInterpolator::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGHandInterpolatorImpl HandInterpolatorImpl; + + /************************ + * Owner object + ************************/ + + USGHandInterpolator* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGHandInterpolator* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGHandInterpolator* USGHandInterpolator::NewHandInterpolator( + UObject* Outer, const FSGHandInterpolatorImpl& HandInterpolatorImpl) +{ + USGHandInterpolator* Instance = NewObject(Outer); + Instance->SetHandInterpolatorImpl(HandInterpolatorImpl); + return Instance; +} + +USGHandInterpolator* USGHandInterpolator::NewHandInterpolator(UObject* Outer) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer; + SGCoreImpl_FSGHandInterpolatorImpl_ctor(&OutHandInterpolatorImplContainer); + + return NewHandInterpolator(Outer, MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl)); +} + +USGHandInterpolator* USGHandInterpolator::NewHandInterpolator(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer; + SGCoreImpl_FSGHandInterpolatorImpl_ctor_bRightHanded(&OutHandInterpolatorImplContainer, + bRightHanded); + + return NewHandInterpolator(Outer, MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl)); +} + +USGHandInterpolator* USGHandInterpolator::Deserialize(UObject* Outer, + const FString& SerializedString, const bool bRightHanded) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGHandInterpolatorImpl_Deserialize(&OutHandInterpolatorImplContainer, + &SerializedStringContainer, bRightHanded); + + return NewHandInterpolator(Outer, MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl)); +} + +USGHandInterpolator::USGHandInterpolator() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer; + SGCoreImpl_FSGHandInterpolatorImpl_ctor(&OutHandInterpolatorImplContainer); + + Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl); +} + +USGHandInterpolator::USGHandInterpolator(const bool bRightHanded) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorImplContainer; + SGCoreImpl_FSGHandInterpolatorImpl_ctor_bRightHanded(&OutHandInterpolatorImplContainer, + bRightHanded); + + Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorImplContainer.HandInterpolatorImpl); +} + +USGHandInterpolator::USGHandInterpolator(const FSGHandInterpolatorImpl& HandInterpolatorImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetHandInterpolatorImpl(HandInterpolatorImpl); +} + +USGHandInterpolator::~USGHandInterpolator() = default; + +void USGHandInterpolator::SetHandInterpolatorImpl(const FSGHandInterpolatorImpl& HandInterpolatorImpl) +{ + FSGIC_FSGHandInterpolatorImpl OutHandInterpolatorContainer; + FSGIC_FSGHandInterpolatorImpl RhsContainer{HandInterpolatorImpl}; + SGCoreImpl_FSGHandInterpolatorImpl_ctor_copy(&OutHandInterpolatorContainer, &RhsContainer); + Pimpl->HandInterpolatorImpl = MoveTemp(OutHandInterpolatorContainer.HandInterpolatorImpl); +} + +const FSGHandInterpolatorImpl& USGHandInterpolator::ToHandInterpolatorImpl() const +{ + return Pimpl->HandInterpolatorImpl; +} + +float USGHandInterpolator::CalculateAngle( + const ESGFingerMovement Movement, const float Value, const bool bApplyLimits) const +{ + FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()}; + FSGIC_ESGFingerMovement MovementContainer{Movement}; + const float Angle = SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGFingerMovement_Value_bApplyLimits( + &InstanceContainer, &MovementContainer, Value, bApplyLimits); + return Angle; +} + +float USGHandInterpolator::CalculateAngle( + const ESGThumbMovement Movement, const float Value, const bool bApplyLimits) const +{ + FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()}; + FSGIC_ESGThumbMovement MovementContainer{Movement}; + const float Angle = SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGThumbMovement_Value_bApplyLimits( + &InstanceContainer, &MovementContainer, Value, bApplyLimits); + return Angle; +} + +TArray> USGHandInterpolator::InterpolateHandAngles( + const TArray>& Flexions, const TArray& Abductions, const float CmcTwist) const +{ + FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()}; + FSGIC_TArray_TArray_FVector OutAnglesContainer; + FSGIC_TArray_TArray_float FlexionsContainer{Flexions}; + FSGIC_TArray_float AbductionsContainer{Abductions}; + SGCoreImpl_FSGHandInterpolatorImpl_InterpolateHandAngles( + &InstanceContainer, &OutAnglesContainer, &FlexionsContainer, &AbductionsContainer, CmcTwist); + return OutAnglesContainer.Array; +} + +bool USGHandInterpolator::Equals(const USGHandInterpolator* HandInterpolator) const +{ + FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()}; + FSGIC_FSGHandInterpolatorImpl HandInterpolatorContainer{HandInterpolator->ToHandInterpolatorImpl()}; + const bool bEquals = SGCoreImpl_FSGHandInterpolatorImpl_Equals(&InstanceContainer, &HandInterpolatorContainer); + return bEquals; +} + +FString USGHandInterpolator::SGSerialize() const +{ + FSGIC_FSGHandInterpolatorImpl InstanceContainer{ToHandInterpolatorImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHandInterpolatorImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGHandInterpolator::FImpl::FImpl(USGHandInterpolator* InOwner) + : Owner(InOwner) +{ +} + +USGHandInterpolator::FImpl::~FImpl() = default; + +void USGHandInterpolator::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp new file mode 100644 index 0000000..5998246 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandLayer.cpp @@ -0,0 +1,222 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGHandLayer.h" + +#include "SGCore/SGCustomWaveform.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGHapticGlove.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" + +bool FSGHandLayer::DeviceConnected(const bool bRightHanded) +{ + return SGCoreImpl_FSGHandLayerImpl_DeviceConnected(bRightHanded); +} + +ESGDeviceType FSGHandLayer::GetDeviceType(const bool bRightHanded) +{ + FSGIC_ESGDeviceType DeviceTypeContainer; + SGCoreImpl_FSGHandLayerImpl_GetDeviceType(&DeviceTypeContainer, bRightHanded); + return DeviceTypeContainer.Type; +} + +bool FSGHandLayer::GetFirstGloveHandedness() +{ + return SGCoreImpl_FSGHandLayerImpl_GetFirstGloveHandedness(); +} + +int32 FSGHandLayer::GlovesConnected() +{ + return SGCoreImpl_FSGHandLayerImpl_GlovesConnected(); +} + +bool FSGHandLayer::GetGloveInstance(UObject* Outer, const bool bRightHanded, USGHapticGlove*& OutGlove) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGHandLayerImpl_GetGloveInstance(bRightHanded, &OutGloveContainer); + OutGlove = USGHapticGlove::NewHapticGlove(Outer, OutGloveContainer.Ptr.ToSharedRef()); + return bResult; +} + +ESGHapticGloveCalibrationState FSGHandLayer::GetCalibrationState(const bool bRightHanded) +{ + FSGIC_ESGHapticGloveCalibrationState HapticGloveCalibrationStateContainer; + SGCoreImpl_FSGHandLayerImpl_GetDeviceType(&HapticGloveCalibrationStateContainer, bRightHanded); + return HapticGloveCalibrationStateContainer.State; +} + +FString FSGHandLayer::GetCalibrationInstructions(const bool bRightHanded) +{ + FSGIC_FString CalibrationInstructionsContainer; + SGCoreImpl_FSGHandLayerImpl_GetCalibrationInstructions(&CalibrationInstructionsContainer, bRightHanded); + return CalibrationInstructionsContainer.String; +} + +void FSGHandLayer::ResetCalibration(const bool bRightHanded) +{ + SGCoreImpl_FSGHandLayerImpl_ResetCalibration(bRightHanded); +} + +void FSGHandLayer::EndCalibration(const bool bRightHanded) +{ + SGCoreImpl_FSGHandLayerImpl_EndCalibration(bRightHanded); +} + +bool FSGHandLayer::GetHandPose(UObject* Outer, const bool bRightHanded, USGHandPose*& OutHandPose) +{ + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGHandLayerImpl_GetHandPose(bRightHanded, &OutHandPoseContainer); + OutHandPose = USGHandPose::NewHandPose(Outer, OutHandPose->ToHandPoseImpl()); + return bResult; +} + +void FSGHandLayer::GetWristLocation( + const bool bRightHanded, const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGHandLayerImpl_GetWristLocation( + bRightHanded, &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void FSGHandLayer::StopAllHaptics(const bool bRightHanded) +{ + SGCoreImpl_FSGHandLayerImpl_StopAllHaptics(bRightHanded); +} + +bool FSGHandLayer::SendHaptics(const bool bRightHanded) +{ + return SGCoreImpl_FSGHandLayerImpl_SendHaptics(bRightHanded); +} + +bool FSGHandLayer::SupportsCustomWaveform( + const bool bRightHanded, const ESGHapticLocation AtLocation) +{ + FSGIC_ESGHapticLocation AtLocationContainer{AtLocation}; + return SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform(bRightHanded, &AtLocationContainer); +} + +bool FSGHandLayer::SendCustomWaveform( + const bool bRightHanded, USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform(bRightHanded, &OutWaveformContainer, &LocationContainer); +} + +bool FSGHandLayer::QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( + bRightHanded, &Levels01Container, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_VibroLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels(bRightHanded, &Levels01Container, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_VibroLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( + bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_VibroLevel( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) +{ + FSGIC_ESGHapticLocation AtLocationContainer{AtLocation}; + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( + bRightHanded, &AtLocationContainer, Level01, bSendImmediate); +} + +bool FSGHandLayer::SupportsWristSqueeze(const bool bRightHanded) +{ + return SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze(bRightHanded); +} + +bool FSGHandLayer::QueueCommand_WristSqueeze( + const bool bRightHanded, const float SqueezeLevel01, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_WristSqueeze(bRightHanded, SqueezeLevel01, bSendImmediate); +} + +bool FSGHandLayer::SupportsFlexionLocks(const bool bRightHanded) +{ + return SGCoreImpl_FSGHandLayerImpl_SupportsFlexionLocks(bRightHanded); +} + +bool FSGHandLayer::QueueCommand_FlexionLock( + const bool bRightHanded, const int32 Finger, const float Flexion01, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_FlexionLock(bRightHanded, Finger, Flexion01, bSendImmediate); +} + +bool FSGHandLayer::QueueCommand_ClearFlexionLock( + const bool bRightHanded, const int32 Finger, const bool bSendImmediate) +{ + return SGCoreImpl_FSGHandLayerImpl_QueueCommand_ClearFlexionLock(bRightHanded, Finger, bSendImmediate); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandPose.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandPose.cpp new file mode 100644 index 0000000..ef7180b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHandPose.cpp @@ -0,0 +1,471 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGHandPose.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGTypes/SGRotatorArray.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGHandPose::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGHandPoseImpl HandPoseImpl; + + /************************ + * Owner object + ************************/ + + USGHandPose* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGHandPose* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGHandPose* USGHandPose::NewHandPose(UObject* Outer, const FSGHandPoseImpl& HandPoseImpl) +{ + USGHandPose* Instance = NewObject(Outer); + Instance->SetHandPoseImpl(HandPoseImpl); + return Instance; +} + +USGHandPose* USGHandPose::NewHandPose(UObject* Outer) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_ctor(&OutHandPoseImplContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::NewHandPose( + UObject* Outer, + const bool bRightHanded, const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{JointRotations}; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::NewHandPose( + UObject* Outer, + const bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{FSGArrayUtils::RotatorsToQuats(JointRotations)}; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::NewHandPose( + UObject* Outer, + const bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::FromNestedBPArray(JointRotations) + }; + FSGIC_TArray_TArray_FVector HandAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::NewHandPose( + UObject* Outer, + const bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::RotatorsToQuats(JointRotations) + }; + FSGIC_TArray_TArray_FVector HandAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGHandPoseImpl_Deserialize(&OutHandPoseImplContainer, &SerializedStringContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::FromHandAngles(UObject* Outer, + const TArray>& HandAngles, const bool bRightHanded, + const USGBasicHandModel* HandDimensions) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + FSGIC_FSGBasicHandModelImpl HandDimensionsContainer{HandDimensions->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded_HandDimensions( + &OutHandPoseImplContainer, &HandAnglesContainer, bRightHanded, &HandDimensionsContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::FromHandAngles(UObject* Outer, + const TArray>& HandAngles, const bool bRightHanded) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded( + &OutHandPoseImplContainer, &HandAnglesContainer, bRightHanded); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::DefaultIdle(UObject* Outer, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_FSGBasicHandModelImpl HandDimensionsContainer{HandDimensions->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded_HandDimensions( + &OutHandPoseImplContainer, bRightHanded, &HandDimensionsContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::DefaultIdle(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded(&OutHandPoseImplContainer, bRightHanded); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::FlatHand(UObject* Outer, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_FSGBasicHandModelImpl HandDimensionsContainer{HandDimensions->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded_HandDimensions( + &OutHandPoseImplContainer, bRightHanded, &HandDimensionsContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::FlatHand(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded(&OutHandPoseImplContainer, bRightHanded); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::ThumbsUp(UObject* Outer, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_FSGBasicHandModelImpl HandDimensionsContainer{HandDimensions->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded_HandDimensions( + &OutHandPoseImplContainer, bRightHanded, &HandDimensionsContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::ThumbsUp(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded(&OutHandPoseImplContainer, bRightHanded); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::Fist(UObject* Outer, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_FSGBasicHandModelImpl HandDimensionsContainer{HandDimensions->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded_HandDimensions( + &OutHandPoseImplContainer, bRightHanded, &HandDimensionsContainer); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose* USGHandPose::Fist(UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded(&OutHandPoseImplContainer, bRightHanded); + + return NewHandPose(Outer, MoveTemp(OutHandPoseImplContainer.HandPoseImpl)); +} + +USGHandPose::USGHandPose() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + SGCoreImpl_FSGHandPoseImpl_ctor(&OutHandPoseImplContainer); + + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl); +} + +USGHandPose::USGHandPose(const bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{JointRotations}; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl); +} + +USGHandPose::USGHandPose(const bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{FSGArrayUtils::RotatorsToQuats(JointRotations)}; + FSGIC_TArray_TArray_FVector HandAnglesContainer{HandAngles}; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl); +} + +USGHandPose::USGHandPose(const bool bRightHanded, const + TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::FromNestedBPArray(JointRotations) + }; + FSGIC_TArray_TArray_FVector HandAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl); +} + +USGHandPose::USGHandPose(const bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHandPoseImpl OutHandPoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::RotatorsToQuats(JointRotations) + }; + FSGIC_TArray_TArray_FVector HandAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + &OutHandPoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &HandAnglesContainer); + + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseImplContainer.HandPoseImpl); +} + +USGHandPose::USGHandPose(const FSGHandPoseImpl& HandPoseImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetHandPoseImpl(HandPoseImpl); +} + +USGHandPose::~USGHandPose() = default; + +void USGHandPose::SetHandPoseImpl(const FSGHandPoseImpl& HandPoseImpl) +{ + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + FSGIC_FSGHandPoseImpl RhsContainer{HandPoseImpl}; + SGCoreImpl_FSGHandPoseImpl_ctor_copy(&OutHandPoseContainer, &RhsContainer); + Pimpl->HandPoseImpl = MoveTemp(OutHandPoseContainer.HandPoseImpl); +} + +const FSGHandPoseImpl& USGHandPose::ToHandPoseImpl() const +{ + return Pimpl->HandPoseImpl; +} + +bool USGHandPose::IsRight() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + return SGCoreImpl_FSGHandPoseImpl_IsRight(&InstanceContainer); +} + +TArray> USGHandPose::GetJointPositions() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_TArray_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGHandPoseImpl_GetJointPositions(&InstanceContainer, &OutPositionsContainer); + return OutPositionsContainer.Array; +} + +TArray> USGHandPose::GetJointRotationsQ() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_TArray_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGHandPoseImpl_GetJointRotations(&InstanceContainer, &OutRotationsContainer); + return OutRotationsContainer.Array; +} + +TArray> USGHandPose::GetJointRotations() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_TArray_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGHandPoseImpl_GetJointRotations(&InstanceContainer, &OutRotationsContainer); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +TArray> USGHandPose::GetHandAngles() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGHandPoseImpl_GetHandAngles(&InstanceContainer, &OutAnglesContainer); + return OutAnglesContainer.Array; +} + +bool USGHandPose::Equals(const USGHandPose* HandPose) const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_FSGHandPoseImpl HandPoseContainer{HandPose->ToHandPoseImpl()}; + return SGCoreImpl_FSGHandPoseImpl_Equals(&InstanceContainer, &HandPoseContainer); +} + +float USGHandPose::GetNormalizedFlexion(const ESGFinger Finger, const bool bClamp01) const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + return SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_Finger_bClamp01( + &InstanceContainer, &FingerContainer, bClamp01); +} + +TArray USGHandPose::GetNormalizedFlexion(const bool bClamp01) const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_TArray_float OutFlexionContainer; + SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_bClamp01(&InstanceContainer, &OutFlexionContainer, bClamp01); + return OutFlexionContainer.Array; +} + +FString USGHandPose::ToString(const bool bShortFormat) const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHandPoseImpl_ToString(&InstanceContainer, &OutStringContainer, bShortFormat); + return OutStringContainer.String; +} + +FString USGHandPose::SGSerialize() const +{ + FSGIC_FSGHandPoseImpl InstanceContainer{ToHandPoseImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHandPoseImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGHandPose::FImpl::FImpl(USGHandPose* InOwner) + : Owner(InOwner) +{ +} + +USGHandPose::FImpl::~FImpl() = default; + +void USGHandPose::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticChannelInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticChannelInfo.cpp new file mode 100644 index 0000000..127b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticChannelInfo.cpp @@ -0,0 +1,236 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGHapticChannelInfo.h" + +#include "SGCoreImpl/SGHapticChannelInfoImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGHapticChannelType.h" +#include "SGInterop/SGIC_ESGWaveformType.h" +#include "SGInterop/SGIC_FSGHapticChannelInfoImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_FString.h" +#include "SGInterop/SGIC_TArray_int32.h" + +struct USGHapticChannelInfo::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGHapticChannelInfoImpl HapticChannelInfoImpl; + + /************************ + * Owner object + ************************/ + + USGHapticChannelInfo* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGHapticChannelInfo* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGHapticChannelInfo* USGHapticChannelInfo::NewHapticChannelInfo(UObject* Outer, + const FSGHapticChannelInfoImpl& HapticChannelInfoImpl) +{ + USGHapticChannelInfo* Instance = NewObject(Outer); + Instance->SetHapticChannelInfoImpl(HapticChannelInfoImpl); + return Instance; +} + +USGHapticChannelInfo* USGHapticChannelInfo::NewHapticChannelInfo(UObject* Outer) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoImplContainer; + SGCoreImpl_FSGHapticChannelInfoImpl_ctor(&OutHapticChannelInfoImplContainer); + + return NewHapticChannelInfo(Outer, MoveTemp(OutHapticChannelInfoImplContainer.HapticChannelInfoImpl)); +} + +USGHapticChannelInfo* USGHapticChannelInfo::NewHapticChannelInfo( + UObject* Outer, + const TArray& StreamIndex, const TArray& FireAndForgetIndex) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoImplContainer; + FSGIC_TArray_int32 StreamIndexContainer{StreamIndex}; + FSGIC_TArray_int32 FireAndForgetContainer{FireAndForgetIndex}; + SGCoreImpl_FSGHapticChannelInfoImpl_ctor_StreamIndex_FireAndForgetIndex( + &OutHapticChannelInfoImplContainer, &StreamIndexContainer, &FireAndForgetContainer); + + return NewHapticChannelInfo(Outer, MoveTemp(OutHapticChannelInfoImplContainer.HapticChannelInfoImpl)); +} + +FString USGHapticChannelInfo::GenerateAddress(const int32 DeviceIndex, const int32 ChannelIndex) +{ + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHapticChannelInfoImpl_GenerateAddress(&OutStringContainer, DeviceIndex, ChannelIndex); + return OutStringContainer.String; +} + +USGHapticChannelInfo* USGHapticChannelInfo::Parse(UObject* Outer, const FString& IpcString) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoImplContainer; + FSGIC_FString IpcStringContainer{IpcString}; + SGCoreImpl_FSGHapticChannelInfoImpl_Parse(&OutHapticChannelInfoImplContainer, &IpcStringContainer); + + return NewHapticChannelInfo(Outer, MoveTemp(OutHapticChannelInfoImplContainer.HapticChannelInfoImpl)); +} + +int32 USGHapticChannelInfo::GetStreamingType() +{ + return SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamingType(); +} + +int32 USGHapticChannelInfo::GetFireAndForgetType() +{ + return SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetType(); +} + +USGHapticChannelInfo::USGHapticChannelInfo() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoImplContainer; + SGCoreImpl_FSGHapticChannelInfoImpl_ctor(&OutHapticChannelInfoImplContainer); + + Pimpl->HapticChannelInfoImpl = MoveTemp(OutHapticChannelInfoImplContainer.HapticChannelInfoImpl); +} + +USGHapticChannelInfo::USGHapticChannelInfo(const TArray& StreamIndex, const TArray& FireAndForgetIndex) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoImplContainer; + FSGIC_TArray_int32 StreamIndexContainer{StreamIndex}; + FSGIC_TArray_int32 FireAndForgetContainer{FireAndForgetIndex}; + SGCoreImpl_FSGHapticChannelInfoImpl_ctor_StreamIndex_FireAndForgetIndex( + &OutHapticChannelInfoImplContainer, &StreamIndexContainer, &FireAndForgetContainer); + + Pimpl->HapticChannelInfoImpl = MoveTemp(OutHapticChannelInfoImplContainer.HapticChannelInfoImpl); +} + +USGHapticChannelInfo::USGHapticChannelInfo(const FSGHapticChannelInfoImpl& HapticChannelInfoImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetHapticChannelInfoImpl(HapticChannelInfoImpl); +} + +USGHapticChannelInfo::~USGHapticChannelInfo() = default; + +void USGHapticChannelInfo::SetHapticChannelInfoImpl(const FSGHapticChannelInfoImpl& HapticChannelInfoImpl) +{ + FSGIC_FSGHapticChannelInfoImpl OutHapticChannelInfoContainer; + FSGIC_FSGHapticChannelInfoImpl RhsContainer{HapticChannelInfoImpl}; + SGCoreImpl_FSGHapticChannelInfoImpl_ctor_copy(&OutHapticChannelInfoContainer, &RhsContainer); + Pimpl->HapticChannelInfoImpl = MoveTemp(OutHapticChannelInfoContainer.HapticChannelInfoImpl); +} + +const FSGHapticChannelInfoImpl& USGHapticChannelInfo::ToHapticChannelInfoImpl() const +{ + return Pimpl->HapticChannelInfoImpl; +} + +int32 USGHapticChannelInfo::GetStreamChannelCount() const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + return SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamChannelCount(&InstanceContainer); +} + +int32 USGHapticChannelInfo::GetFireAndForgetChannelCount() const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + return SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetChannelCount(&InstanceContainer); +} + +int32 USGHapticChannelInfo::GetTotalChannelCount() const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + return SGCoreImpl_FSGHapticChannelInfoImpl_GetTotalChannelCount(&InstanceContainer); +} + +FString USGHapticChannelInfo::GetAddress_Unguarded(const ESGHapticChannelType Type, const int32 TypeIndex) const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + FSGIC_FString OutStringContainer; + FSGIC_ESGHapticChannelType TypeContainer{Type}; + SGCoreImpl_FSGHapticChannelInfoImpl_GetAddress_Unguarded( + &InstanceContainer, &OutStringContainer, &TypeContainer, TypeIndex); + return OutStringContainer.String; +} + +void USGHapticChannelInfo::GetIpcParams_Unguarded( + const ESGHapticChannelType Type, const int32 TypeIndex, int32& OutIndex, FString& OutAddressString) const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + FSGIC_ESGHapticChannelType TypeContainer{Type}; + FSGIC_FString OutAddressStringContainer; + SGCoreImpl_FSGHapticChannelInfoImpl_GetIpcParams_Unguarded( + &InstanceContainer, &TypeContainer, TypeIndex, &OutIndex, &OutAddressString); + + OutAddressString = MoveTemp(OutAddressStringContainer.String); +} + +void USGHapticChannelInfo::RegenerateAddresses(const int32 ForDeviceIndex) +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + SGCoreImpl_FSGHapticChannelInfoImpl_RegenerateAddresses(&InstanceContainer, ForDeviceIndex); +} + +TArray USGHapticChannelInfo::GetAllAddresses() const +{ + FSGIC_FSGHapticChannelInfoImpl InstanceContainer{ToHapticChannelInfoImpl()}; + FSGIC_TArray_FString* OutArrayContainer; + SGCoreImpl_FSGHapticChannelInfoImpl_GetAllAddresses(&InstanceContainer, &OutArrayContainer); + return OutArrayContainer->Array; +} + +USGHapticChannelInfo::FImpl::FImpl(USGHapticChannelInfo* InOwner) + : Owner(InOwner) +{ +} + +USGHapticChannelInfo::FImpl::~FImpl() = default; + +void USGHapticChannelInfo::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp new file mode 100644 index 0000000..d325523 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGHapticGlove.cpp @@ -0,0 +1,515 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGHapticGlove.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGCustomWaveform.h" +#include "SGCore/SGDeviceImplCast.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" + +USGHapticGlove* USGHapticGlove::NewHapticGlove(UObject* Outer, const FSGHapticGloveImpl& HapticGloveImpl) +{ + USGHapticGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(HapticGloveImpl); + return Instance; +} + +USGHapticGlove* USGHapticGlove::NewHapticGlove(UObject* Outer, TSharedRef HapticGloveImpl) +{ + USGHapticGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(MoveTemp(HapticGloveImpl)); + return Instance; +} + +USGHapticGlove* USGHapticGlove::NewHapticGlove(UObject* Outer) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer); + + return NewHapticGlove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +TArray USGHapticGlove::GetHapticGloves(UObject* Outer, const bool bConnectedOnly) +{ + FSGIC_TArray_TSharedRef_FSGHapticGloveImpl OutGlovesContainer; + SGCoreImpl_FSGHapticGloveImpl_GetHapticGloves(&OutGlovesContainer, bConnectedOnly); + TArray HapticGloves; + for (TSharedRef HapticGloveImpl: OutGlovesContainer.Array) + { + HapticGloves.Add(NewHapticGlove(Outer, MoveTemp(HapticGloveImpl))); + } + return HapticGloves; +} + +bool USGHapticGlove::GetGlove(UObject* Outer, USGHapticGlove*& OutGlove) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetGlove_OutGlove(&OutGloveContainer); + + if (bResult) + { + OutGlove = NewHapticGlove(Outer, OutGloveContainer.Ptr.ToSharedRef()); + } + + return bResult; +} + +bool USGHapticGlove::GetGlove(UObject* Outer, const bool bRightHanded, USGHapticGlove*& OutGlove) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutGloveContainer; + + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetGlove_bRightHanded_OutGlove( + bRightHanded, &OutGloveContainer); + if (bResult) + { + OutGlove = NewHapticGlove(Outer, OutGloveContainer.Ptr.ToSharedRef()); + } + + return bResult; +} + +FString USGHapticGlove::ToString(const ESGHapticGloveCalibrationState State) +{ + FSGIC_ESGHapticGloveCalibrationState StateContainer{State}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHapticGloveImpl_ToString_State(&StateContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGHapticGlove::ToString(const ESGHapticLocation Location) +{ + FSGIC_ESGHapticLocation LocationContainer{Location}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHapticGloveImpl_ToString_Location(&LocationContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGHapticGlove::USGHapticGlove() + : USGDevice() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared(&OutSharedPtrContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGHapticGlove::USGHapticGlove(const FSGDeviceImpl& SGDeviceImpl) + : USGDevice(SGDeviceImpl) +{ +} + +USGHapticGlove::USGHapticGlove(const FSGHapticGloveImpl& HapticGloveImpl) + : USGDevice(HapticGloveImpl) +{ +} + +USGHapticGlove::USGHapticGlove(const FSGNova2GloveImpl& Nova2GloveImpl) + : USGDevice(Nova2GloveImpl) +{ +} + +USGHapticGlove::USGHapticGlove(const FSGNovaGloveImpl& NovaGloveImpl) + : USGDevice(NovaGloveImpl) +{ +} + +USGHapticGlove::USGHapticGlove(const FSGSenseGloveImpl& SenseGloveImpl) + : USGDevice(SenseGloveImpl) +{ +} + +USGHapticGlove::USGHapticGlove(TSharedRef SGDeviceImpl) + : USGDevice(MoveTemp(SGDeviceImpl)) +{ +} + +USGHapticGlove::USGHapticGlove(TSharedRef HapticGloveImpl) + : USGDevice(MoveTemp(HapticGloveImpl)) +{ +} + +USGHapticGlove::USGHapticGlove(TSharedRef Nova2GloveImpl) + : USGDevice(MoveTemp(Nova2GloveImpl)) +{ +} + +USGHapticGlove::USGHapticGlove(TSharedRef NovaGloveImpl) + : USGDevice(MoveTemp(NovaGloveImpl)) +{ +} + +USGHapticGlove::USGHapticGlove(TSharedRef SenseGloveImpl) + : USGDevice(MoveTemp(SenseGloveImpl)) +{ +} + +USGHapticGlove::~USGHapticGlove() = default; + +TSharedRef USGHapticGlove::ToHapticGloveImpl() const +{ + return FSGDeviceImplCast::ToHapticGloveImpl(ToSGDeviceImpl()); +} + +ESGDeviceType USGHapticGlove::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGHapticGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +FString USGHapticGlove::GetDeviceId() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGHapticGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGHapticGlove::GetHardwareVersion() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGHapticGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGHapticGlove::GetFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + return SGCoreImpl_FSGHapticGloveImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGHapticGlove::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + return SGCoreImpl_FSGHapticGloveImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGHapticGlove::IsRight() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + return SGCoreImpl_FSGHapticGloveImpl_IsRight(&InstanceContainer); +} + +bool USGHapticGlove::GetImuRotation(FQuat& OutImu) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = MoveTemp(OutImuContainer.Quat); + } + + return bResult; +} + +bool USGHapticGlove::GetImuRotation(FRotator& OutImu) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = OutImuContainer.Quat.Rotator(); + } + + return bResult; +} + +bool USGHapticGlove::GetHandPose( + UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandGeometry_OutHandPose( + &InstanceContainer, &HandGeometryContainer, &OutHandPoseContainer); + + if (bResult) + { + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); + } + + return bResult; +} + +bool USGHapticGlove::GetHandPose(UObject* Outer, USGHandPose*& OutHandPose) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandPose_OutHandPose( + &InstanceContainer, &OutHandPoseContainer); + + if (bResult) + { + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); + } + + return bResult; +} + +bool USGHapticGlove::GetHandAngles(TArray>& OutHandAngles) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + const bool bResult = SGCoreImpl_FSGHapticGloveImpl_GetHandAngles_OutHandAngles( + &InstanceContainer, &OutHandAnglesContainer); + + if (bResult) + { + OutHandAngles = MoveTemp(OutHandAnglesContainer.Array); + } + + return bResult; +} + +USGBasicHandModel* USGHapticGlove::GetHandGeometry(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FSGBasicHandModelImpl OutBasicHandModelContainer; + SGCoreImpl_FSGHapticGloveImpl_GetHandGeometry(&InstanceContainer, &OutBasicHandModelContainer); + return USGBasicHandModel::NewBasicHandModel(Outer, MoveTemp(OutBasicHandModelContainer.BasicHandModelImpl)); +} + +void USGHapticGlove::SetHandGeometry(const USGBasicHandModel* HandGeometry) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FSGBasicHandModelImpl HandGeometryContainer{HandGeometry->ToBasicHandModelImpl()}; + SGCoreImpl_FSGHapticGloveImpl_SetHandGeometry(&InstanceContainer, &HandGeometryContainer); +} + +ESGHapticGloveCalibrationState USGHapticGlove::GetCalibrationState() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_ESGHapticGloveCalibrationState OutHapticGloveCalibrationStateContainer; + SGCoreImpl_FSGHapticGloveImpl_GetCalibrationState(&InstanceContainer, &OutHapticGloveCalibrationStateContainer); + return OutHapticGloveCalibrationStateContainer.State; +} + +void USGHapticGlove::EndCalibration() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + SGCoreImpl_FSGHapticGloveImpl_EndCalibration(&InstanceContainer); +} + +void USGHapticGlove::ResetCalibration() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + SGCoreImpl_FSGHapticGloveImpl_ResetCalibration(&InstanceContainer); +} + +FString USGHapticGlove::GetCalibrationInstruction() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHapticGloveImpl_GetCalibrationInstruction(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +void USGHapticGlove::StopHaptics() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + SGCoreImpl_FSGHapticGloveImpl_StopHaptics(&InstanceContainer); +} + +void USGHapticGlove::StopVibrations() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + SGCoreImpl_FSGHapticGloveImpl_StopVibrations(&InstanceContainer); +} + +bool USGHapticGlove::SendHaptics() +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + return SGCoreImpl_FSGHapticGloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGHapticGlove::QueueForceFeedbackLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevels(&InstanceContainer, &Levels01Container); +} + +bool USGHapticGlove::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + return SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); +} + +bool USGHapticGlove::QueueVibroLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels(&InstanceContainer, &Levels01Container); +} + +bool USGHapticGlove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel(&InstanceContainer, &LocationContainer, Level01); +} + +bool USGHapticGlove::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_ESGHapticLocation AtLocationContainer{AtLocation}; + return SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform(&InstanceContainer, &AtLocationContainer); +} + +bool USGHapticGlove::SendCustomWaveform(USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( + &InstanceContainer, &OutWaveformContainer, &LocationContainer); +} + +void USGHapticGlove::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGHapticGlove::GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +void USGHapticGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGHapticGloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGHapticGlove::GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGHapticGloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +FString USGHapticGlove::ToString() const +{ + FSGIC_TSharedPtr_FSGHapticGloveImpl InstanceContainer{ToHapticGloveImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGHapticGloveImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSet.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSet.cpp new file mode 100644 index 0000000..8eba5a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSet.cpp @@ -0,0 +1,288 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGInterpolationSet.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGInterpolationSetImpl.h" +#include "SGInterop/SGIC_FSGInterpolationSetImpl.h" +#include "SGInterop/SGIC_FString.h" + +struct USGInterpolationSet::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGInterpolationSetImpl InterpolationSetImpl; + + /************************ + * Owner object + ************************/ + + USGInterpolationSet* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGInterpolationSet* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGInterpolationSet* USGInterpolationSet::NewInterpolationSet(UObject* Outer, + const FSGInterpolationSetImpl& InterpolationSetImpl) +{ + USGInterpolationSet* Instance = NewObject(Outer); + Instance->SetInterpolationSetImpl(InterpolationSetImpl); + return Instance; +} + +USGInterpolationSet* USGInterpolationSet::NewInterpolationSet(UObject* Outer) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor(&OutInterpolationSetImplContainer); + + return NewInterpolationSet(Outer, MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl)); +} + +USGInterpolationSet* USGInterpolationSet::NewInterpolationSet( + UObject* Outer, const float From1, const float From2, const float To1, const float To2) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2(&OutInterpolationSetImplContainer, + From1, From2, To1, To2); + + return NewInterpolationSet(Outer, MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl)); +} + +USGInterpolationSet* USGInterpolationSet::NewInterpolationSet( + UObject* Outer, + const float From1, const float From2, const float To1, const float To2, const float Min, const float Max) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2_Min_Max(&OutInterpolationSetImplContainer, + From1, From2, To1, To2, Min, Max); + + return NewInterpolationSet(Outer, MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl)); +} + +USGInterpolationSet* USGInterpolationSet::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGInterpolationSetImpl_Deserialize(&OutInterpolationSetImplContainer, &SerializedStringContainer); + + return NewInterpolationSet(Outer, MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl)); +} + +USGInterpolationSet::USGInterpolationSet() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor(&OutInterpolationSetImplContainer); + + Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl); +} + +USGInterpolationSet::USGInterpolationSet(const float From1, const float From2, const float To1, const float To2) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2(&OutInterpolationSetImplContainer, + From1, From2, To1, To2); + + Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl); +} + +USGInterpolationSet::USGInterpolationSet(const float From1, const float From2, const float To1, const float To2, + const float Min, const float Max) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetImplContainer; + SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2_Min_Max(&OutInterpolationSetImplContainer, + From1, From2, To1, To2, Min, Max); + + Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetImplContainer.InterpolationSetImpl); +} + +USGInterpolationSet::USGInterpolationSet(const FSGInterpolationSetImpl& InterpolationSetImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetInterpolationSetImpl(InterpolationSetImpl); +} + +USGInterpolationSet::~USGInterpolationSet() = default; + +void USGInterpolationSet::SetInterpolationSetImpl(const FSGInterpolationSetImpl& InterpolationSetImpl) +{ + FSGIC_FSGInterpolationSetImpl OutInterpolationSetContainer; + FSGIC_FSGInterpolationSetImpl RhsContainer{InterpolationSetImpl}; + SGCoreImpl_FSGInterpolationSetImpl_ctor_copy(&OutInterpolationSetContainer, &RhsContainer); + Pimpl->InterpolationSetImpl = MoveTemp(OutInterpolationSetContainer.InterpolationSetImpl); +} + +const FSGInterpolationSetImpl& USGInterpolationSet::ToInterpolationSetImpl() const +{ + return Pimpl->InterpolationSetImpl; +} + +float USGInterpolationSet::GetX0() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetX0(&InstanceContainer); +} + +void USGInterpolationSet::SetX0(const float X0) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetX0(&InstanceContainer, X0); +} + +float USGInterpolationSet::GetX1() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetX1(&InstanceContainer); +} + +void USGInterpolationSet::SetX1(const float X1) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetX1(&InstanceContainer, X1); +} + +float USGInterpolationSet::GetY0() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetY0(&InstanceContainer); +} + +void USGInterpolationSet::SetY0(const float Y0) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetY0(&InstanceContainer, Y0); +} + +float USGInterpolationSet::GetY1() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetY1(&InstanceContainer); +} + +void USGInterpolationSet::SetY1(const float Y1) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetY1(&InstanceContainer, Y1); +} + +float USGInterpolationSet::GetMin() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetMin(&InstanceContainer); +} + +void USGInterpolationSet::SetMin(const float Min) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetMin(&InstanceContainer, Min); +} + +float USGInterpolationSet::GetMax() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_GetMax(&InstanceContainer); +} + +void USGInterpolationSet::SetMax(const float Max) +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + SGCoreImpl_FSGInterpolationSetImpl_SetMax(&InstanceContainer, Max); +} + +float USGInterpolationSet::Get(const float Value, const bool bLimit, const bool bNormalizeAngle) const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_Get(&InstanceContainer, Value, bLimit, bNormalizeAngle); +} + +bool USGInterpolationSet::Equals(const USGInterpolationSet* InterpolationSet) const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + FSGIC_FSGInterpolationSetImpl InterpolationSetContainer{InterpolationSet->ToInterpolationSetImpl()}; + return SGCoreImpl_FSGInterpolationSetImpl_Equals(&InstanceContainer, &InterpolationSetContainer); +} + +FString USGInterpolationSet::ToString() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGInterpolationSetImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGInterpolationSet::ToString(const bool bLimits) const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGInterpolationSetImpl_ToString_bLimits(&InstanceContainer, &OutStringContainer, bLimits); + return OutStringContainer.String; +} + +FString USGInterpolationSet::SGSerialize() const +{ + FSGIC_FSGInterpolationSetImpl InstanceContainer{ToInterpolationSetImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGInterpolationSetImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGInterpolationSet::FImpl::FImpl(USGInterpolationSet* InOwner) + : Owner(InOwner) +{ +} + +USGInterpolationSet::FImpl::~FImpl() = default; + +void USGInterpolationSet::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSetArray.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSetArray.cpp new file mode 100644 index 0000000..9f6ee9d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGInterpolationSetArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGInterpolationSetArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGJointKinematics.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGJointKinematics.cpp new file mode 100644 index 0000000..802dd08 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGJointKinematics.cpp @@ -0,0 +1,132 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGJointKinematics.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +bool FSGJointKinematics::ForwardKinematics( + const FVector& StartPosition, const FQuat& StartRotation, const TArray& JointLengths, + const TArray& JointAngles, TArray& OutNewPositions, TArray& OutNewRotations) +{ + FSGIC_FVector StartPositionContainer{StartPosition}; + FSGIC_FQuat StartRotationContainer{StartRotation}; + FSGIC_TArray_FVector JointLengthsContainer{JointLengths}; + FSGIC_TArray_FVector JointAnglesContainer{JointAngles}; + FSGIC_TArray_FVector OutNewPositionsContainer; + FSGIC_TArray_FQuat OutNewRotationsContainer; + + const bool bResult = + SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_StartPosition_StartRotation_JointLengths_JointAngles_OutNewPositions_OutNewRotations( + &StartPositionContainer, &StartRotationContainer, &JointLengthsContainer, &JointAnglesContainer, + &OutNewPositionsContainer, &OutNewRotationsContainer); + + OutNewPositions = MoveTemp(OutNewPositionsContainer.Array); + OutNewRotations = MoveTemp(OutNewRotationsContainer.Array); + + return bResult; +} + +bool FSGJointKinematics::ForwardKinematics( + const FVector& StartPosition, const FRotator& StartRotation, const TArray& JointLengths, + const TArray& JointAngles, TArray& OutNewPositions, TArray& OutNewRotations) +{ + FSGIC_FVector StartPositionContainer{StartPosition}; + FSGIC_FQuat StartRotationContainer{StartRotation.Quaternion()}; + FSGIC_TArray_FVector JointLengthsContainer{JointLengths}; + FSGIC_TArray_FVector JointAnglesContainer{JointAngles}; + FSGIC_TArray_FVector OutNewPositionsContainer; + FSGIC_TArray_FQuat OutNewRotationsContainer; + + const bool bResult = + SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_StartPosition_StartRotation_JointLengths_JointAngles_OutNewPositions_OutNewRotations( + &StartPositionContainer, &StartRotationContainer, &JointLengthsContainer, &JointAnglesContainer, + &OutNewPositionsContainer, &OutNewRotationsContainer); + + OutNewPositions = MoveTemp(OutNewPositionsContainer.Array); + OutNewRotations = FSGArrayUtils::QuatsToRotators(OutNewRotationsContainer.Array); + + return bResult; +} + +bool FSGJointKinematics::ForwardKinematics( + const USGBasicHandModel* Profile, const ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + FSGIC_FSGBasicHandModelImpl ProfileContainer{Profile->ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_TArray_FVector JointAnglesContainer{JointAngles}; + FSGIC_TArray_FVector OutNewPositionsContainer; + FSGIC_TArray_FQuat OutNewRotationsContainer; + + const bool bResult = + SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_Profile_Finger_JointAngles_OutNewPositions_OutNewRotations( + &ProfileContainer, &FingerContainer, &JointAnglesContainer, + &OutNewPositionsContainer, &OutNewRotationsContainer); + + OutNewPositions = MoveTemp(OutNewPositionsContainer.Array); + OutNewRotations = MoveTemp(OutNewRotationsContainer.Array); + + return bResult; +} + +bool FSGJointKinematics::ForwardKinematics( + const USGBasicHandModel* Profile, const ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + FSGIC_FSGBasicHandModelImpl ProfileContainer{Profile->ToBasicHandModelImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_TArray_FVector JointAnglesContainer{JointAngles}; + FSGIC_TArray_FVector OutNewPositionsContainer; + FSGIC_TArray_FQuat OutNewRotationsContainer; + + const bool bResult = + SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_Profile_Finger_JointAngles_OutNewPositions_OutNewRotations( + &ProfileContainer, &FingerContainer, &JointAnglesContainer, + &OutNewPositionsContainer, &OutNewRotationsContainer); + + OutNewPositions = MoveTemp(OutNewPositionsContainer.Array); + OutNewRotations = FSGArrayUtils::QuatsToRotators(OutNewRotationsContainer.Array); + + return bResult; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGLibrary.cpp new file mode 100644 index 0000000..dae2e31 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGLibrary.cpp @@ -0,0 +1,68 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGLibrary.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGBackendType.h" +#include "SGInterop/SGIC_FString.h" + +FString FSGLibrary::GetVersion() +{ + FSGIC_FString Container; + SGCoreImpl_FSGLibraryImpl_Version(&Container); + return Container.String; +} + +ESGBackendType FSGLibrary::GetBackendType() +{ + FSGIC_ESGBackendType Container; + SGCoreImpl_FSGLibraryImpl_GetBackendType(&Container); + return Container.Type; +} + +FString FSGLibrary::GetBackendVersion() +{ + FSGIC_FString Container; + SGCoreImpl_FSGLibraryImpl_BackendVersion(&Container); + return Container.String; +} + +FString FSGLibrary::GetSGConnectVersion() +{ + FSGIC_FString Container; + SGCoreImpl_FSGLibraryImpl_SGConnectVersion(&Container); + return Container.String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp new file mode 100644 index 0000000..14e7b1b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2Glove.cpp @@ -0,0 +1,742 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGNova2Glove.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGCustomWaveform.h" +#include "SGCore/SGDeviceImplCast.h" +#include "SGCore/SGHandInterpolator.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCore/SGNova2GloveSensorData.h" +#include "SGCore/SGSensorNormalization.h" +#include "SGCore/SGThresholdCommand.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGNova2VibroMotor.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGSensorNormalizationImpl.h" +#include "SGInterop/SGIC_FSGThresholdCommandImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h" + +USGNova2Glove* USGNova2Glove::NewNova2Glove(UObject* Outer, const FSGNova2GloveImpl& Nova2GloveImpl) +{ + USGNova2Glove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(Nova2GloveImpl); + return Instance; +} + +USGNova2Glove* USGNova2Glove::NewNova2Glove(UObject* Outer, TSharedRef Nova2GloveImpl) +{ + USGNova2Glove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(MoveTemp(Nova2GloveImpl)); + return Instance; +} + +USGNova2Glove* USGNova2Glove::NewNova2Glove(UObject* Outer) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGNova2GloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + return NewNova2Glove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNova2Glove* USGNova2Glove::NewNova2Glove(UObject* Outer, const USGNovaGloveInfo& DeviceInfo) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveInfoImpl DeviceInfoContainer{DeviceInfo.ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo_MakeShared(&OutSharedPtrContainer, &DeviceInfoContainer); + + return NewNova2Glove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGDevice* USGNova2Glove::Parse(UObject* Outer, const FString& ConstantsString) +{ + FSGIC_FSGNova2GloveImpl OutNova2GloveImplContainer; + FSGIC_FString ConstantsStringContainer{ConstantsString}; + SGCoreImpl_FSGNova2GloveImpl_Parse(&OutNova2GloveImplContainer, &ConstantsStringContainer); + + return NewNova2Glove(Outer, MoveTemp(OutNova2GloveImplContainer.Nova2GloveImpl)); +} + +TArray USGNova2Glove::GetNova2Gloves(UObject* Outer) +{ + FSGIC_TArray_FSGNova2GloveImpl OutGlovesContainer; + SGCoreImpl_FSGNova2GloveImpl_GetNova2Gloves(&OutGlovesContainer); + TArray Gloves; + for (const FSGNova2GloveImpl& Nova2GloveImpl: OutGlovesContainer.Array) + { + USGNova2Glove* Nova2Glove = USGNova2Glove::NewNova2Glove(Outer, Nova2GloveImpl); + Gloves.Add(Nova2Glove); + } + return Gloves; +} + +bool USGNova2Glove::GetNova2Glove(UObject* Outer, USGNova2Glove*& OutGlove) +{ + FSGIC_FSGNova2GloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_OutGlove(&OutGloveContainer); + + if (bResult) + { + OutGlove = NewNova2Glove(Outer, MoveTemp(OutGloveContainer.Nova2GloveImpl)); + } + + return bResult; +} + +bool USGNova2Glove::GetNova2Glove(UObject* Outer, const bool bRightHanded, USGNova2Glove*& OutGlove) +{ + FSGIC_FSGNova2GloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_bRightHanded_OutGlove( + bRightHanded, &OutGloveContainer); + + if (bResult) + { + OutGlove = NewNova2Glove(Outer, MoveTemp(OutGloveContainer.Nova2GloveImpl)); + } + + return bResult; +} + +void USGNova2Glove::CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGNova2Glove::CalculateGloveLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGNova2Glove::CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGNova2Glove::CalculateWristLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +ANSICHAR USGNova2Glove::GetStreamByte() +{ + return SGCoreImpl_FSGNova2GloveImpl_GetStreamByte(); +} + +TArray USGNova2Glove::GetNova2SensorRanges() +{ + FSGIC_TArray_float OutNova2SensorRangesContainer; + SGCoreImpl_FSGNova2GloveImpl_GetNova2SensorRanges(&OutNova2SensorRangesContainer); + return OutNova2SensorRangesContainer.Array; +} + +TArray USGNova2Glove::ToNormalizedValues(const USGNova2GloveSensorData* SensorData) +{ + FSGIC_TArray_float OutNormalizedValuesContainer; + FSGIC_FSGNova2GloveSensorDataImpl SensorDataContainer{SensorData->ToNova2GloveSensorDataImpl()}; + SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData( + &OutNormalizedValuesContainer, &SensorDataContainer); + return OutNormalizedValuesContainer.Array; +} + +TArray USGNova2Glove::ToNormalizedValues( + UObject* Outer, const USGNova2GloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer) +{ + FSGIC_TArray_float OutNormalizedValuesContainer; + FSGIC_FSGNova2GloveSensorDataImpl SensorDataContainer{SensorData->ToNova2GloveSensorDataImpl()}; + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizerContainer; + SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + &OutNormalizedValuesContainer, &SensorDataContainer, &OutSensorNormalizerContainer); + + OutSensorNormalizer = USGSensorNormalization::NewSensorNormalization( + Outer, MoveTemp(OutSensorNormalizerContainer.SensorNormalizationImpl)); + + return OutNormalizedValuesContainer.Array; +} + +TArray> USGNova2Glove::CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator, const bool bInfluenceIndex) +{ + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + FSGIC_TArray_float NormalizedValuesContainer{NormalizedValues}; + FSGIC_FSGHandInterpolatorImpl InterpolatorContainer{Interpolator->ToHandInterpolatorImpl()}; + SGCoreImpl_FSGNova2GloveImpl_CalculateHandAngles( + &OutHandAnglesContainer, &NormalizedValuesContainer, &InterpolatorContainer, bInfluenceIndex); + return OutHandAnglesContainer.Array; +} + +TArray> USGNova2Glove::ToNormalizedAngles( + const TArray& NormalizedData, const USGNovaGloveInfo* GloveInfo) +{ + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + FSGIC_TArray_float NormalizedDataContainer{NormalizedData}; + FSGIC_FSGNovaGloveInfoImpl GloveInfoContainer{GloveInfo->ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNova2GloveImpl_ToNormalizedAngles( + &OutHandAnglesContainer, &NormalizedDataContainer, &GloveInfoContainer); + return OutHandAnglesContainer.Array; +} + +USGNova2Glove::USGNova2Glove() + : USGHapticGlove() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGNova2GloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNova2Glove::USGNova2Glove(const USGNovaGloveInfo& DeviceInfo) + : USGHapticGlove() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveInfoImpl DeviceInfoContainer{DeviceInfo.ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo_MakeShared(&OutSharedPtrContainer, &DeviceInfoContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNova2Glove::USGNova2Glove(const FSGDeviceImpl& SGDeviceImpl) + : USGHapticGlove(SGDeviceImpl) +{ +} + +USGNova2Glove::USGNova2Glove(const FSGHapticGloveImpl& HapticGloveImpl) + : USGHapticGlove(HapticGloveImpl) +{ +} + +USGNova2Glove::USGNova2Glove(const FSGNova2GloveImpl& Nova2GloveImpl) + : USGHapticGlove(Nova2GloveImpl) +{ +} + +USGNova2Glove::USGNova2Glove(const TSharedRef SGDeviceImpl) + : USGHapticGlove(SGDeviceImpl) +{ +} + +USGNova2Glove::USGNova2Glove(const TSharedRef HapticGloveImpl) + : USGHapticGlove(HapticGloveImpl) +{ +} + +USGNova2Glove::USGNova2Glove(const TSharedRef Nova2GloveImpl) + : USGHapticGlove(Nova2GloveImpl) +{ +} + +USGNova2Glove::~USGNova2Glove() = default; + +TSharedRef USGNova2Glove::ToNova2GloveImpl() const +{ + return FSGDeviceImplCast::ToNova2GloveImpl(ToSGDeviceImpl()); +} + +ESGDeviceType USGNova2Glove::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGNova2GloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +FString USGNova2Glove::GetDeviceId() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGNova2GloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGNova2Glove::GetHardwareVersion() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGNova2GloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGNova2Glove::GetFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGNova2Glove::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGNova2Glove::HasBattery() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_HasBattery(&InstanceContainer); +} + +bool USGNova2Glove::IsCharging() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_IsCharging(&InstanceContainer); + return bResult; +} + +bool USGNova2Glove::GetBatteryLevel(float& OutBatteryLevel) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetBatteryLevel(&InstanceContainer, &OutBatteryLevel); + return bResult; +} + +bool USGNova2Glove::IsRight() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_IsRight(&InstanceContainer); +} + + +bool USGNova2Glove::GetImuRotation(FQuat& OutImu) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = MoveTemp(OutImuContainer.Quat); + } + + return bResult; +} + +bool USGNova2Glove::GetImuRotation(FRotator& OutImu) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = OutImuContainer.Quat.Rotator(); + } + + return bResult; +} + +bool USGNova2Glove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FSGBasicHandModelImpl HandModelContainer{HandGeometry->ToBasicHandModelImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetHandPose( + &InstanceContainer, &HandModelContainer, &OutHandPoseContainer); + + if (bResult) + { + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); + } + + return bResult; +} + +bool USGNova2Glove::GetHandAngles(TArray>& OutHandAngles) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetHandAngles(&InstanceContainer, &OutHandAnglesContainer); + OutHandAngles = MoveTemp(OutHandAnglesContainer.Array); + return bResult; + +} + +ESGHapticGloveCalibrationState USGNova2Glove::GetCalibrationState() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGHapticGloveCalibrationState OutHapticGloveCalibrationStateContainer; + SGCoreImpl_FSGNova2GloveImpl_GetCalibrationState(&InstanceContainer, &OutHapticGloveCalibrationStateContainer); + return OutHapticGloveCalibrationStateContainer.State; +} + +void USGNova2Glove::EndCalibration() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + SGCoreImpl_FSGNova2GloveImpl_EndCalibration(&InstanceContainer); +} + +void USGNova2Glove::ResetCalibration() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + SGCoreImpl_FSGNova2GloveImpl_ResetCalibration(&InstanceContainer); +} + +void USGNova2Glove::StopHaptics() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + SGCoreImpl_FSGNova2GloveImpl_StopHaptics(&InstanceContainer); +} + +void USGNova2Glove::StopVibrations() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + SGCoreImpl_FSGNova2GloveImpl_StopVibrations(&InstanceContainer); +} + +bool USGNova2Glove::SendHaptics() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNova2Glove::SupportsCustomWaveform(ESGHapticLocation AtLocation) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNova2Glove::SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNova2Glove::QueueForceFeedbackLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevels(&InstanceContainer, &Levels01Container); +} + +bool USGNova2Glove::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); +} + +bool USGNova2Glove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGNova2Glove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel(&InstanceContainer, &LocationContainer, Level01); +} + +bool USGNova2Glove::QueueSqueezeLevel(const float SqueezeLevel01) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel(&InstanceContainer, SqueezeLevel01); +} + +void USGNova2Glove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGNova2Glove::GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNova2GloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGNova2Glove::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGNova2GloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGNova2Glove::GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGNova2GloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +USGNovaGloveInfo* USGNova2Glove::GetGloveInfo(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FSGNovaGloveInfoImpl OutGloveInfoContainer; + SGCoreImpl_FSGNova2GloveImpl_GetGloveInfo(&InstanceContainer, &OutGloveInfoContainer); + return USGNovaGloveInfo::NewNovaGloveInfo(Outer, MoveTemp(OutGloveInfoContainer.NovaGloveInfoImpl)); +} + +bool USGNova2Glove::DoesIndexInfluenceOthers() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_DoesIndexInfluenceOthers(&InstanceContainer); +} + +void USGNova2Glove::SetIndexInfluencesOthers(const bool bInfluenceOthers) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + SGCoreImpl_FSGNova2GloveImpl_SetIndexInfluencesOthers(&InstanceContainer, bInfluenceOthers); +} + +bool USGNova2Glove::SupportsOnBoardNormalization() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SupportsOnBoardNormalization(&InstanceContainer); +} + +bool USGNova2Glove::GetSensorData(UObject* Outer, USGNova2GloveSensorData*& OutSensorData) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FSGNova2GloveSensorDataImpl OutSensorDataContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetSensorData(&InstanceContainer, &OutSensorDataContainer); + + if (bResult) + { + OutSensorData = USGNova2GloveSensorData::NewNova2GloveSensorData( + Outer, MoveTemp(OutSensorDataContainer.Nova2GloveSensorDataImpl)); + } + + return bResult; +} + +bool USGNova2Glove::GetNormalizedInput(TArray& OutNormalizedValues) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_TArray_float OutNormalizedValuesContainer; + const bool bResult = SGCoreImpl_FSGNova2GloveImpl_GetNormalizedInput( + &InstanceContainer, &OutNormalizedValuesContainer); + + if (bResult) + { + OutNormalizedValues = MoveTemp(OutNormalizedValuesContainer.Array); + } + + return bResult; +} + +bool USGNova2Glove::SendRawData() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SendRawData(&InstanceContainer); +} + +bool USGNova2Glove::SendNormalizedData() +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + return SGCoreImpl_FSGNova2GloveImpl_SendNormalizedData(&InstanceContainer); +} + +ESGNova2VibroMotor USGNova2Glove::ToNovaMotor(const ESGHapticLocation Location) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGNova2VibroMotor OutVibroMotorContainer; + FSGIC_ESGHapticLocation LocationContainer{Location}; + SGCoreImpl_FSGNova2GloveImpl_ToNovaMotor(&InstanceContainer, &OutVibroMotorContainer, &LocationContainer); + return OutVibroMotorContainer.Motor; +} + +int32 USGNova2Glove::ChannelIndex(const ESGNova2VibroMotor Motor) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_ESGNova2VibroMotor MotorContainer{Motor}; + return SGCoreImpl_FSGNova2GloveImpl_ChannelIndex(&InstanceContainer, &MotorContainer); +} + +void USGNova2Glove::ValidateWaveform(USGCustomWaveform* OutWaveform, const ESGNova2VibroMotor Motor) const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGNova2VibroMotor MotorContainer{Motor}; + SGCoreImpl_FSGNova2GloveImpl_ValidateWaveform(&InstanceContainer, &OutWaveformContainer, &MotorContainer); +} + +bool USGNova2Glove::SendCustomWaveform_Nova2( + USGCustomWaveform* OutWaveform, const ESGNova2VibroMotor Motor, const bool bValidateWaveform) +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGNova2VibroMotor MotorContainer{Motor}; + return SGCoreImpl_FSGNova2GloveImpl_SendCustomWaveform_Nova2( + &InstanceContainer, &OutWaveformContainer, &MotorContainer, bValidateWaveform); +} + +FString USGNova2Glove::ToString() const +{ + FSGIC_TSharedPtr_FSGNova2GloveImpl InstanceContainer{ToNova2GloveImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNova2GloveImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String;; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2GloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2GloveSensorData.cpp new file mode 100644 index 0000000..b72e842 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNova2GloveSensorData.cpp @@ -0,0 +1,377 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGNova2GloveSensorData.h" + +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGNova2GloveSensorDataImpl.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGNormalizationState.h" +#include "SGInterop/SGIC_ESGNova2SensorLocation.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGNova2GloveSensorData::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGNova2GloveSensorDataImpl Nova2GloveSensorDataImpl; + + /************************ + * Owner object + ************************/ + + USGNova2GloveSensorData* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGNova2GloveSensorData* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData( + UObject* Outer, const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl) +{ + USGNova2GloveSensorData* Instance = NewObject(Outer); + Instance->SetNova2GloveSensorDataImpl(Nova2GloveSensorDataImpl); + return Instance; +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData(UObject* Outer) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor(&OutNova2GloveSensorDataImplContainer); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData( + UObject* Outer, const ESGNormalizationState NormalizationState, + const TArray>& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData( + UObject* Outer, const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{ + FSGArrayUtils::FromNestedBPArray(Values) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData( + UObject* Outer, const ESGNormalizationState NormalizationState, + const TArray>& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::NewNova2GloveSensorData( + UObject* Outer, const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{ + FSGArrayUtils::FromNestedBPArray(Values) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData* USGNova2GloveSensorData::Parse(UObject* Outer, + const FString& RawData, const USGNovaGloveInfo* GloveInfo) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_FString RawDataString{RawData}; + FSGIC_FSGNovaGloveInfoImpl GloveInfoContainer{GloveInfo->ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_Parse(&OutNova2GloveSensorDataImplContainer, + &RawDataString, &GloveInfoContainer); + + return NewNova2GloveSensorData(Outer, MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl)); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor(&OutNova2GloveSensorDataImplContainer); + + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData(const ESGNormalizationState NormalizationState, + const TArray>& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData(const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{ + FSGArrayUtils::FromNestedBPArray(Values) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData(const ESGNormalizationState NormalizationState, + const TArray>& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData(const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataImplContainer; + FSGIC_ESGNormalizationState NormalizationStateContainer{NormalizationState}; + FSGIC_TArray_TArray_FVector ValuesContainer{ + FSGArrayUtils::FromNestedBPArray(Values) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNova2GloveSensorDataImplContainer, &NormalizationStateContainer, + &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataImplContainer.Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::USGNova2GloveSensorData(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetNova2GloveSensorDataImpl(Nova2GloveSensorDataImpl); +} + +USGNova2GloveSensorData::~USGNova2GloveSensorData() = default; + +void USGNova2GloveSensorData::SetNova2GloveSensorDataImpl(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl) +{ + FSGIC_FSGNova2GloveSensorDataImpl OutNova2GloveSensorDataContainer; + FSGIC_FSGNova2GloveSensorDataImpl RhsContainer{Nova2GloveSensorDataImpl}; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_copy(&OutNova2GloveSensorDataContainer, &RhsContainer); + Pimpl->Nova2GloveSensorDataImpl = MoveTemp(OutNova2GloveSensorDataContainer.Nova2GloveSensorDataImpl); +} + +const FSGNova2GloveSensorDataImpl& USGNova2GloveSensorData::ToNova2GloveSensorDataImpl() const +{ + return Pimpl->Nova2GloveSensorDataImpl; +} + +ESGNormalizationState USGNova2GloveSensorData::GetSensorState() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_ESGNormalizationState OutNormalizationState; + SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorState(&InstanceContainer, &OutNormalizationState); + return OutNormalizationState.State; +} + +TArray> USGNova2GloveSensorData::GetSensorValues() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_TArray_TArray_FVector OutValuesContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValues(&InstanceContainer, &OutValuesContainer); + return OutValuesContainer.Array; +} + +float USGNova2GloveSensorData::GetSensorValue(const ESGFinger Finger, const ESGNova2SensorLocation Location) const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_ESGNova2SensorLocation LocationContainer{Location}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValue( + &InstanceContainer, &FingerContainer, &LocationContainer); +} + +int32 USGNova2GloveSensorData::GetParsedValues() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_GetParsedValues(&InstanceContainer); +} + +FQuat USGNova2GloveSensorData::GetImuRotationQ() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator USGNova2GloveSensorData::GetImuRotation() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +bool USGNova2GloveSensorData::IsImuParsed() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_IsImuParsed(&InstanceContainer); +} + +float USGNova2GloveSensorData::GetBatteryLevel() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_GetBatteryLevel(&InstanceContainer); +} + +bool USGNova2GloveSensorData::IsCharging() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_IsCharging(&InstanceContainer); +} + +bool USGNova2GloveSensorData::Equals(const USGNova2GloveSensorData* Nova2GloveSensorData) const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_FSGNova2GloveSensorDataImpl Nova2GloveSensorDataContainer{Nova2GloveSensorData->ToNova2GloveSensorDataImpl()}; + return SGCoreImpl_FSGNova2GloveSensorDataImpl_Equals(&InstanceContainer, &Nova2GloveSensorDataContainer); +} + +FString USGNova2GloveSensorData::ToString() const +{ + FSGIC_FSGNova2GloveSensorDataImpl InstanceContainer{ToNova2GloveSensorDataImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNova2GloveSensorDataImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGNova2GloveSensorData::FImpl::FImpl(USGNova2GloveSensorData* InOwner) + : Owner(InOwner) +{ +} + +USGNova2GloveSensorData::FImpl::~FImpl() = default; + +void USGNova2GloveSensorData::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp new file mode 100644 index 0000000..389e631 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGlove.cpp @@ -0,0 +1,781 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGNovaGlove.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGCustomWaveform.h" +#include "SGCore/SGDeviceImplCast.h" +#include "SGCore/SGHandInterpolator.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCore/SGNovaGloveSensorData.h" +#include "SGCore/SGSensorNormalization.h" +#include "SGCore/SGThresholdCommand.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGNovaVibroMotor.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGSensorNormalizationImpl.h" +#include "SGInterop/SGIC_FSGThresholdCommandImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h" + +USGNovaGlove* USGNovaGlove::NewNovaGlove(UObject* Outer, const FSGNovaGloveImpl& NovaGloveImpl) +{ + USGNovaGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(NovaGloveImpl); + return Instance; +} + +USGNovaGlove* USGNovaGlove::NewNovaGlove(UObject* Outer, TSharedRef NovaGloveImpl) +{ + USGNovaGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(MoveTemp(NovaGloveImpl)); + return Instance; +} + +USGNovaGlove* USGNovaGlove::NewNovaGlove(UObject* Outer) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGNovaGloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + return NewNovaGlove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNovaGlove* USGNovaGlove::NewNovaGlove(UObject* Outer, const USGNovaGloveInfo& DeviceInfo) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveInfoImpl DeviceInfoContainer{DeviceInfo.ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo_MakeShared(&OutSharedPtrContainer, &DeviceInfoContainer); + + return NewNovaGlove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGDevice* USGNovaGlove::Parse(UObject* Outer, const FString& ConstantsString) +{ + FSGIC_FSGNovaGloveImpl OutNovaGloveImplContainer; + FSGIC_FString ConstantsStringContainer{ConstantsString}; + SGCoreImpl_FSGNovaGloveImpl_Parse(&OutNovaGloveImplContainer, &ConstantsStringContainer); + + return NewNovaGlove(Outer, MoveTemp(OutNovaGloveImplContainer.NovaGloveImpl)); +} + +TArray USGNovaGlove::GetNovaGloves(UObject* Outer) +{ + FSGIC_TArray_FSGNovaGloveImpl OutGlovesContainer; + SGCoreImpl_FSGNovaGloveImpl_GetNovaGloves(&OutGlovesContainer); + TArray Gloves; + for (const FSGNovaGloveImpl& NovaGloveImpl: OutGlovesContainer.Array) + { + USGNovaGlove* NovaGlove = USGNovaGlove::NewNovaGlove(Outer, NovaGloveImpl); + Gloves.Add(NovaGlove); + } + return Gloves; +} + +bool USGNovaGlove::GetNovaGlove(UObject* Outer, USGNovaGlove*& OutGlove) +{ + FSGIC_FSGNovaGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_OutGlove(&OutGloveContainer); + + if (bResult) + { + OutGlove = NewNovaGlove(Outer, MoveTemp(OutGloveContainer.NovaGloveImpl)); + } + + return bResult; +} + +bool USGNovaGlove::GetNovaGlove(UObject* Outer, const bool bRightHanded, USGNovaGlove*& OutGlove) +{ + FSGIC_FSGNovaGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_bRightHanded_OutGlove( + bRightHanded, &OutGloveContainer); + + if (bResult) + { + OutGlove = NewNovaGlove(Outer, MoveTemp(OutGloveContainer.NovaGloveImpl)); + } + + return bResult; +} + +void USGNovaGlove::CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGNovaGlove::CalculateGloveLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGNovaGlove::CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGNovaGlove::CalculateWristLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, bRightHanded, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +ANSICHAR USGNovaGlove::GetHapticsByte() +{ + return SGCoreImpl_FSGNovaGloveImpl_GetHapticsByte(); +} + +ANSICHAR USGNovaGlove::GetThresholdsByte() +{ + return SGCoreImpl_FSGNovaGloveImpl_GetThresholdsByte(); +} + +ANSICHAR USGNovaGlove::GetIgnoreThresholdsByte() +{ + return SGCoreImpl_FSGNovaGloveImpl_GetIgnoreThresholdsByte(); +} + +TArray USGNovaGlove::GetNovaSensorRanges() +{ + FSGIC_TArray_float OutNovaSensorRangesContainer; + SGCoreImpl_FSGNovaGloveImpl_GetNovaSensorRanges(&OutNovaSensorRangesContainer); + return OutNovaSensorRangesContainer.Array; +} + +TArray USGNovaGlove::ToNormalizedValues(const USGNovaGloveSensorData* SensorData) +{ + FSGIC_TArray_float OutNormalizedValuesContainer; + FSGIC_FSGNovaGloveSensorDataImpl SensorDataContainer{SensorData->ToNovaGloveSensorDataImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData( + &OutNormalizedValuesContainer, &SensorDataContainer); + return OutNormalizedValuesContainer.Array; +} + +TArray USGNovaGlove::ToNormalizedValues( + UObject* Outer, const USGNovaGloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer) +{ + FSGIC_TArray_float OutNormalizedValuesContainer; + FSGIC_FSGNovaGloveSensorDataImpl SensorDataContainer{SensorData->ToNovaGloveSensorDataImpl()}; + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizerContainer; + SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + &OutNormalizedValuesContainer, &SensorDataContainer, &OutSensorNormalizerContainer); + + OutSensorNormalizer = USGSensorNormalization::NewSensorNormalization( + Outer, MoveTemp(OutSensorNormalizerContainer.SensorNormalizationImpl)); + + return OutNormalizedValuesContainer.Array; +} + +TArray> USGNovaGlove::CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator) +{ + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + FSGIC_TArray_float NormalizedValuesContainer{NormalizedValues}; + FSGIC_FSGHandInterpolatorImpl InterpolatorContainer{Interpolator->ToHandInterpolatorImpl()}; + SGCoreImpl_FSGNovaGloveImpl_CalculateHandAngles( + &OutHandAnglesContainer, &NormalizedValuesContainer, &InterpolatorContainer); + return OutHandAnglesContainer.Array; +} + +FString USGNovaGlove::ToNovaCommandAsFlexion(const USGThresholdCommand* Thresholds) +{ + FSGIC_FString OutStringContainer; + FSGIC_FSGThresholdCommandImpl ThresholdsContainer{Thresholds->ToThresholdCommandImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsFlexion(&OutStringContainer, &ThresholdsContainer); + return OutStringContainer.String; +} + +FString USGNovaGlove::ToNovaCommandAsRaw( + const USGThresholdCommand* Thresholds, const USGSensorNormalization* Interpolator) +{ + FSGIC_FString OutStringContainer; + FSGIC_FSGThresholdCommandImpl ThresholdsContainer{Thresholds->ToThresholdCommandImpl()}; + FSGIC_FSGSensorNormalizationImpl InterpolatorContainer{Interpolator->ToSensorNormalizationImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsRaw( + &OutStringContainer, &ThresholdsContainer, &InterpolatorContainer); + return OutStringContainer.String; +} + +USGNovaGlove::USGNovaGlove() + : USGHapticGlove() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGNovaGloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNovaGlove::USGNovaGlove(const USGNovaGloveInfo& DeviceInfo) + : USGHapticGlove() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl OutSharedPtrContainer; + FSGIC_FSGNovaGloveInfoImpl DeviceInfoContainer{DeviceInfo.ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo_MakeShared(&OutSharedPtrContainer, &DeviceInfoContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGNovaGlove::USGNovaGlove(const FSGDeviceImpl& SGDeviceImpl) + : USGHapticGlove(SGDeviceImpl) +{ +} + +USGNovaGlove::USGNovaGlove(const FSGHapticGloveImpl& HapticGloveImpl) + : USGHapticGlove(HapticGloveImpl) +{ +} + +USGNovaGlove::USGNovaGlove(const FSGNovaGloveImpl& NovaGloveImpl) + : USGHapticGlove(NovaGloveImpl) +{ +} + +USGNovaGlove::USGNovaGlove(const TSharedRef SGDeviceImpl) + : USGHapticGlove(SGDeviceImpl) +{ +} + +USGNovaGlove::USGNovaGlove(const TSharedRef HapticGloveImpl) + : USGHapticGlove(HapticGloveImpl) +{ +} + +USGNovaGlove::USGNovaGlove(const TSharedRef NovaGloveImpl) + : USGHapticGlove(NovaGloveImpl) +{ +} + +USGNovaGlove::~USGNovaGlove() = default; + +TSharedRef USGNovaGlove::ToNovaGloveImpl() const +{ + return FSGDeviceImplCast::ToNovaGloveImpl(ToSGDeviceImpl()); +} + +ESGDeviceType USGNovaGlove::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGNovaGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +FString USGNovaGlove::GetDeviceId() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGNovaGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGNovaGlove::GetHardwareVersion() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGNovaGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGNovaGlove::GetFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGNovaGlove::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +void USGNovaGlove::SetDeviceIndex(int32 NewIndex) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SetDeviceIndex(&InstanceContainer, NewIndex); +} + +bool USGNovaGlove::HasBattery() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_HasBattery(&InstanceContainer); +} + +bool USGNovaGlove::IsCharging() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_IsCharging(&InstanceContainer); + return bResult; +} + +bool USGNovaGlove::GetBatteryLevel(float& OutBatteryLevel) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetBatteryLevel(&InstanceContainer, &OutBatteryLevel); + return bResult; +} + +bool USGNovaGlove::IsRight() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_IsRight(&InstanceContainer); +} + + +bool USGNovaGlove::GetImuRotation(FQuat& OutImu) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = MoveTemp(OutImuContainer.Quat); + } + + return bResult; +} + +bool USGNovaGlove::GetImuRotation(FRotator& OutImu) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = OutImuContainer.Quat.Rotator(); + } + + return bResult; +} + +bool USGNovaGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FSGBasicHandModelImpl HandModelContainer{HandGeometry->ToBasicHandModelImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetHandPose( + &InstanceContainer, &HandModelContainer, &OutHandPoseContainer); + + if (bResult) + { + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); + } + + return bResult; +} + +bool USGNovaGlove::GetHandAngles(TArray>& OutHandAngles) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetHandAngles(&InstanceContainer, &OutHandAnglesContainer); + OutHandAngles = MoveTemp(OutHandAnglesContainer.Array); + return bResult; + +} + +ESGHapticGloveCalibrationState USGNovaGlove::GetCalibrationState() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGHapticGloveCalibrationState OutHapticGloveCalibrationStateContainer; + SGCoreImpl_FSGNovaGloveImpl_GetCalibrationState(&InstanceContainer, &OutHapticGloveCalibrationStateContainer); + return OutHapticGloveCalibrationStateContainer.State; +} + +void USGNovaGlove::EndCalibration() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + SGCoreImpl_FSGNovaGloveImpl_EndCalibration(&InstanceContainer); +} + +void USGNovaGlove::ResetCalibration() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + SGCoreImpl_FSGNovaGloveImpl_ResetCalibration(&InstanceContainer); +} + +void USGNovaGlove::StopHaptics() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + SGCoreImpl_FSGNovaGloveImpl_StopHaptics(&InstanceContainer); +} + +void USGNovaGlove::StopVibrations() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + SGCoreImpl_FSGNovaGloveImpl_StopVibrations(&InstanceContainer); +} + +bool USGNovaGlove::SendHaptics() +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNovaGlove::SupportsCustomWaveform(ESGHapticLocation AtLocation) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNovaGlove::SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGNovaGlove::QueueForceFeedbackLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevels(&InstanceContainer, &Levels01Container); +} + +bool USGNovaGlove::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); +} + +bool USGNovaGlove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGNovaGlove::QueueVibroLevel(ESGHapticLocation Location, float Level01) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + &InstanceContainer, &LocationContainer, Level01); +} + +void USGNovaGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGNovaGlove::GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGNovaGlove::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGNovaGloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGNovaGlove::GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGNovaGloveImpl_GetWristLocation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +USGNovaGloveInfo* USGNovaGlove::GetGloveInfo(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FSGNovaGloveInfoImpl OutGloveInfoContainer; + SGCoreImpl_FSGNovaGloveImpl_GetGloveInfo(&InstanceContainer, &OutGloveInfoContainer); + return USGNovaGloveInfo::NewNovaGloveInfo(Outer, MoveTemp(OutGloveInfoContainer.NovaGloveInfoImpl)); +} + +bool USGNovaGlove::SupportsThresholds() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SupportsThresholds(&InstanceContainer); +} + +bool USGNovaGlove::SupportsCustomWaveforms() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SupportsCustomWaveforms(&InstanceContainer); +} + +bool USGNovaGlove::SupportsOnBoardNormalization() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_SupportsOnBoardNormalization(&InstanceContainer); +} + +bool USGNovaGlove::GetSensorData(UObject* Outer, USGNovaGloveSensorData*& OutSensorData) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FSGNovaGloveSensorDataImpl OutSensorDataContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetSensorData(&InstanceContainer, &OutSensorDataContainer); + + if (bResult) + { + OutSensorData = USGNovaGloveSensorData::NewNovaGloveSensorData( + Outer, MoveTemp(OutSensorDataContainer.NovaGloveSensorDataImpl)); + } + + return bResult; +} + +bool USGNovaGlove::GetNormalizedInput(TArray& OutNormalizedValues) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_TArray_float OutNormalizedValuesContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveImpl_GetNormalizedInput( + &InstanceContainer, &OutNormalizedValuesContainer); + + if (bResult) + { + OutNormalizedValues = MoveTemp(OutNormalizedValuesContainer.Array); + } + + return bResult; +} + +FString USGNovaGlove::ToNovaCommand( + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FString OutStringContainer; + FSGIC_TArray_float ForceFeedbackLevelsContainer{ForceFeedbackLevels}; + FSGIC_TArray_float BuzzLevelsContainer{BuzzLevels}; + SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand(&InstanceContainer, &OutStringContainer, + &ForceFeedbackLevelsContainer, &BuzzLevelsContainer, WristLevel); + return OutStringContainer.String; +} + +bool USGNovaGlove::QueueVibroLevel(const int32 Finger, const float Amplitude) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude(&InstanceContainer, Finger, Amplitude); +} + +bool USGNovaGlove::QueueWristLevel(const float Amplitude) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_QueueWristLevel(&InstanceContainer, Amplitude); +} + +ESGNovaVibroMotor USGNovaGlove::ToNovaMotor(const ESGHapticLocation Location) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGNovaVibroMotor OutVibroMotorContainer; + FSGIC_ESGHapticLocation LocationContainer{Location}; + SGCoreImpl_FSGNovaGloveImpl_ToNovaMotor(&InstanceContainer, &OutVibroMotorContainer, &LocationContainer); + return OutVibroMotorContainer.Motor; +} + +int32 USGNovaGlove::ChannelIndex(const ESGNovaVibroMotor Motor) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_ESGNovaVibroMotor MotorContainer{Motor}; + return SGCoreImpl_FSGNovaGloveImpl_ChannelIndex(&InstanceContainer, &MotorContainer); +} + +void USGNovaGlove::ValidateWaveform(USGCustomWaveform* OutWaveform, const ESGNovaVibroMotor Motor) const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGNovaVibroMotor MotorContainer{Motor}; + SGCoreImpl_FSGNovaGloveImpl_ValidateWaveform(&InstanceContainer, &OutWaveformContainer, &MotorContainer); +} + +bool USGNovaGlove::SendCustomWaveform_Nova( + USGCustomWaveform* OutWaveform, const ESGNovaVibroMotor Motor, const bool bValidateWaveform) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FSGCustomWaveformImpl OutWaveformContainer{OutWaveform->ToCustomWaveformImpl()}; + FSGIC_ESGNovaVibroMotor MotorContainer{Motor}; + return SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform_Nova( + &InstanceContainer, &OutWaveformContainer, &MotorContainer, bValidateWaveform); +} + +bool USGNovaGlove::QueueThresholdCommand_Flexion(const int32 Finger, const float FlexionThreshold) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_QueueThresholdCommand_Flexion(&InstanceContainer, Finger, FlexionThreshold); +} + +bool USGNovaGlove::QueueClearThreshold(const int32 Finger) +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + return SGCoreImpl_FSGNovaGloveImpl_QueueClearThreshold(&InstanceContainer, Finger); +} + +FString USGNovaGlove::ToString() const +{ + FSGIC_TSharedPtr_FSGNovaGloveImpl InstanceContainer{ToNovaGloveImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNovaGloveImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String;; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveInfo.cpp new file mode 100644 index 0000000..b8eddfd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveInfo.cpp @@ -0,0 +1,285 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGNovaGloveInfo.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FString.h" + +struct USGNovaGloveInfo::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGNovaGloveInfoImpl NovaGloveInfoImpl; + + /************************ + * Owner object + ************************/ + + USGNovaGloveInfo* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGNovaGloveInfo* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGNovaGloveInfo* USGNovaGloveInfo::NewNovaGloveInfo(UObject* Outer, const FSGNovaGloveInfoImpl& NovaGloveInfoImpl) +{ + USGNovaGloveInfo* Instance = NewObject(Outer); + Instance->SetNovaGloveInfoImpl(NovaGloveInfoImpl); + return Instance; +} + +USGNovaGloveInfo* USGNovaGloveInfo::NewNovaGloveInfo(UObject* Outer) +{ + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_ctor(&OutNovaGloveInfoImplContainer); + + return NewNovaGloveInfo(Outer, MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl)); +} + +USGNovaGloveInfo* USGNovaGloveInfo::NewNovaGloveInfo(UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, bool bRightHanded, + const FQuat& ImuCorrection, int32 NumberOfSensors) +{ + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + SGCoreImpl_FSGNovaGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_ImuCorrection_NumberOfSensors( + &OutNovaGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, &ImuCorrectionContainer, NumberOfSensors); + + return NewNovaGloveInfo(Outer, MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl)); +} + +bool USGNovaGloveInfo::Parse(UObject* Outer, const FString& ConstantsString, USGNovaGloveInfo*& OutGloveInfo) +{ + FSGIC_FString ConstantsStringContainer{ConstantsString}; + FSGIC_FSGNovaGloveInfoImpl OutGloveInfoImplContainer; + const bool bResult = SGCoreImpl_FSGNovaGloveInfoImpl_Parse(&ConstantsStringContainer, &OutGloveInfoImplContainer); + + if (bResult) + { + OutGloveInfo = NewNovaGloveInfo(Outer, MoveTemp(OutGloveInfoImplContainer.NovaGloveInfoImpl)); + } + + return bResult; +} + +USGNovaGloveInfo* USGNovaGloveInfo::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FString SerializedStringContainer{SerializedString}; + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_Deserialize(&OutNovaGloveInfoImplContainer, &SerializedStringContainer); + + return NewNovaGloveInfo(Outer, MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl)); +} + +USGNovaGloveInfo::USGNovaGloveInfo() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_ctor(&OutNovaGloveInfoImplContainer); + + Pimpl->NovaGloveInfoImpl = MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl); +} + +USGNovaGloveInfo::USGNovaGloveInfo( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FQuat& ImuCorrection, const int32 NumberOfSensors) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + SGCoreImpl_FSGNovaGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_ImuCorrection_NumberOfSensors( + &OutNovaGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, &ImuCorrectionContainer, NumberOfSensors); + + Pimpl->NovaGloveInfoImpl = MoveTemp(OutNovaGloveInfoImplContainer.NovaGloveInfoImpl); +} + +USGNovaGloveInfo::USGNovaGloveInfo(const FSGNovaGloveInfoImpl& NovaGloveInfoImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetNovaGloveInfoImpl(NovaGloveInfoImpl); +} + +USGNovaGloveInfo::~USGNovaGloveInfo() = default; + +void USGNovaGloveInfo::SetNovaGloveInfoImpl(const FSGNovaGloveInfoImpl& NovaGloveInfoImpl) +{ + FSGIC_FSGNovaGloveInfoImpl OutNovaGloveInfoContainer; + FSGIC_FSGNovaGloveInfoImpl RhsContainer{NovaGloveInfoImpl}; + SGCoreImpl_FSGNovaGloveInfoImpl_ctor_copy(&OutNovaGloveInfoContainer, &RhsContainer); + Pimpl->NovaGloveInfoImpl = MoveTemp(OutNovaGloveInfoContainer.NovaGloveInfoImpl); +} + +const FSGNovaGloveInfoImpl& USGNovaGloveInfo::ToNovaGloveInfoImpl() const +{ + return Pimpl->NovaGloveInfoImpl; +} + +FSGNovaGloveInfoImpl& USGNovaGloveInfo::ToNovaGloveInfoImpl() +{ + return Pimpl->NovaGloveInfoImpl; +} + +FString USGNovaGloveInfo::GetDeviceId() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGNovaGloveInfo::GetHardwareVersion() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGNovaGloveInfo::GetFirmwareVersion() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGNovaGloveInfo::GetSubFirmwareVersion() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGNovaGloveInfo::IsRight() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_IsRight(&InstanceContainer); +} + +FQuat USGNovaGloveInfo::GetImuCorrectionQ() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FQuat OutCorrectionContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_GetImuCorrection(&InstanceContainer, &OutCorrectionContainer); + return OutCorrectionContainer.Quat; +} + +FRotator USGNovaGloveInfo::GetImuCorrection() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FQuat OutCorrectionContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_GetImuCorrection(&InstanceContainer, &OutCorrectionContainer); + return OutCorrectionContainer.Quat.Rotator(); +} + +int32 USGNovaGloveInfo::GetNumberOfSensors() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_GetNumberOfSensors(&InstanceContainer); +} + +bool USGNovaGloveInfo::FirmwareNewerThan( + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareNewerThan(&InstanceContainer, + FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGNovaGloveInfo::FirmwareOlderThan( + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareOlderThan(&InstanceContainer, + FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGNovaGloveInfo::Equals(const USGNovaGloveInfo* NovaGloveInfo) const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FSGNovaGloveInfoImpl NovaGloveInfoImplContainer{NovaGloveInfo->ToNovaGloveInfoImpl()}; + return SGCoreImpl_FSGNovaGloveInfoImpl_Equals(&InstanceContainer, &NovaGloveInfoImplContainer); +} + +FString USGNovaGloveInfo::ToString() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGNovaGloveInfo::SGSerialize() const +{ + FSGIC_FSGNovaGloveInfoImpl InstanceContainer{ToNovaGloveInfoImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNovaGloveInfoImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGNovaGloveInfo::FImpl::FImpl(USGNovaGloveInfo* InOwner) + : Owner(InOwner) +{ +} + +USGNovaGloveInfo::FImpl::~FImpl() = default; + +void USGNovaGloveInfo::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveSensorData.cpp new file mode 100644 index 0000000..61e4d4e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGNovaGloveSensorData.cpp @@ -0,0 +1,301 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGNovaGloveSensorData.h" + +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGNovaGloveSensorDataImpl.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGNovaSensorLocation.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_FVector.h" + +struct USGNovaGloveSensorData::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGNovaGloveSensorDataImpl NovaGloveSensorDataImpl; + + /************************ + * Owner object + ************************/ + + USGNovaGloveSensorData* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGNovaGloveSensorData* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGNovaGloveSensorData* USGNovaGloveSensorData::NewNovaGloveSensorData( + UObject* Outer, const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl) +{ + USGNovaGloveSensorData* Instance = NewObject(Outer); + Instance->SetNovaGloveSensorDataImpl(NovaGloveSensorDataImpl); + return Instance; +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::NewNovaGloveSensorData(UObject* Outer) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor(&OutNovaGloveSensorDataImplContainer); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::NewNovaGloveSensorData( + UObject* Outer, const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNovaGloveSensorDataImplContainer, &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::NewNovaGloveSensorData( + UObject* Outer, const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNovaGloveSensorDataImplContainer, &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::Empty(UObject* Outer) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_Empty(&OutNovaGloveSensorDataImplContainer); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::Parse(UObject* Outer, + const FString& RawData, const USGNovaGloveInfo* GloveInfo) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_FString RawDataString{RawData}; + FSGIC_FSGNovaGloveInfoImpl GloveInfoContainer{GloveInfo->ToNovaGloveInfoImpl()}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_Parse(&OutNovaGloveSensorDataImplContainer, + &RawDataString, &GloveInfoContainer); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData* USGNovaGloveSensorData::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_Deserialize(&OutNovaGloveSensorDataImplContainer, &SerializedStringContainer); + + return NewNovaGloveSensorData(Outer, MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl)); +} + +USGNovaGloveSensorData::USGNovaGloveSensorData() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor(&OutNovaGloveSensorDataImplContainer); + + Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl); +} + +USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNovaGloveSensorDataImplContainer, &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl); +} + +USGNovaGloveSensorData::USGNovaGloveSensorData(const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataImplContainer; + FSGIC_TArray_FVector ValuesContainer{Values}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + &OutNovaGloveSensorDataImplContainer, &ValuesContainer, ParsedValues, + &ImuRotationContainer, bImuParsed, BatteryLevel, bCharging); + + Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataImplContainer.NovaGloveSensorDataImpl); +} + +USGNovaGloveSensorData::USGNovaGloveSensorData(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetNovaGloveSensorDataImpl(NovaGloveSensorDataImpl); +} + +USGNovaGloveSensorData::~USGNovaGloveSensorData() = default; + +void USGNovaGloveSensorData::SetNovaGloveSensorDataImpl(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl) +{ + FSGIC_FSGNovaGloveSensorDataImpl OutNovaGloveSensorDataContainer; + FSGIC_FSGNovaGloveSensorDataImpl RhsContainer{NovaGloveSensorDataImpl}; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_copy(&OutNovaGloveSensorDataContainer, &RhsContainer); + Pimpl->NovaGloveSensorDataImpl = MoveTemp(OutNovaGloveSensorDataContainer.NovaGloveSensorDataImpl); +} + +const FSGNovaGloveSensorDataImpl& USGNovaGloveSensorData::ToNovaGloveSensorDataImpl() const +{ + return Pimpl->NovaGloveSensorDataImpl; +} + +TArray USGNovaGloveSensorData::GetSensorValues() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_TArray_FVector OutValuesContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValues(&InstanceContainer, &OutValuesContainer); + return OutValuesContainer.Array; +} + +float USGNovaGloveSensorData::GetSensorValue(const ESGFinger Finger, const ESGNovaSensorLocation Location) const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_ESGFinger FingerContainer{Finger}; + FSGIC_ESGNovaSensorLocation LocationContainer{Location}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValue( + &InstanceContainer, &FingerContainer, &LocationContainer); +} + +int32 USGNovaGloveSensorData::GetParsedValues() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_GetParsedValues(&InstanceContainer); +} + +FQuat USGNovaGloveSensorData::GetImuRotationQ() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator USGNovaGloveSensorData::GetImuRotation() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +bool USGNovaGloveSensorData::IsImuParsed() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_IsImuParsed(&InstanceContainer); +} + +float USGNovaGloveSensorData::GetBatteryLevel() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_GetBatteryLevel(&InstanceContainer); +} + +bool USGNovaGloveSensorData::IsCharging() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_IsCharging(&InstanceContainer); +} + +bool USGNovaGloveSensorData::Equals(const USGNovaGloveSensorData* NovaGloveSensorData) const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_FSGNovaGloveSensorDataImpl NovaGloveSensorDataContainer{NovaGloveSensorData->ToNovaGloveSensorDataImpl()}; + return SGCoreImpl_FSGNovaGloveSensorDataImpl_Equals(&InstanceContainer, &NovaGloveSensorDataContainer); +} + +FString USGNovaGloveSensorData::ToString() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGNovaGloveSensorData::SGSerialize() const +{ + FSGIC_FSGNovaGloveSensorDataImpl InstanceContainer{ToNovaGloveSensorDataImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGNovaGloveSensorDataImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGNovaGloveSensorData::FImpl::FImpl(USGNovaGloveSensorData* InOwner) + : Owner(InOwner) +{ +} + +USGNovaGloveSensorData::FImpl::~FImpl() = default; + +void USGNovaGloveSensorData::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseCom.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseCom.cpp new file mode 100644 index 0000000..fe2cd65 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseCom.cpp @@ -0,0 +1,86 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseCom.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FString.h" + +bool FSGSenseCom::RegisterExe() +{ + return SGCoreImpl_FSGSenseComImpl_RegisterExe(); +} + +bool FSGSenseCom::RegisterExe(const FString& ExePath) +{ + FSGIC_FString ExePathContainer{ExePath}; + return SGCoreImpl_FSGSenseComImpl_RegisterExe_ExePath(&ExePathContainer); +} + +bool FSGSenseCom::GetExePath(FString& OutExePath) +{ + FSGIC_FString OutExePathContainer; + const bool bResult = SGCoreImpl_FSGSenseComImpl_GetExePath(&OutExePathContainer); + + if (bResult) + { + OutExePath = MoveTemp(OutExePathContainer.String); + } + + return bResult; +} + +bool FSGSenseCom::ScanningActive() +{ + return SGCoreImpl_FSGSenseComImpl_ScanningActive(); +} + +bool FSGSenseCom::GetCurrentExeDirectory(FString& OutDirectory) +{ + FSGIC_FString OutDirectoryContainer; + const bool bResult = SGCoreImpl_FSGSenseComImpl_GetCurrentExeDirectory(&OutDirectoryContainer); + + if (bResult) + { + OutDirectory = MoveTemp(OutDirectoryContainer.String); + } + + return bResult; +} + +bool FSGSenseCom::StartupSenseCom() +{ + return SGCoreImpl_FSGSenseComImpl_StartupSenseCom(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp new file mode 100644 index 0000000..e39f6e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlove.cpp @@ -0,0 +1,826 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGlove.h" + +#include "SGCore/SGDeviceImplCast.h" +#include "SGCore/SGHandInterpolator.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGSenseGloveSensorNormalizer.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGCoreImpl/SGHandInterpolatorImpl.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_ESGSenseGloveThumperCommand.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGSenseGlovePoseImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_FSGSenseGloveImpl.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h" + +USGSenseGlove* USGSenseGlove::NewSenseGlove(UObject* Outer, const FSGSenseGloveImpl& SenseGloveImpl) +{ + USGSenseGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(SenseGloveImpl); + return Instance; +} + +USGSenseGlove* USGSenseGlove::NewSenseGlove(UObject* Outer, TSharedRef SenseGloveImpl) +{ + USGSenseGlove* Instance = NewObject(Outer); + Instance->SetSGDeviceImpl(MoveTemp(SenseGloveImpl)); + return Instance; +} + +USGSenseGlove* USGSenseGlove::NewSenseGlove(UObject* Outer) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + return NewSenseGlove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGSenseGlove* USGSenseGlove::NewSenseGlove(UObject* Outer, const USGSenseGloveInfo& Model) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + FSGIC_FSGSenseGloveInfoImpl ModelContainer{Model.ToSenseGloveInfoImpl()}; + SGCoreImpl_FSGSenseGloveImpl_ctor_Model_MakeShared(&OutSharedPtrContainer, &ModelContainer); + + return NewSenseGlove(Outer, OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGDevice* USGSenseGlove::Parse(UObject* Outer, const FString& ConstantsString) +{ + FSGIC_FSGSenseGloveImpl OutSenseGloveImplContainer; + FSGIC_FString ConstantsStringContainer{ConstantsString}; + SGCoreImpl_FSGSenseGloveImpl_Parse(&OutSenseGloveImplContainer, &ConstantsStringContainer); + + return NewSenseGlove(Outer, MoveTemp(OutSenseGloveImplContainer.SenseGloveImpl)); +} + +TArray USGSenseGlove::GetSenseGloves(UObject* Outer) +{ + FSGIC_TArray_FSGSenseGloveImpl OutGlovesContainer; + SGCoreImpl_FSGSenseGloveImpl_GetSenseGloves(&OutGlovesContainer); + TArray Gloves; + for (const FSGSenseGloveImpl& SenseGloveImpl: OutGlovesContainer.Array) + { + USGSenseGlove* SenseGlove = USGSenseGlove::NewSenseGlove(Outer, SenseGloveImpl); + Gloves.Add(SenseGlove); + } + return Gloves; +} + +bool USGSenseGlove::GetSenseGlove(UObject* Outer, USGSenseGlove*& OutGlove) +{ + FSGIC_FSGSenseGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_OutGlove(&OutGloveContainer); + + if (bResult) + { + OutGlove = NewSenseGlove(Outer, MoveTemp(OutGloveContainer.SenseGloveImpl)); + } + + return bResult; +} + +bool USGSenseGlove::GetSenseGlove(UObject* Outer, const bool bRightHanded, USGSenseGlove*& OutGlove) +{ + FSGIC_FSGSenseGloveImpl OutGloveContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_bRightHanded_OutGlove( + bRightHanded, &OutGloveContainer); + + if (bResult) + { + OutGlove = NewSenseGlove(Outer, MoveTemp(OutGloveContainer.SenseGloveImpl)); + } + + return bResult; +} + +void USGSenseGlove::CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + bRightHanded, &MountedOnContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGSenseGlove::CalculateGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_CalculateGloveLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + bRightHanded, &MountedOnContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGSenseGlove::CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector GloveWristPositionOffsetContainer{GloveWristPositionOffset}; + FSGIC_FQuat GloveWristRotationOffsetContainer{GloveWristRotationOffset}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + bRightHanded, &MountedOnContainer, + &GloveWristPositionOffsetContainer, &GloveWristRotationOffsetContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGSenseGlove::CalculateWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector GloveWristPositionOffsetContainer{GloveWristPositionOffset}; + FSGIC_FQuat GloveWristRotationOffsetContainer{GloveWristRotationOffset.Quaternion()}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_CalculateWristLocation( + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + bRightHanded, &MountedOnContainer, + &GloveWristPositionOffsetContainer, &GloveWristRotationOffsetContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +ANSICHAR USGSenseGlove::GetHapticsByte() +{ + return SGCoreImpl_FSGSenseGloveImpl_GetHapticsByte(); +} + +ANSICHAR USGSenseGlove::GetThumperByte() +{ + return SGCoreImpl_FSGSenseGloveImpl_GetThumperByte(); +} + +FVector USGSenseGlove::GetDefaultThimbleOffset() +{ + FSGIC_FVector OutOffsetContainer; + SGCoreImpl_FSGSenseGloveImpl_GetDefaultThimbleOffset(&OutOffsetContainer); + return OutOffsetContainer.Vector; +} + +USGSenseGlovePose* USGSenseGlove::CalculateGlovePose(UObject* Outer, + const USGSenseGloveSensorData* SensorData, + const USGSenseGloveInfo* GloveModel) +{ + FSGIC_FSGSenseGlovePoseImpl OutPoseContainer; + FSGIC_FSGSenseGloveSensorDataImpl SensorDataContainer{SensorData->ToSenseGloveSensorDataImpl()}; + FSGIC_FSGSenseGloveInfoImpl GloveModelContainer{GloveModel->ToSenseGloveInfoImpl()}; + SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_SensorData_GloveModel( + &OutPoseContainer, &SensorDataContainer, &GloveModelContainer); + + return USGSenseGlovePose::NewSenseGlovePose(Outer, MoveTemp(OutPoseContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlove::CalculateGlovePose(UObject* Outer, + const TArray>& GloveAngles, + const USGSenseGloveInfo* GloveModel) +{ + FSGIC_FSGSenseGlovePoseImpl OutPoseContainer; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{GloveAngles}; + FSGIC_FSGSenseGloveInfoImpl GloveModelContainer{GloveModel->ToSenseGloveInfoImpl()}; + SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_GloveAngles_GloveModel( + &OutPoseContainer, &GloveAnglesContainer, &GloveModelContainer); + + return USGSenseGlovePose::NewSenseGlovePose(Outer, MoveTemp(OutPoseContainer.SenseGlovePoseImpl)); +} + +void USGSenseGlove::NormalizeValues( + const TArray& SumAngles, const USGSenseGloveSensorNormalizer* Normalizer, + TArray& OutFlexions, TArray& OutAbductions) +{ + FSGIC_TArray_FVector SumAnglesContainer{SumAngles}; + FSGIC_FSGSenseGloveSensorNormalizerImpl NormalizerContainer{Normalizer->ToSenseGloveSensorNormalizerImpl()}; + FSGIC_TArray_float OutFlexionsContainer; + FSGIC_TArray_float OutAbductionsContainer; + SGCoreImpl_FSGSenseGloveImpl_NormalizeValues( + &SumAnglesContainer, &NormalizerContainer, &OutFlexionsContainer, &OutAbductionsContainer); + + OutFlexions = MoveTemp(OutFlexionsContainer.Array); + OutAbductions = MoveTemp(OutAbductionsContainer.Array); +} + +void USGSenseGlove::CalculateHandAngles( + const USGSenseGlovePose* GlovePose, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + TArray>& OutHandAngles) +{ + FSGIC_FSGSenseGlovePoseImpl GlovePoseContainer{GlovePose->ToSenseGlovePoseImpl()}; + FSGIC_FSGSenseGloveSensorNormalizerImpl NormalizerContainer{Normalizer->ToSenseGloveSensorNormalizerImpl()}; + FSGIC_FSGHandInterpolatorImpl NormalizedToAnglesContainer{NormalizedToAngles->ToHandInterpolatorImpl()}; + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + SGCoreImpl_FSGSenseGloveImpl_CalculateHandAngles( + &GlovePoseContainer, &NormalizerContainer, &NormalizedToAnglesContainer, &OutHandAnglesContainer); + + OutHandAngles = MoveTemp(OutHandAnglesContainer.Array); +} + +void USGSenseGlove::CalculateHandPose( + UObject* Outer, + const USGSenseGlovePose* GlovePose, const USGBasicHandModel* HandModel, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + USGHandPose*& OutHandPose) +{ + FSGIC_FSGSenseGlovePoseImpl GlovePoseContainer{GlovePose->ToSenseGlovePoseImpl()}; + FSGIC_FSGSenseGloveSensorNormalizerImpl NormalizerContainer{Normalizer->ToSenseGloveSensorNormalizerImpl()}; + FSGIC_FSGHandInterpolatorImpl NormalizedToAnglesContainer{NormalizedToAngles->ToHandInterpolatorImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + SGCoreImpl_FSGSenseGloveImpl_CalculateHandAngles( + &GlovePoseContainer, &NormalizerContainer, &NormalizedToAnglesContainer, &OutHandPoseContainer); + + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); +} + +USGSenseGlove::USGSenseGlove() + : USGHapticGlove() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl OutSharedPtrContainer; + SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared(&OutSharedPtrContainer); + + SetSGDeviceImpl(OutSharedPtrContainer.Ptr.ToSharedRef()); +} + +USGSenseGlove::USGSenseGlove(const USGSenseGloveInfo& Model) + : USGHapticGlove() +{ +} + +USGSenseGlove::USGSenseGlove(const FSGDeviceImpl& SGDeviceImpl) + : USGHapticGlove(SGDeviceImpl) +{ +} + +USGSenseGlove::USGSenseGlove(const FSGHapticGloveImpl& HapticGloveImpl) + : USGHapticGlove(HapticGloveImpl) +{ +} + +USGSenseGlove::USGSenseGlove(const FSGSenseGloveImpl& SenseGloveImpl) + : USGHapticGlove(SenseGloveImpl) +{ +} + +USGSenseGlove::USGSenseGlove(TSharedRef SGDeviceImpl) + : USGHapticGlove(MoveTemp(SGDeviceImpl)) +{ +} + +USGSenseGlove::USGSenseGlove(TSharedRef HapticGloveImpl) + : USGHapticGlove(MoveTemp(HapticGloveImpl)) +{ +} + +USGSenseGlove::USGSenseGlove(TSharedRef SenseGloveImpl) + : USGHapticGlove(MoveTemp(SenseGloveImpl)) +{ +} + +USGSenseGlove::~USGSenseGlove() = default; + +TSharedRef USGSenseGlove::ToSenseGloveImpl() const +{ + return FSGDeviceImplCast::ToSenseGloveImpl(ToSGDeviceImpl()); +} + +ESGDeviceType USGSenseGlove::GetDeviceType() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_ESGDeviceType OutTypeContainer; + SGCoreImpl_FSGSenseGloveImpl_GetDeviceType(&InstanceContainer, &OutTypeContainer); + return OutTypeContainer.Type; +} + +FString USGSenseGlove::GetDeviceId() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGSenseGloveImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGSenseGlove::GetHardwareVersion() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGSenseGloveImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGSenseGlove::GetFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGSenseGlove::GetSubFirmwareVersion() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGSenseGlove::IsRight() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_IsRight(&InstanceContainer); +} + +bool USGSenseGlove::GetImuRotation(FQuat& OutImu) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = MoveTemp(OutImuContainer.Quat); + } + + return bResult; +} + +bool USGSenseGlove::GetImuRotation(FRotator& OutImu) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FQuat OutImuContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetImuRotation(&InstanceContainer, &OutImuContainer); + + if (bResult) + { + OutImu = OutImuContainer.Quat.Rotator(); + } + + return bResult; +} + +bool USGSenseGlove::GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FSGBasicHandModelImpl HandModelContainer{HandGeometry->ToBasicHandModelImpl()}; + FSGIC_FSGHandPoseImpl OutHandPoseContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetHandPose( + &InstanceContainer, &HandModelContainer, &OutHandPoseContainer); + + if (bResult) + { + OutHandPose = USGHandPose::NewHandPose(Outer, MoveTemp(OutHandPoseContainer.HandPoseImpl)); + } + + return bResult; +} + +bool USGSenseGlove::GetHandAngles(TArray>& OutHandAngles) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_TArray_TArray_FVector OutHandAnglesContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetHandAngles(&InstanceContainer, &OutHandAnglesContainer); + OutHandAngles = MoveTemp(OutHandAnglesContainer.Array); + return bResult; +} + +ESGHapticGloveCalibrationState USGSenseGlove::GetCalibrationState() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_ESGHapticGloveCalibrationState OutHapticGloveCalibrationStateContainer; + SGCoreImpl_FSGSenseGloveImpl_GetCalibrationState(&InstanceContainer, &OutHapticGloveCalibrationStateContainer); + return OutHapticGloveCalibrationStateContainer.State; +} + +void USGSenseGlove::EndCalibration() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + SGCoreImpl_FSGSenseGloveImpl_EndCalibration(&InstanceContainer); +} + +void USGSenseGlove::ResetCalibration() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + SGCoreImpl_FSGSenseGloveImpl_ResetCalibration(&InstanceContainer); +} + +void USGSenseGlove::StopHaptics() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + SGCoreImpl_FSGSenseGloveImpl_StopHaptics(&InstanceContainer); +} + +void USGSenseGlove::StopVibrations() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + SGCoreImpl_FSGSenseGloveImpl_StopVibrations(&InstanceContainer); +} + +bool USGSenseGlove::SendHaptics() +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_SendHaptics(&InstanceContainer); +} + +bool USGSenseGlove::QueueForceFeedbackLevels(const TArray& Levels01) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_TArray_float Levels01Container{Levels01}; + return SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevels(&InstanceContainer, &Levels01Container); +} + +bool USGSenseGlove::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel(&InstanceContainer, Finger, Level01); +} + +bool USGSenseGlove::QueueVibroLevels(const TArray& Amplitudes) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_TArray_float AmplitudesContainer{Amplitudes}; + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels(&InstanceContainer, &AmplitudesContainer); +} + +bool USGSenseGlove::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_ESGHapticLocation LocationContainer{Location}; + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + &InstanceContainer, &LocationContainer, Level01); +} + +void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_MountedOn_OutGlovePosition_OutGloveRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, &MountedOnContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = MoveTemp(OutGloveRotationContainer.Quat); +} + +void USGSenseGlove::GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_ESGFinger MountedOnContainer{MountedOn}; + FSGIC_FVector OutGlovePositionContainer; + FSGIC_FQuat OutGloveRotationContainer; + + SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_MountedOn_OutGlovePosition_OutGloveRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, &MountedOnContainer, + &OutGlovePositionContainer, &OutGloveRotationContainer); + + OutGlovePosition = MoveTemp(OutGlovePositionContainer.Vector); + OutGloveRotation = OutGloveRotationContainer.Quat.Rotator(); +} + +void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutWristPosition_OutWristRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutWristPosition_OutWristRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector GloveWristPositionOffsetContainer{GloveWristPositionOffset}; + FSGIC_FQuat GloveWristRotationOffsetContainer{GloveWristRotationOffset}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_GloveWristPositionOffset_GloveWristRotationOffset_OutWristPosition_OutWristRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &GloveWristPositionOffsetContainer, &GloveWristRotationOffsetContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = MoveTemp(OutWristRotationContainer.Quat); +} + +void USGSenseGlove::GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector ReferencePositionContainer{ReferencePosition}; + FSGIC_FQuat ReferenceRotationContainer{ReferenceRotation.Quaternion()}; + FSGIC_ESGPositionalTrackingHardware TrackingHardwareContainer{TrackingHardware}; + FSGIC_FVector GloveWristPositionOffsetContainer{GloveWristPositionOffset}; + FSGIC_FQuat GloveWristRotationOffsetContainer{GloveWristRotationOffset.Quaternion()}; + FSGIC_FVector OutWristPositionContainer; + FSGIC_FQuat OutWristRotationContainer; + SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_GloveWristPositionOffset_GloveWristRotationOffset_OutWristPosition_OutWristRotation( + &InstanceContainer, + &ReferencePositionContainer, &ReferenceRotationContainer, + &TrackingHardwareContainer, + &GloveWristPositionOffsetContainer, &GloveWristRotationOffsetContainer, + &OutWristPositionContainer, &OutWristRotationContainer); + + OutWristPosition = MoveTemp(OutWristPositionContainer.Vector); + OutWristRotation = OutWristRotationContainer.Quat.Rotator(); +} + +USGSenseGloveInfo* USGSenseGlove::GetGloveInfo(UObject* Outer) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FSGSenseGloveInfoImpl OutGloveInfoContainer; + SGCoreImpl_FSGSenseGloveImpl_GetGloveInfo(&InstanceContainer, &OutGloveInfoContainer); + + return USGSenseGloveInfo::NewSenseGloveInfo(Outer, MoveTemp(OutGloveInfoContainer.SenseGloveInfoImpl)); +} + +TArray USGSenseGlove::GetFingerThimbleOffsets() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_TArray_FVector OutFingerThimbleOffsetsContainer; + SGCoreImpl_FSGSenseGloveImpl_GetFingerThimbleOffsets(&InstanceContainer, &OutFingerThimbleOffsetsContainer); + return OutFingerThimbleOffsetsContainer.Array; +} + +void USGSenseGlove::SetFingerThimbleOffset(const int32 Finger, const FVector& Offset) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FVector OffsetContainer{Offset}; + SGCoreImpl_FSGSenseGloveImpl_SetFingerThimbleOffset(&InstanceContainer, Finger, &OffsetContainer); +} + +bool USGSenseGlove::SupportsWristActuator() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_SupportsWristActuator(&InstanceContainer); +} + +bool USGSenseGlove::GetSensorData(UObject* Outer, USGSenseGloveSensorData*& OutSensorData) const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FSGSenseGloveSensorDataImpl OutSensorDataContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetSensorData(&InstanceContainer, &OutSensorDataContainer); + + if (bResult) + { + OutSensorData = USGSenseGloveSensorData::NewSenseGloveSensorData( + Outer, MoveTemp(OutSensorDataContainer.SenseGloveSensorDataImpl)); + } + + return bResult; +} + +bool USGSenseGlove::GetGlovePose(UObject* Outer, USGSenseGlovePose*& OutGlovePose) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FSGSenseGlovePoseImpl OutGlovePoseContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_OutGlovePose( + &InstanceContainer, &OutGlovePoseContainer); + + if (bResult) + { + OutGlovePose = USGSenseGlovePose::NewSenseGlovePose( + Outer, MoveTemp(OutGlovePoseContainer.SenseGlovePoseImpl)); + } + + return bResult; +} + +bool USGSenseGlove::GetGlovePose( + UObject* Outer, const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FSGSenseGloveSensorDataImpl SensorDataContainer{SensorData->ToSenseGloveSensorDataImpl()}; + FSGIC_FSGSenseGlovePoseImpl OutGlovePoseContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_SensorData_OutGlovePose( + &InstanceContainer, &SensorDataContainer, &OutGlovePoseContainer); + + if (bResult) + { + OutGlovePose = USGSenseGlovePose::NewSenseGlovePose( + Outer, MoveTemp(OutGlovePoseContainer.SenseGlovePoseImpl)); + } + + return bResult; +} + +bool USGSenseGlove::QueueVibroLevel(const int32 Finger, const float Amplitude) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + return SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude(&InstanceContainer, Finger, Amplitude); +} + +bool USGSenseGlove::QueueThumperCommand(ESGSenseGloveThumperCommand Command) +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_ESGSenseGloveThumperCommand CommandContainer{Command}; + return SGCoreImpl_FSGSenseGloveImpl_QueueThumperCommand(&InstanceContainer, &CommandContainer); +} + +FString USGSenseGlove::ToString() const +{ + FSGIC_TSharedPtr_FSGSenseGloveImpl InstanceContainer{ToSenseGloveImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String;; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveInfo.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveInfo.cpp new file mode 100644 index 0000000..830c0eb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveInfo.cpp @@ -0,0 +1,555 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGloveInfo.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGSenseGloveInfo::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGSenseGloveInfoImpl SenseGloveInfoImpl; + + /************************ + * Owner object + ************************/ + + USGSenseGloveInfo* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSenseGloveInfo* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FSGSenseGloveInfoImpl& SenseGloveInfoImpl) +{ + USGSenseGloveInfo* Instance = NewObject(Outer); + Instance->SetSenseGloveInfoImpl(SenseGloveInfoImpl); + return Instance; +} + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor(&OutSenseGloveInfoImplContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion, const bool bRightHanded, + const int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray>& GloveLengths, + const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{GloveLengths}; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion, const bool bRightHanded, + const int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray>& GloveLengths, + const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection.Quaternion()}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{GloveLengths}; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion, const bool bRightHanded, + const int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray& GloveLengths, + const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{ + FSGArrayUtils::FromNestedBPArray(GloveLengths) + }; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo* USGSenseGloveInfo::NewSenseGloveInfo(UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion, const bool bRightHanded, + const int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray& GloveLengths, + const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection.Quaternion()}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{ + FSGArrayUtils::FromNestedBPArray(GloveLengths) + }; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +bool USGSenseGloveInfo::Parse(UObject* Outer, const FString& ConstantsString, USGSenseGloveInfo*& OutGloveInfo, + const bool bUpdateOldModels) +{ + FSGIC_FString ConstantsStringContainer{ConstantsString}; + FSGIC_FSGSenseGloveInfoImpl OutGloveInfoImplContainer; + const bool bResult = SGCoreImpl_FSGSenseGloveInfoImpl_Parse(&ConstantsStringContainer, &OutGloveInfoImplContainer, + bUpdateOldModels); + + if (bResult) + { + OutGloveInfo = NewSenseGloveInfo(Outer, MoveTemp(OutGloveInfoImplContainer.SenseGloveInfoImpl)); + } + + return bResult; +} + +USGSenseGloveInfo* USGSenseGloveInfo::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FString SerializedStringContainer{SerializedString}; + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_Deserialize(&OutSenseGloveInfoImplContainer, &SerializedStringContainer); + + return NewSenseGloveInfo(Outer, MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo::USGSenseGloveInfo() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor(&OutSenseGloveInfoImplContainer); + + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl); +} + +USGSenseGloveInfo::USGSenseGloveInfo( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{GloveLengths}; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl); +} + +USGSenseGloveInfo::USGSenseGloveInfo( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection.Quaternion()}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{GloveLengths}; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl); +} + +USGSenseGloveInfo::USGSenseGloveInfo( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{StartRotations}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{ + FSGArrayUtils::FromNestedBPArray(GloveLengths) + }; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl); +} + +USGSenseGloveInfo::USGSenseGloveInfo( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoImplContainer; + FSGIC_FString DeviceIdContainer{DeviceId}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FQuat ImuCorrectionContainer{ImuCorrection.Quaternion()}; + FSGIC_TArray_FVector StartPositionsContainer{StartPositions}; + FSGIC_TArray_FQuat StartRotationsContainer{FSGArrayUtils::RotatorsToQuats(StartRotations)}; + FSGIC_TArray_TArray_FVector GloveLengthsContainer{ + FSGArrayUtils::FromNestedBPArray(GloveLengths) + }; + FSGIC_TArray_bool FunctionsContainer{Functions}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + &OutSenseGloveInfoImplContainer, + &DeviceIdContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, &ImuCorrectionContainer, + &StartPositionsContainer, &StartRotationsContainer, + &GloveLengthsContainer, &FunctionsContainer); + + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoImplContainer.SenseGloveInfoImpl); +} + +USGSenseGloveInfo::USGSenseGloveInfo(const FSGSenseGloveInfoImpl& SenseGloveInfoImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetSenseGloveInfoImpl(SenseGloveInfoImpl); +} + +USGSenseGloveInfo::~USGSenseGloveInfo() = default; + +void USGSenseGloveInfo::SetSenseGloveInfoImpl(const FSGSenseGloveInfoImpl& SenseGloveInfoImpl) +{ + FSGIC_FSGSenseGloveInfoImpl OutSenseGloveInfoContainer; + FSGIC_FSGSenseGloveInfoImpl RhsContainer{SenseGloveInfoImpl}; + SGCoreImpl_FSGSenseGloveInfoImpl_ctor_copy(&OutSenseGloveInfoContainer, &RhsContainer); + Pimpl->SenseGloveInfoImpl = MoveTemp(OutSenseGloveInfoContainer.SenseGloveInfoImpl); +} + +const FSGSenseGloveInfoImpl& USGSenseGloveInfo::ToSenseGloveInfoImpl() const +{ + return Pimpl->SenseGloveInfoImpl; +} + +FSGSenseGloveInfoImpl& USGSenseGloveInfo::ToSenseGloveInfoImpl() +{ + return Pimpl->SenseGloveInfoImpl; +} + +FString USGSenseGloveInfo::GetDeviceId() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FString OutIdContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetDeviceId(&InstanceContainer, &OutIdContainer); + return OutIdContainer.String; +} + +FString USGSenseGloveInfo::GetHardwareVersion() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FString OutVersionContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetHardwareVersion(&InstanceContainer, &OutVersionContainer); + return OutVersionContainer.String; +} + +int32 USGSenseGloveInfo::GetFirmwareVersion() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + return SGCoreImpl_FSGSenseGloveInfoImpl_GetFirmwareVersion(&InstanceContainer); +} + +int32 USGSenseGloveInfo::GetSubFirmwareVersion() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + return SGCoreImpl_FSGSenseGloveInfoImpl_GetSubFirmwareVersion(&InstanceContainer); +} + +bool USGSenseGloveInfo::IsRight() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + return SGCoreImpl_FSGSenseGloveInfoImpl_IsRight(&InstanceContainer); +} + +int32 USGSenseGloveInfo::GetNumberOfSensors() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + return SGCoreImpl_FSGSenseGloveInfoImpl_GetNumberOfSensors(&InstanceContainer); +} + +FQuat USGSenseGloveInfo::GetImuCorrectionQ() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FQuat OutCorrectionContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetImuCorrection(&InstanceContainer, &OutCorrectionContainer); + return OutCorrectionContainer.Quat; +} + +FRotator USGSenseGloveInfo::GetImuCorrection() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FQuat OutCorrectionContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetImuCorrection(&InstanceContainer, &OutCorrectionContainer); + return OutCorrectionContainer.Quat.Rotator(); +} + +TArray USGSenseGloveInfo::GetStartPositions() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPositions(&InstanceContainer, &OutPositionsContainer); + return OutPositionsContainer.Array; +} + +TArray USGSenseGloveInfo::GetStartRotationsQ() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotations(&InstanceContainer, &OutRotationsContainer); + return OutRotationsContainer.Array; +} + +TArray USGSenseGloveInfo::GetStartRotations() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotations(&InstanceContainer, &OutRotationsContainer); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +TArray> USGSenseGloveInfo::GetGloveLengths() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_TArray_FVector OutLengthsContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths(&InstanceContainer, &OutLengthsContainer); + return OutLengthsContainer.Array; +} + +TArray USGSenseGloveInfo::GetFunctions() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_bool OutFunctionsContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_GetFunctions(&InstanceContainer, &OutFunctionsContainer); + return OutFunctionsContainer.Array; +} + +FVector USGSenseGloveInfo::GetStartPosition(const ESGFinger Finger) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FVector OutPositionContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPosition(&InstanceContainer, &OutPositionContainer, &FingerContainer); + return OutPositionContainer.Vector; +} + +FQuat USGSenseGloveInfo::GetStartRotationQ(const ESGFinger Finger) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FQuat OutRotationContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer); + return OutRotationContainer.Quat; +} + +FRotator USGSenseGloveInfo::GetStartRotation(const ESGFinger Finger) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FQuat OutRotationContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotation(&InstanceContainer, &OutRotationContainer, &FingerContainer); + return OutRotationContainer.Quat.Rotator(); +} + +TArray USGSenseGloveInfo::GetGloveLengths(const ESGFinger Finger) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_FVector OutLengths; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths_Finger(&InstanceContainer, &OutLengths, &FingerContainer); + return OutLengths.Array; +} + +TArray> USGSenseGloveInfo::ToGloveAngles(const TArray>& SensorAngles) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_TArray_TArray_FVector OutAnglesContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles}; + SGCoreImpl_FSGSenseGloveInfoImpl_ToGloveAngles(&InstanceContainer, &OutAnglesContainer, &SensorAnglesContainer); + return OutAnglesContainer.Array; +} + +bool USGSenseGloveInfo::Equals(const USGSenseGloveInfo* SenseGloveInfo) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FSGSenseGloveInfoImpl SenseGloveInfoImplContainer{SenseGloveInfo->ToSenseGloveInfoImpl()}; + return SGCoreImpl_FSGSenseGloveInfoImpl_Equals(&InstanceContainer, &SenseGloveInfoImplContainer); +} + +FString USGSenseGloveInfo::ToString(const bool bShortNotation) const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_ToString_bShortNotation(&InstanceContainer, &OutStringContainer, bShortNotation); + return OutStringContainer.String; +} + +FString USGSenseGloveInfo::ToString() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGSenseGloveInfo::SGSerialize() const +{ + FSGIC_FSGSenseGloveInfoImpl InstanceContainer{ToSenseGloveInfoImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveInfoImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGSenseGloveInfo::FImpl::FImpl(USGSenseGloveInfo* InOwner) + : Owner(InOwner) +{ +} + +USGSenseGloveInfo::FImpl::~FImpl() = default; + +void USGSenseGloveInfo::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlovePose.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlovePose.cpp new file mode 100644 index 0000000..ebfa3ea --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGlovePose.cpp @@ -0,0 +1,409 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGlovePose.h" + +#include "SGCore/SGSenseGloveInfo.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGSenseGlovePoseImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGSenseGlovePoseImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGSenseGlovePose::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGSenseGlovePoseImpl SenseGlovePoseImpl; + + /************************ + * Owner object + ************************/ + + USGSenseGlovePose* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSenseGlovePose* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const FSGSenseGlovePoseImpl& SenseGlovePoseImpl) +{ + USGSenseGlovePose* Instance = NewObject(Outer); + Instance->SetSenseGlovePoseImpl(SenseGlovePoseImpl); + return Instance; +} + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor(&OutSenseGlovePoseImplContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{JointRotations}; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{GloveAngles}; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{FSGArrayUtils::RotatorsToQuats(JointRotations)}; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{GloveAngles}; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::FromNestedBPArray(JointRotations) + }; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(GloveAngles) + }; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::NewSenseGlovePose(UObject* Outer, const bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::RotatorsToQuats(JointRotations) + }; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(GloveAngles) + }; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::IdlePose(UObject* Outer, const USGSenseGloveInfo* GloveInfo) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_FSGSenseGloveInfoImpl SenseGloveInfoContainer{GloveInfo->ToSenseGloveInfoImpl()}; + SGCoreImpl_FSGSenseGlovePoseImpl_IdlePose(&OutSenseGlovePoseImplContainer, &SenseGloveInfoContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose* USGSenseGlovePose::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGSenseGlovePoseImpl_Deserialize(&OutSenseGlovePoseImplContainer, &SerializedStringContainer); + + return NewSenseGlovePose(Outer, MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl)); +} + +USGSenseGlovePose::USGSenseGlovePose() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor(&OutSenseGlovePoseImplContainer); + + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl); +} + +USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{JointRotations}; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{GloveAngles}; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl); +} + +USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{JointPositions}; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{FSGArrayUtils::RotatorsToQuats(JointRotations)}; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{GloveAngles}; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl); +} + +USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::FromNestedBPArray(JointRotations) + }; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(GloveAngles) + }; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl); +} + +USGSenseGlovePose::USGSenseGlovePose(const bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseImplContainer; + FSGIC_TArray_TArray_FVector JointPositionsContainer{ + FSGArrayUtils::FromNestedBPArray(JointPositions) + }; + FSGIC_TArray_TArray_FQuat JointRotationsContainer{ + FSGArrayUtils::RotatorsToQuats(JointRotations) + }; + FSGIC_TArray_TArray_FVector GloveAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(GloveAngles) + }; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + &OutSenseGlovePoseImplContainer, bRightHanded, &JointPositionsContainer, + &JointRotationsContainer, &GloveAnglesContainer); + + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseImplContainer.SenseGlovePoseImpl); +} + +USGSenseGlovePose::USGSenseGlovePose(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetSenseGlovePoseImpl(SenseGlovePoseImpl); +} + +USGSenseGlovePose::~USGSenseGlovePose() = default; + +void USGSenseGlovePose::SetSenseGlovePoseImpl(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl) +{ + FSGIC_FSGSenseGlovePoseImpl OutSenseGlovePoseContainer; + FSGIC_FSGSenseGlovePoseImpl RhsContainer{SenseGlovePoseImpl}; + SGCoreImpl_FSGSenseGlovePoseImpl_ctor_copy(&OutSenseGlovePoseContainer, &RhsContainer); + Pimpl->SenseGlovePoseImpl = MoveTemp(OutSenseGlovePoseContainer.SenseGlovePoseImpl); +} + +const FSGSenseGlovePoseImpl& USGSenseGlovePose::ToSenseGlovePoseImpl() const +{ + return Pimpl->SenseGlovePoseImpl; +} + +bool USGSenseGlovePose::IsRight() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + return SGCoreImpl_FSGSenseGlovePoseImpl_IsRight(&InstanceContainer); +} + +TArray> USGSenseGlovePose::GetJointPositions() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetJointPositions(&InstanceContainer, &OutPositionsContainer); + return OutPositionsContainer.Array; +} + +TArray> USGSenseGlovePose::GetJointRotationsQ() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetJointRotations(&InstanceContainer, &OutRotationsContainer); + return OutRotationsContainer.Array; +} + +TArray> USGSenseGlovePose::GetJointRotations() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetJointRotations(&InstanceContainer, &OutRotationsContainer); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +TArray> USGSenseGlovePose::GetGloveAngles() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetGloveAngles(&InstanceContainer, &OutAnglesContainer); + return OutAnglesContainer.Array; +} + +TArray USGSenseGlovePose::GetThimblePositions() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_FVector OutPositionsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetThimblePositions(&InstanceContainer, &OutPositionsContainer); + return OutPositionsContainer.Array; +} + +TArray USGSenseGlovePose::GetThimbleRotationsQ() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations(&InstanceContainer, &OutRotationsContainer); + return OutRotationsContainer.Array; +} + +TArray USGSenseGlovePose::GetThimbleRotations() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_FQuat OutRotationsContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations(&InstanceContainer, &OutRotationsContainer); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +TArray USGSenseGlovePose::GetTotalGloveAngles() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_FVector OutAnglesContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_GetTotalGloveAngles(&InstanceContainer, &OutAnglesContainer); + return OutAnglesContainer.Array; +} + +TArray USGSenseGlovePose::CalculateFingertips(const TArray& FingerOffsets) const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_TArray_FVector OutFingertipsContainer; + FSGIC_TArray_FVector FingerOffsetsContainer{FingerOffsets}; + SGCoreImpl_FSGSenseGlovePoseImpl_CalculateFingertips(&InstanceContainer, &OutFingertipsContainer, + &FingerOffsetsContainer); + return OutFingertipsContainer.Array; +} + +bool USGSenseGlovePose::Equals(const USGSenseGlovePose* SenseGlovePose) const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_FSGSenseGlovePoseImpl SenseGlovePoseContainer{SenseGlovePose->ToSenseGlovePoseImpl()}; + return SGCoreImpl_FSGSenseGlovePoseImpl_Equals(&InstanceContainer, &SenseGlovePoseContainer); +} + +FString USGSenseGlovePose::ToString(const bool bShortFormat) const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_ToString(&InstanceContainer, &OutStringContainer, bShortFormat); + return OutStringContainer.String; +} + +FString USGSenseGlovePose::SGSerialize() const +{ + FSGIC_FSGSenseGlovePoseImpl InstanceContainer{ToSenseGlovePoseImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGlovePoseImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGSenseGlovePose::FImpl::FImpl(USGSenseGlovePose* InOwner) + : Owner(InOwner) +{ +} + +USGSenseGlovePose::FImpl::~FImpl() = default; + +void USGSenseGlovePose::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorData.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorData.cpp new file mode 100644 index 0000000..1a9e56b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorData.cpp @@ -0,0 +1,351 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGloveSensorData.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGSenseGloveSensorDataImpl.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_float.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGSenseGloveSensorData::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGSenseGloveSensorDataImpl SenseGloveSensorDataImpl; + + /************************ + * Owner object + ************************/ + + USGSenseGloveSensorData* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSenseGloveSensorData* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData( + UObject* Outer, const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl) +{ + USGSenseGloveSensorData* Instance = NewObject(Outer); + Instance->SetSenseGloveSensorDataImpl(SenseGloveSensorDataImpl); + return Instance; +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData(UObject* Outer) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor(&OutSenseGloveSensorDataImplContainer); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData( + UObject* Outer, const TArray>& SensorAngles, + const FQuat& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData( + UObject* Outer, const TArray>& SensorAngles, + const FRotator& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData( + UObject* Outer, const TArray& SensorAngles, + const FQuat& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(SensorAngles) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::NewSenseGloveSensorData( + UObject* Outer, const TArray& SensorAngles, + const FRotator& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(SensorAngles) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::Empty(UObject* Outer) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_Empty(&OutSenseGloveSensorDataImplContainer); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::Parse(UObject* Outer, + const FString& RawData, const USGSenseGloveInfo* GloveInfo) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_FString RawDataString{RawData}; + FSGIC_FSGSenseGloveInfoImpl GloveInfoContainer{GloveInfo->ToSenseGloveInfoImpl()}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_Parse(&OutSenseGloveSensorDataImplContainer, + &RawDataString, &GloveInfoContainer); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData* USGSenseGloveSensorData::Deserialize(UObject* Outer, const FString& SerializedString) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_FString SerializedStringContainer{SerializedString}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_Deserialize(&OutSenseGloveSensorDataImplContainer, + &SerializedStringContainer); + + return NewSenseGloveSensorData(Outer, MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl)); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor(&OutSenseGloveSensorDataImplContainer); + + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray>& SensorAngles, const FQuat& ImuRotation, + const int32 ParsedValues, const bool bImuParsed) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles}; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray>& SensorAngles, const FRotator& ImuRotation, + const int32 ParsedValues, const bool bImuParsed) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{SensorAngles}; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray& SensorAngles, const FQuat& ImuRotation, + const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(SensorAngles) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData(const TArray& SensorAngles, const FRotator& ImuRotation, + const int32 ParsedValues, const bool bImuParsed) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataImplContainer; + FSGIC_TArray_TArray_float SensorAnglesContainer{ + FSGArrayUtils::FromNestedBPArray(SensorAngles) + }; + FSGIC_FQuat ImuRotationContainer{ImuRotation.Quaternion()}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + &OutSenseGloveSensorDataImplContainer, &SensorAnglesContainer, &ImuRotationContainer, ParsedValues, bImuParsed); + + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataImplContainer.SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::USGSenseGloveSensorData(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetSenseGloveSensorDataImpl(SenseGloveSensorDataImpl); +} + +USGSenseGloveSensorData::~USGSenseGloveSensorData() = default; + +void USGSenseGloveSensorData::SetSenseGloveSensorDataImpl(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl) +{ + FSGIC_FSGSenseGloveSensorDataImpl OutSenseGloveSensorDataContainer; + FSGIC_FSGSenseGloveSensorDataImpl RhsContainer{SenseGloveSensorDataImpl}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_copy(&OutSenseGloveSensorDataContainer, &RhsContainer); + Pimpl->SenseGloveSensorDataImpl = MoveTemp(OutSenseGloveSensorDataContainer.SenseGloveSensorDataImpl); +} + +const FSGSenseGloveSensorDataImpl& USGSenseGloveSensorData::ToSenseGloveSensorDataImpl() const +{ + return Pimpl->SenseGloveSensorDataImpl; +} + +TArray> USGSenseGloveSensorData::GetSensorAngles() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_TArray_TArray_float OutAnglesContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles(&InstanceContainer, &OutAnglesContainer); + return OutAnglesContainer.Array; +} + +TArray USGSenseGloveSensorData::GetSensorAngles(const ESGFinger Finger) const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_TArray_float OutAnglesContainer; + FSGIC_ESGFinger FingerContainer{Finger}; + SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles_Finger(&InstanceContainer, &OutAnglesContainer, + &FingerContainer); + return OutAnglesContainer.Array; +} + +TArray USGSenseGloveSensorData::GetAngleSequence() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_TArray_float OutSequenceContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_GetAngleSequence(&InstanceContainer, &OutSequenceContainer); + return OutSequenceContainer.Array; +} + +FQuat USGSenseGloveSensorData::GetImuRotationQ() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator USGSenseGloveSensorData::GetImuRotation() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_GetImuRotation(&InstanceContainer, &OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +int32 USGSenseGloveSensorData::GetParsedValues() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + return SGCoreImpl_FSGSenseGloveSensorDataImpl_GetParsedValues(&InstanceContainer); +} + +bool USGSenseGloveSensorData::IsImuParsed() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + return SGCoreImpl_FSGSenseGloveSensorDataImpl_IsImuParsed(&InstanceContainer); +} + +bool USGSenseGloveSensorData::Equals(const USGSenseGloveSensorData* SenseGloveSensorData) const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_FSGSenseGloveSensorDataImpl SenseGloveSensorDataContainer{SenseGloveSensorData->ToSenseGloveSensorDataImpl()}; + return SGCoreImpl_FSGSenseGloveSensorDataImpl_Equals(&InstanceContainer, &SenseGloveSensorDataContainer); +} + +FString USGSenseGloveSensorData::ToString() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +FString USGSenseGloveSensorData::SGSerialize() const +{ + FSGIC_FSGSenseGloveSensorDataImpl InstanceContainer{ToSenseGloveSensorDataImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGSenseGloveSensorDataImpl_Serialize(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGSenseGloveSensorData::FImpl::FImpl(USGSenseGloveSensorData* InOwner) + : Owner(InOwner) +{ +} + +USGSenseGloveSensorData::FImpl::~FImpl() = default; + +void USGSenseGloveSensorData::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorNormalizer.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorNormalizer.cpp new file mode 100644 index 0000000..120e01d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveSensorNormalizer.cpp @@ -0,0 +1,172 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGloveSensorNormalizer.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGSenseGloveSensorNormalizer::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGSenseGloveSensorNormalizerImpl SenseGloveSensorNormalizerImpl; + + /************************ + * Owner object + ************************/ + + USGSenseGloveSensorNormalizer* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSenseGloveSensorNormalizer* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSenseGloveSensorNormalizer* USGSenseGloveSensorNormalizer::NewSenseGloveSensorNormalizer( + UObject* Outer, const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl) +{ + USGSenseGloveSensorNormalizer* Instance = NewObject(Outer); + Instance->SetSenseGloveSensorNormalizerImpl(SenseGloveSensorNormalizerImpl); + return Instance; +} + +USGSenseGloveSensorNormalizer* USGSenseGloveSensorNormalizer::NewSenseGloveSensorNormalizer(UObject* Outer) +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl OutSenseGloveSensorNormalizerImplContainer; + SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor(&OutSenseGloveSensorNormalizerImplContainer); + + return NewSenseGloveSensorNormalizer( + Outer, MoveTemp(OutSenseGloveSensorNormalizerImplContainer.SenseGloveSensorNormalizerImpl)); +} + +USGSenseGloveSensorNormalizer* USGSenseGloveSensorNormalizer::NewSenseGloveSensorNormalizer( + UObject* Outer, const bool bRightHanded) +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl OutSenseGloveSensorNormalizerImplContainer; + SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_bRightHanded( + &OutSenseGloveSensorNormalizerImplContainer, bRightHanded); + + return NewSenseGloveSensorNormalizer( + Outer, MoveTemp(OutSenseGloveSensorNormalizerImplContainer.SenseGloveSensorNormalizerImpl)); +} + +USGSenseGloveSensorNormalizer::USGSenseGloveSensorNormalizer() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl OutSenseGloveSensorNormalizerImplContainer; + SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor(&OutSenseGloveSensorNormalizerImplContainer); + + Pimpl->SenseGloveSensorNormalizerImpl = MoveTemp( + OutSenseGloveSensorNormalizerImplContainer.SenseGloveSensorNormalizerImpl); +} + +USGSenseGloveSensorNormalizer::USGSenseGloveSensorNormalizer(bool bRightHanded) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl OutSenseGloveSensorNormalizerImplContainer; + SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_bRightHanded( + &OutSenseGloveSensorNormalizerImplContainer, bRightHanded); + + Pimpl->SenseGloveSensorNormalizerImpl = + MoveTemp(OutSenseGloveSensorNormalizerImplContainer.SenseGloveSensorNormalizerImpl); +} + +USGSenseGloveSensorNormalizer::USGSenseGloveSensorNormalizer( + const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetSenseGloveSensorNormalizerImpl(SenseGloveSensorNormalizerImpl); +} + +USGSenseGloveSensorNormalizer::~USGSenseGloveSensorNormalizer() = default; + +void USGSenseGloveSensorNormalizer::SetSenseGloveSensorNormalizerImpl( + const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl) +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl OutSenseGloveSensorNormalizerContainer; + FSGIC_FSGSenseGloveSensorNormalizerImpl RhsContainer{SenseGloveSensorNormalizerImpl}; + SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_copy(&OutSenseGloveSensorNormalizerContainer, &RhsContainer); + Pimpl->SenseGloveSensorNormalizerImpl = MoveTemp( + OutSenseGloveSensorNormalizerContainer.SenseGloveSensorNormalizerImpl); +} + +const FSGSenseGloveSensorNormalizerImpl& USGSenseGloveSensorNormalizer::ToSenseGloveSensorNormalizerImpl() const +{ + return Pimpl->SenseGloveSensorNormalizerImpl; +} + +float USGSenseGloveSensorNormalizer::NormalizeFlexion(const int32 Finger, const float SumFlexionAngles) const +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl InstanceContainer{ToSenseGloveSensorNormalizerImpl()}; + return SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeFlexion( + &InstanceContainer, Finger, SumFlexionAngles); +} + +float USGSenseGloveSensorNormalizer::NormalizeAbduction(const int32 Finger, const float SumAbductionAngles) const +{ + FSGIC_FSGSenseGloveSensorNormalizerImpl InstanceContainer{ToSenseGloveSensorNormalizerImpl()}; + return SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeAbduction( + &InstanceContainer, Finger, SumAbductionAngles); +} + +USGSenseGloveSensorNormalizer::FImpl::FImpl(USGSenseGloveSensorNormalizer* InOwner) + : Owner(InOwner) +{ +} + +USGSenseGloveSensorNormalizer::FImpl::~FImpl() = default; + +void USGSenseGloveSensorNormalizer::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveVars.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveVars.cpp new file mode 100644 index 0000000..aa610dc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSenseGloveVars.cpp @@ -0,0 +1,166 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSenseGloveVars.h" + +#include "SGCore/SGSenseGloveInfo.h" +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +FString FSGSenseGloveVars::GetStandardConstantsString(const FString& HardwareVersion, const float FirmwareVersion, + const bool bRightHanded) +{ + FSGIC_FString OutStringContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetStandardConstantsString(&OutStringContainer, + &HardwareVersionContainer, FirmwareVersion, + bRightHanded); + return OutStringContainer.String; +} + +FString FSGSenseGloveVars::GetSensorString(const FString& HardwareVersion, const float FirmwareVersion) +{ + FSGIC_FString OutStringContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetSensorString(&OutStringContainer, &HardwareVersionContainer, FirmwareVersion); + return OutStringContainer.String; +} + +TArray FSGSenseGloveVars::GetStartPositions(const FString& HardwareVersion, const bool bRightHanded) +{ + FSGIC_TArray_FVector OutPositionsContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetStartPositions(&OutPositionsContainer, &HardwareVersionContainer, bRightHanded); + return OutPositionsContainer.Array; +} + +TArray FSGSenseGloveVars::GetStartRotationsQ(const FString& HardwareVersion, const bool bRightHanded) +{ + FSGIC_TArray_FQuat OutRotationsContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetStartRotations(&OutRotationsContainer, &HardwareVersionContainer, bRightHanded); + return OutRotationsContainer.Array; +} + +TArray FSGSenseGloveVars::GetStartRotations(const FString& HardwareVersion, const bool bRightHanded) +{ + FSGIC_TArray_FQuat OutRotationsContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetStartRotations(&OutRotationsContainer, &HardwareVersionContainer, bRightHanded); + return FSGArrayUtils::QuatsToRotators(OutRotationsContainer.Array); +} + +TArray> FSGSenseGloveVars::GetGloveLengths(const FString& HardwareVersion) +{ + FSGIC_TArray_TArray_FVector OutLengthsContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetGloveLengths(&OutLengthsContainer, &HardwareVersionContainer); + return OutLengthsContainer.Array; +} + +/* +TArray FSGSenseGloveVars::GetGloveLengths_BP(const FString& HardwareVersion) +{ + return FSGArrayUtils::ToNestedBPArray(GetGloveLengths(HardwareVersion)); +} +*/ +int32 FSGSenseGloveVars::GetSensors(const FString& HardwareVersion) +{ + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + return SGCoreImpl_FSGSenseGloveVarsImpl_GetSensors(&HardwareVersionContainer); +} + +FQuat FSGSenseGloveVars::GetImuCorrectionQ(const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + FSGIC_FQuat OutCorrectionContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetImuCorrection(&OutCorrectionContainer, + &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + return OutCorrectionContainer.Quat; +} + +FRotator FSGSenseGloveVars::GetImuCorrection(const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + FSGIC_FQuat OutCorrectionContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetImuCorrection(&OutCorrectionContainer, + &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + return OutCorrectionContainer.Quat.Rotator(); +} + +TArray FSGSenseGloveVars::GetFunctions(const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + FSGIC_TArray_bool OutFunctionsContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GetFunctions(&OutFunctionsContainer, + &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion); + return OutFunctionsContainer.Array; +} + +USGSenseGloveInfo* FSGSenseGloveVars::GenerateGloveModel(UObject* Outer, const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded) +{ + FSGIC_FSGSenseGloveInfoImpl OutModelContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded( + &OutModelContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, bRightHanded); + + return USGSenseGloveInfo::NewSenseGloveInfo(Outer, MoveTemp(OutModelContainer.SenseGloveInfoImpl)); +} + +USGSenseGloveInfo* FSGSenseGloveVars::GenerateGloveModel(UObject* Outer, const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FString& CustomId) +{ + FSGIC_FSGSenseGloveInfoImpl OutModelContainer; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FString CustomIdContainer{CustomId}; + SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_CustomId( + &OutModelContainer, &HardwareVersionContainer, FirmwareVersion, SubFirmwareVersion, bRightHanded, + &CustomIdContainer); + + return USGSenseGloveInfo::NewSenseGloveInfo(Outer, MoveTemp(OutModelContainer.SenseGloveInfoImpl)); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSensorNormalization.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSensorNormalization.cpp new file mode 100644 index 0000000..d176570 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGSensorNormalization.cpp @@ -0,0 +1,228 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGSensorNormalization.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGSensorNormalizationImpl.h" +#include "SGInterop/SGIC_FSGSensorNormalizationImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGSensorNormalization::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGSensorNormalizationImpl SensorNormalizationImpl; + + /************************ + * Owner object + ************************/ + + USGSensorNormalization* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSensorNormalization* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSensorNormalization* USGSensorNormalization::NewSensorNormalization( + UObject* Outer, const FSGSensorNormalizationImpl& SensorNormalizationImpl) +{ + USGSensorNormalization* Instance = NewObject(Outer); + Instance->SetSensorNormalizationImpl(SensorNormalizationImpl); + return Instance; +} + +USGSensorNormalization* USGSensorNormalization::NewSensorNormalization(UObject* Outer) +{ + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizationImplContainer; + SGCoreImpl_FSGSensorNormalizationImpl_ctor(&OutSensorNormalizationImplContainer); + + return NewSensorNormalization(Outer, MoveTemp(OutSensorNormalizationImplContainer.SensorNormalizationImpl)); +} + +USGSensorNormalization* USGSensorNormalization::NewSensorNormalization( + UObject* Outer, const TArray& MovementRanges) +{ + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizationImplContainer; + FSGIC_TArray_float MovementRangesContainer{MovementRanges}; + SGCoreImpl_FSGSensorNormalizationImpl_ctor_MovementRanges( + &OutSensorNormalizationImplContainer, &MovementRangesContainer); + + return NewSensorNormalization(Outer, MoveTemp(OutSensorNormalizationImplContainer.SensorNormalizationImpl)); +} + +USGSensorNormalization::USGSensorNormalization() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizationImplContainer; + SGCoreImpl_FSGSensorNormalizationImpl_ctor(&OutSensorNormalizationImplContainer); + + Pimpl->SensorNormalizationImpl = MoveTemp(OutSensorNormalizationImplContainer.SensorNormalizationImpl); +} + +USGSensorNormalization::USGSensorNormalization(const TArray& MovementRanges) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizationImplContainer; + FSGIC_TArray_float MovementRangesContainer{MovementRanges}; + SGCoreImpl_FSGSensorNormalizationImpl_ctor_MovementRanges( + &OutSensorNormalizationImplContainer, &MovementRangesContainer); + + Pimpl->SensorNormalizationImpl = MoveTemp(OutSensorNormalizationImplContainer.SensorNormalizationImpl); +} + +USGSensorNormalization::USGSensorNormalization(const FSGSensorNormalizationImpl& SensorNormalizationImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetSensorNormalizationImpl(SensorNormalizationImpl); +} + +USGSensorNormalization::~USGSensorNormalization() = default; + +void USGSensorNormalization::SetSensorNormalizationImpl(const FSGSensorNormalizationImpl& SensorNormalizationImpl) +{ + FSGIC_FSGSensorNormalizationImpl OutSensorNormalizationContainer; + FSGIC_FSGSensorNormalizationImpl RhsContainer{SensorNormalizationImpl}; + SGCoreImpl_FSGSensorNormalizationImpl_ctor_copy(&OutSensorNormalizationContainer, &RhsContainer); + Pimpl->SensorNormalizationImpl = MoveTemp(OutSensorNormalizationContainer.SensorNormalizationImpl); +} + +const FSGSensorNormalizationImpl& USGSensorNormalization::ToSensorNormalizationImpl() const +{ + return Pimpl->SensorNormalizationImpl; +} + +bool USGSensorNormalization::CollectsNormalization() const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_CollectsNormalization(&InstanceContainer); +} + +void USGSensorNormalization::SetCollectNormalization(const bool bCollectNormalization) +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + SGCoreImpl_FSGSensorNormalizationImpl_SetCollectNormalization( + &InstanceContainer, bCollectNormalization); +} + +int32 USGSensorNormalization::GetLength() const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_GetLength(&InstanceContainer); +} + +int32 USGSensorNormalization::GetMoveCount() const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_GetMoveCount(&InstanceContainer); +} + +bool USGSensorNormalization::AllSensorsMoving() const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_AllSensorsMoving(&InstanceContainer); +} + +void USGSensorNormalization::ResetNormalization() +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_ResetNormalization(&InstanceContainer); +} + +void USGSensorNormalization::UpdateNormalization(const float Value, const int32 Index) +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_UpdateNormalization( + &InstanceContainer, Value, Index); +} + +float USGSensorNormalization::NormalizeValue(const float Value, const int32 Index) +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValue( + &InstanceContainer, Value, Index); +} + +TArray USGSensorNormalization::NormalizeValues(const TArray& Values) +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + FSGIC_TArray_float ValuesContainer{Values}; + FSGIC_TArray_float OutNormalizedValuesContainer; + SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValues( + &InstanceContainer, &ValuesContainer, &OutNormalizedValuesContainer); + + return OutNormalizedValuesContainer.Array; +} + +bool USGSensorNormalization::MovedEnough(const int32 Index) const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_MovedEnough(&InstanceContainer, Index); +} + +float USGSensorNormalization::Denormalize(const float Value01, const int32 Index, const float FallbackValue) const +{ + FSGIC_FSGSensorNormalizationImpl InstanceContainer{ToSensorNormalizationImpl()}; + return SGCoreImpl_FSGSensorNormalizationImpl_Denormalize( + &InstanceContainer, Value01, Index, FallbackValue); +} + +USGSensorNormalization::FImpl::FImpl(USGSensorNormalization* InOwner) + : Owner(InOwner) +{ +} + +USGSensorNormalization::FImpl::~FImpl() = default; + +void USGSensorNormalization::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGThresholdCommand.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGThresholdCommand.cpp new file mode 100644 index 0000000..2157892 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGThresholdCommand.cpp @@ -0,0 +1,225 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGThresholdCommand.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGCoreImpl/SGThresholdCommandImpl.h" +#include "SGInterop/SGIC_FSGThresholdCommandImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGUtils/SGArrayUtils.h" + +struct USGThresholdCommand::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGThresholdCommandImpl ThresholdCommandImpl; + + /************************ + * Owner object + ************************/ + + USGThresholdCommand* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGThresholdCommand* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGThresholdCommand* USGThresholdCommand::NewThresholdCommand( + UObject* Outer, const FSGThresholdCommandImpl& ThresholdCommandImpl) +{ + USGThresholdCommand* Instance = NewObject(Outer); + Instance->SetThresholdCommandImpl(ThresholdCommandImpl); + return Instance; +} + +USGThresholdCommand* USGThresholdCommand::NewThresholdCommand(UObject* Outer) +{ + FSGIC_FSGThresholdCommandImpl OutThresholdCommandImplContainer; + SGCoreImpl_FSGThresholdCommandImpl_ctor(&OutThresholdCommandImplContainer); + + return NewThresholdCommand(Outer, MoveTemp(OutThresholdCommandImplContainer.ThresholdCommandImpl)); +} + +USGThresholdCommand* USGThresholdCommand::NewThresholdCommand( + UObject* Outer, const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + FSGIC_FSGThresholdCommandImpl OutThresholdCommandImplContainer; + FSGIC_TArray_bool AffectedFingersContainer{AffectedFingers}; + FSGIC_TArray_float ThresholdValuesContainer{ThresholdValues}; + SGCoreImpl_FSGThresholdCommandImpl_ctor_AffectedFingers_ThresholdValues( + &OutThresholdCommandImplContainer, &AffectedFingersContainer, &ThresholdValuesContainer); + + return NewThresholdCommand(Outer, MoveTemp(OutThresholdCommandImplContainer.ThresholdCommandImpl)); +} + +USGThresholdCommand::USGThresholdCommand() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGThresholdCommandImpl OutThresholdCommandImplContainer; + SGCoreImpl_FSGThresholdCommandImpl_ctor(&OutThresholdCommandImplContainer); + + Pimpl->ThresholdCommandImpl = MoveTemp(OutThresholdCommandImplContainer.ThresholdCommandImpl); +} + +USGThresholdCommand::USGThresholdCommand(const TArray& AffectedFingers, const TArray& ThresholdValues) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + FSGIC_FSGThresholdCommandImpl OutThresholdCommandImplContainer; + FSGIC_TArray_bool AffectedFingersContainer{AffectedFingers}; + FSGIC_TArray_float ThresholdValuesContainer{ThresholdValues}; + SGCoreImpl_FSGThresholdCommandImpl_ctor_AffectedFingers_ThresholdValues( + &OutThresholdCommandImplContainer, &AffectedFingersContainer, &ThresholdValuesContainer); + + Pimpl->ThresholdCommandImpl = MoveTemp(OutThresholdCommandImplContainer.ThresholdCommandImpl); +} + +USGThresholdCommand::USGThresholdCommand(const FSGThresholdCommandImpl& ThresholdCommandImpl) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + SetThresholdCommandImpl(ThresholdCommandImpl); +} + +USGThresholdCommand::~USGThresholdCommand() = default; + +void USGThresholdCommand::SetThresholdCommandImpl(const FSGThresholdCommandImpl& ThresholdCommandImpl) +{ + FSGIC_FSGThresholdCommandImpl OutThresholdCommandContainer; + FSGIC_FSGThresholdCommandImpl RhsContainer{ThresholdCommandImpl}; + SGCoreImpl_FSGThresholdCommandImpl_ctor_copy(&OutThresholdCommandContainer, &RhsContainer); + Pimpl->ThresholdCommandImpl = MoveTemp(OutThresholdCommandContainer.ThresholdCommandImpl); +} + +const FSGThresholdCommandImpl& USGThresholdCommand::ToThresholdCommandImpl() const +{ + return Pimpl->ThresholdCommandImpl; +} + +float USGThresholdCommand::GetThreshold(const int32 Finger) const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + return SGCoreImpl_FSGThresholdCommandImpl_GetThreshold(&InstanceContainer, Finger); +} + +void USGThresholdCommand::SetThreshold(const int32 Finger, const float ThresholdValue) +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + return SGCoreImpl_FSGThresholdCommandImpl_SetThreshold(&InstanceContainer, Finger, ThresholdValue); +} + +TArray USGThresholdCommand::GetThresholds() const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + FSGIC_TArray_float ThresholdsContainer; + SGCoreImpl_FSGThresholdCommandImpl_GetThresholds(&InstanceContainer, &ThresholdsContainer); + return ThresholdsContainer.Array; +} + +void USGThresholdCommand::SetThresholds(const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + FSGIC_TArray_bool AffectedFingersContainer{AffectedFingers}; + FSGIC_TArray_float ThresholdValuesContainer{ThresholdValues}; + SGCoreImpl_FSGThresholdCommandImpl_SetThresholds( + &InstanceContainer, &AffectedFingersContainer, &ThresholdValuesContainer); +} + +bool USGThresholdCommand::GetFingerActive(const int32 Finger) const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + return SGCoreImpl_FSGThresholdCommandImpl_GetFingerActive(&InstanceContainer, Finger); +} + +TArray USGThresholdCommand::GetActiveFingers() const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + FSGIC_TArray_bool OutActiveFingersContainer; + SGCoreImpl_FSGThresholdCommandImpl_GetActiveFingers(&InstanceContainer, &OutActiveFingersContainer); + return OutActiveFingersContainer.Array; +} + +void USGThresholdCommand::ClearThreshold(const int32 Finger) +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + SGCoreImpl_FSGThresholdCommandImpl_ClearThreshold(&InstanceContainer, Finger); +} + +void USGThresholdCommand::ClearThresholds() +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + SGCoreImpl_FSGThresholdCommandImpl_ClearThresholds(&InstanceContainer); +} + +bool USGThresholdCommand::Equals(const USGThresholdCommand* ThresholdCommand) const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + FSGIC_FSGThresholdCommandImpl ThresholdCommandContainer{ThresholdCommand->ToThresholdCommandImpl()}; + return SGCoreImpl_FSGThresholdCommandImpl_Equals(&InstanceContainer, &ThresholdCommandContainer); +} + +FString USGThresholdCommand::ToString() const +{ + FSGIC_FSGThresholdCommandImpl InstanceContainer{ToThresholdCommandImpl()}; + FSGIC_FString OutStringContainer; + SGCoreImpl_FSGThresholdCommandImpl_ToString(&InstanceContainer, &OutStringContainer); + return OutStringContainer.String; +} + +USGThresholdCommand::FImpl::FImpl(USGThresholdCommand* InOwner) + : Owner(InOwner) +{ +} + +USGThresholdCommand::FImpl::~FImpl() = default; + +void USGThresholdCommand::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp new file mode 100644 index 0000000..cc91a4a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SGCore/SGTracking.cpp @@ -0,0 +1,867 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCore/SGTracking.h" + +#include "SGCoreImpl/SGExportedFunctions.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGUtils/SGArrayUtils.h" + +void FSGTracking::CalculateLocation(const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation) +{ + FSGIC_FVector TrackedPositionContainer{TrackedPosition}; + FSGIC_FQuat TrackedRotationContainer{TrackedRotation}; + FSGIC_FVector PositionOffsetContainer{PositionOffset}; + FSGIC_FQuat RotationOffsetContainer{RotationOffset}; + FSGIC_FVector OutNewPositionContainer; + FSGIC_FQuat OutNewRotationContainer; + + SGCoreImpl_FSGTrackingImpl_CalculateLocation( + &TrackedPositionContainer, &TrackedRotationContainer, + &PositionOffsetContainer, &RotationOffsetContainer, + &OutNewPositionContainer, &OutNewRotationContainer); + + OutNewPosition = MoveTemp(OutNewPositionContainer.Vector); + OutNewRotation = MoveTemp(OutNewRotationContainer.Quat); +} + +void FSGTracking::CalculateLocation(const FVector& TrackedPosition, const FRotator& TrackedRotation, + const FVector& PositionOffset, const FRotator& RotationOffset, + FVector& OutNewPosition, FRotator& OutNewRotation) +{ + FSGIC_FVector TrackedPositionContainer{TrackedPosition}; + FSGIC_FQuat TrackedRotationContainer{TrackedRotation.Quaternion()}; + FSGIC_FVector PositionOffsetContainer{PositionOffset}; + FSGIC_FQuat RotationOffsetContainer{RotationOffset.Quaternion()}; + FSGIC_FVector OutNewPositionContainer; + FSGIC_FQuat OutNewRotationContainer; + + SGCoreImpl_FSGTrackingImpl_CalculateLocation( + &TrackedPositionContainer, &TrackedRotationContainer, + &PositionOffsetContainer, &RotationOffsetContainer, + &OutNewPositionContainer, &OutNewRotationContainer); + + OutNewPosition = MoveTemp(OutNewPositionContainer.Vector); + OutNewRotation = OutNewRotationContainer.Quat.Rotator(); +} + +TArray FSGTracking::GetSenseGloveFingerToGlovePositionOrigin() +{ + FSGIC_TArray_FVector OutOriginContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGlovePositionOrigin(&OutOriginContainer); + return OutOriginContainer.Array; +} + +TArray FSGTracking::GetSenseGloveFingerToGloveRotationOriginQ() +{ + FSGIC_TArray_FQuat OutOriginContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGloveRotationOrigin(&OutOriginContainer); + return OutOriginContainer.Array; +} + +TArray FSGTracking::GetSenseGloveFingerToGloveRotationOrigin() +{ + FSGIC_TArray_FQuat OutOriginContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGloveRotationOrigin(&OutOriginContainer); + return FSGArrayUtils::QuatsToRotators(OutOriginContainer.Array); +} + +FVector FSGTracking::GetSenseGloveWristPositionOffset() +{ + FSGIC_FVector OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristPositionOffset(&OutOffsetContainer); + return OutOffsetContainer.Vector; +} + +FQuat FSGTracking::GetSenseGloveWristRotationOffsetQ() +{ + FSGIC_FQuat OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristRotationOffset(&OutOffsetContainer); + return OutOffsetContainer.Quat; +} + +FRotator FSGTracking::GetSenseGloveWristRotationOffset() +{ + FSGIC_FQuat OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristRotationOffset(&OutOffsetContainer); + return OutOffsetContainer.Quat.Rotator(); +} + +void FSGTracking::GetSenseGloveMountOffset(const bool bRightHanded, const ESGFinger ToFinger, + FVector& OutIPosition, FQuat& OutIRotation) +{ + FSGIC_ESGFinger ToFingerContainer{ToFinger}; + FSGIC_FVector OutIPositionContainer; + FSGIC_FQuat OutIRotationContainer; + + SGCoreImpl_FSGTrackingImpl_GetSenseGloveMountOffset(bRightHanded, &ToFingerContainer, + &OutIPositionContainer, &OutIRotationContainer); + + OutIPosition = MoveTemp(OutIPositionContainer.Vector); + OutIRotation = MoveTemp(OutIRotationContainer.Quat); +} + +void FSGTracking::GetSenseGloveMountOffset(const bool bRightHanded, const ESGFinger ToFinger, + FVector& OutIPosition, FRotator& OutIRotation) +{ + FSGIC_ESGFinger ToFingerContainer{ToFinger}; + FSGIC_FVector OutIPositionContainer; + FSGIC_FQuat OutIRotationContainer; + + SGCoreImpl_FSGTrackingImpl_GetSenseGloveMountOffset(bRightHanded, &ToFingerContainer, + &OutIPositionContainer, &OutIRotationContainer); + + OutIPosition = MoveTemp(OutIPositionContainer.Vector); + OutIRotation = OutIRotationContainer.Quat.Rotator(); +} + +void FSGTracking::GetSenseGloveTrackerMountOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetSenseGloveTrackerMountOffset(&HardwareContainer, bRightHanded, + &OutPositionOffsetContainer, + &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = MoveTemp(OutRotationOffsetContainer.Quat); +} + +void FSGTracking::GetSenseGloveTrackerMountOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetSenseGloveTrackerMountOffset(&HardwareContainer, bRightHanded, + &OutPositionOffsetContainer, + &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = OutRotationOffsetContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetSenseGloveViveToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetSenseGloveViveToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetSenseGloveViveToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetSenseGloveOculusTouchToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetSenseGloveOculusTouchToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetSenseGloveOculusTouchToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetNovaToWristPositionOffset() +{ + FSGIC_FVector OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNovaToWristPositionOffset(&OutOffsetContainer); + return OutOffsetContainer.Vector; +} + +FQuat FSGTracking::GetNovaToWristRotationOffsetQ() +{ + FSGIC_FQuat OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNovaToWristRotationOffset(&OutOffsetContainer); + return OutOffsetContainer.Quat; +} + +FRotator FSGTracking::GetNovaToWristRotationOffset() +{ + FSGIC_FQuat OutOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNovaToWristRotationOffset(&OutOffsetContainer); + return OutOffsetContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaViveToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaViveToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaViveToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaViveToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNovaViveToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaViveToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaQuest2ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaQuest2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaQuest2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaQuest2ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNovaQuest2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaQuest2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaPico2ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaPico2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaPico2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FQuat FSGTracking::GetLeftNovaPico2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaPico2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaPico2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaPico2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaQuestProToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaQuestProToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaQuestProToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaQuestProToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNovaQuestProToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaQuestProToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaViveFocus3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaViveFocus3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaViveFocus3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaViveFocus3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNovaViveFocus3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaViveFocus3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNovaQuest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNovaQuest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNovaQuest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNovaQuest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNovaQuest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNovaQuest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +void FSGTracking::GetNovaGloveWristOffset(const bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset(bRightHanded, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = MoveTemp(OutRotationOffsetContainer.Quat); +} + +void FSGTracking::GetNovaGloveWristOffset(const bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset(bRightHanded, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = OutRotationOffsetContainer.Quat.Rotator(); +} + +void FSGTracking::GetNovaGloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer{Hardware}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetNovaGloveTrackerOffset(&HardwareContainer, bRightHanded, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = MoveTemp(OutRotationOffsetContainer.Quat); +} + +void FSGTracking::GetNovaGloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer{Hardware}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + + SGCoreImpl_FSGTrackingImpl_GetNovaGloveTrackerOffset(&HardwareContainer, bRightHanded, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = OutRotationOffsetContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNova2ToWristPositionOffset() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristPositionOffset(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2ToWristRotationOffsetQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristRotationOffset(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNova2ToWristRotationOffset() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristRotationOffset(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2ToWristPositionOffset() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristPositionOffset(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2ToWristRotationOffsetQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristRotationOffset(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2ToWristRotationOffset() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristRotationOffset(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNova2Quest2ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2Quest2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNova2Quest2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2Quest2ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2Quest2ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2Quest2ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNova2QuestProToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2QuestProToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNova2QuestProToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2QuestProToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2QuestProToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2QuestProToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNova2ViveTrackerToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2ViveTrackerToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNova2ViveTrackerToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2ViveTrackerToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2ViveTrackerToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2ViveTrackerToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetRightNova2ViveWristTrackerToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2ViveWristTrackerToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FVector FSGTracking::GetRightNova2Quest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetRightNova2Quest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetRightNova2Quest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2Quest3ToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2Quest3ToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2Quest3ToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FRotator FSGTracking::GetRightNova2ViveWristTrackerToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +FVector FSGTracking::GetLeftNova2ViveWristTrackerToAttachPosition() +{ + FSGIC_FVector OutPositionContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachPosition(&OutPositionContainer); + return OutPositionContainer.Vector; +} + +FQuat FSGTracking::GetLeftNova2ViveWristTrackerToAttachRotationQ() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat; +} + +FRotator FSGTracking::GetLeftNova2ViveWristTrackerToAttachRotation() +{ + FSGIC_FQuat OutRotationContainer; + SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation(&OutRotationContainer); + return OutRotationContainer.Quat.Rotator(); +} + +void FSGTracking::GetNova2GloveWristOffset(const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( + bRightHanded, &HardwareVersionContainer, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = MoveTemp(OutRotationOffsetContainer.Quat); +} + +void FSGTracking::GetNova2GloveWristOffset(const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( + bRightHanded, &HardwareVersionContainer, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = OutRotationOffsetContainer.Quat.Rotator(); +} + +void FSGTracking::GetNova2GloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer{Hardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNova2GloveTrackerOffset( + &HardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = MoveTemp(OutRotationOffsetContainer.Quat); +} + +void FSGTracking::GetNova2GloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + FSGIC_ESGPositionalTrackingHardware HardwareContainer{Hardware}; + FSGIC_FString HardwareVersionContainer{HardwareVersion}; + FSGIC_FVector OutPositionOffsetContainer; + FSGIC_FQuat OutRotationOffsetContainer; + SGCoreImpl_FSGTrackingImpl_GetNova2GloveTrackerOffset( + &HardwareContainer, bRightHanded, &HardwareVersionContainer, + &OutPositionOffsetContainer, &OutRotationOffsetContainer); + + OutPositionOffset = MoveTemp(OutPositionOffsetContainer.Vector); + OutRotationOffset = OutRotationOffsetContainer.Quat.Rotator(); +} + +FString FSGTracking::ToString(const ESGPositionalTrackingHardware Hardware) +{ + FSGIC_FString OutStringContainer; + FSGIC_ESGPositionalTrackingHardware HardwareContainer{Hardware}; + SGCoreImpl_FSGTrackingImpl_ToString(&OutStringContainer, &HardwareContainer); + return OutStringContainer.String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.cpp new file mode 100644 index 0000000..b68108b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCore.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveCoreModule.h" + +IMPLEMENT_MODULE(FSenseGloveCoreModule, SenseGloveCore) diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.h b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCore.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.cpp b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.cpp new file mode 100644 index 0000000..0fbbe7f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.cpp @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCoreModule.h" +#include "Containers/UnrealString.h" +#include "SGCore/SGLibrary.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveCoreModule" + +void FSenseGloveCoreModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveCore module..."); + SGLOG(FString::Printf(TEXT("The Unreal Engine implementation of '%s' has been loaded successfully!"), + *FSGLibrary::GetVersion())); +} + +void FSenseGloveCoreModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveCore module..."); +} + +void FSenseGloveCoreModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveCore module has succeeded!"); +} + +void FSenseGloveCoreModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveCore module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.h b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.h new file mode 100644 index 0000000..98ffad7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Private/SenseGloveCoreModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveCore" + +class FSenseGloveCoreModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGAnatomy.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGAnatomy.h new file mode 100644 index 0000000..a6d2d3f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGAnatomy.h @@ -0,0 +1,118 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Hard-Coded Database that is used in calibration and in solving. + * Values herein are used to limit outputs within 'natural' ranges. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" +#include "Math/Vector.h" + +#include "SGAnatomy.generated.h" + +/** + * "Database" of anatomical values, such as joint limits. + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGAnatomy +{ + GENERATED_BODY() + +public: + /** + * Total sum of all finger flexion that would be considered "total flexion". + */ + static float GetTotalFingerFlexion(); + + /** + * Total sum of all finger flexion that would be considered "total extension". + */ + static float GetTotalFingerExtension(); + + /** + * Total sum of all thumb flexion that would be considered "total flexion". + */ + static float GetTotalThumbFlexion(); + + /** + * Total sum of all thumb flexion that would be considered "total extension". + */ + static float GetTotalThumbExtension(); + + /** + * Retrieve one of the limits of a finger joint's movement. + */ + static float GetFingerJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + /** + * Retrieve one of the limits of a thumb joint's movement. + */ + static float GetThumbJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + /* + * Limit a value between specific joint angles. + */ + static float ClampJointAngle(float Value, int32 Finger, bool bRightHand, int32 Joint, int32 Movement); + + /** + * Convert a total finger flexion in degrees into a 0..1 representation. + */ + static float NormalizeFingerFlexion(float FlexionInDegrees); + + /** + * Convert a total thumb flexion in degrees into a 0..1 representation. + */ + static float NormalizeThumbFlexion(float FlexionInDegrees); + + /** + * Get Hand Angles that would make a Default (Idle) Pose. + */ + static TArray> GetDefaultHandAngles(bool bRightHanded); + + /** + * Get Hand Angles that would make a flat hand. + */ + static TArray> GetFlatHandAngles(bool bRightHanded); + + /** + * Get hand angles that would make a thumbs up. + */ + static TArray> GetThumbsUpHandAngles(bool bRightHanded); + + /** + * Get Hand Angles that would make a fist. + */ + static TArray> GetFistHandAngles(bool bRightHanded); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBasicHandModel.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBasicHandModel.h new file mode 100644 index 0000000..21893d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBasicHandModel.h @@ -0,0 +1,366 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A data class containing the minimum required data for a hand's forward + * kinematics. + * Used in both kinematics and calibration. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGFloatArray.h" + +#include "SGBasicHandModel.generated.h" + +class FSGBasicHandModelImpl; + +/** + * Represents data of a user's hand required for forward kinematics. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGBasicHandModel final : public UObject +{ + GENERATED_BODY() + +public: + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, const FSGBasicHandModelImpl& BasicHandModelImpl); + +public: + /** + * The basic class constructor. + */ + static USGBasicHandModel* NewBasicHandModel(UObject* Outer); + + /** + * Create a new BasicHandModel with no starting rotations. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray>& Lengths, const TArray& StartPositions); + + /** + * Create a new BasicHandModel with no starting rotations. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray& Lengths, const TArray& StartPositions); + + /** + * Create a new BasicHandModel. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + static USGBasicHandModel* NewBasicHandModel( + UObject* Outer, + bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + +public: + /** + * Retrieve a default left or right hand model. + */ + static USGBasicHandModel* Default(UObject* Outer, bool bRightHanded); + + /** + * Convert a serialized HandModel back into its class representation. + */ + static USGBasicHandModel* Deserialize(UObject* Outer, const FString& SerializedString); + +public: + /** + * Default finger lengths (based on right hand). + * + * @remarks Any missing fingers are replaced with their respective value. + */ + static TArray> GetBaseFingerLengths(); + + /** + * Default joint positions (based on right hand). + * + * @remarks Any missing positions are replaced with their respective value. + */ + static TArray GetBaseJointPositions(); + + /** + * Default joint angles (based on right hand). + * + * @remarks Any missing angles are replaced with their respective value. + */ + static TArray GetBaseJointAngles(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The basic class constructor. + */ + USGBasicHandModel(); + + /** + * Create a new BasicHandModel with no starting rotations. + */ + USGBasicHandModel(bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions); + + /** + * Create a new BasicHandModel with no starting rotations. + */ + USGBasicHandModel(bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions); + + /** + * Create a new BasicHandModel. + */ + USGBasicHandModel(bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + USGBasicHandModel(bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + USGBasicHandModel(bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + USGBasicHandModel(bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGBasicHandModel(const FSGBasicHandModelImpl& BasicHandModelImpl); + +public: + /** + * The destructor. + */ + virtual ~USGBasicHandModel() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetBasicHandModelImpl(const FSGBasicHandModelImpl& BasicHandModelImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGBasicHandModelImpl& ToBasicHandModelImpl() const; + +protected: + /** + * The non-const cast to underlying type method. + */ + FSGBasicHandModelImpl& ToBasicHandModelImpl(); + +public: + /** + * Whether or not this BasicHandModel was created for a left- or right hand. Used for validation. + */ + bool IsRight() const; + + /** + * The length of individual finger phalangers in mm, sorted per finger. Generally 5x3. + */ + TArray> GetFingerLengths() const; + + /** + * Retrieve the finger lengths of a specific finger in cm. + */ + TArray GetFingerLengths(ESGFinger Finger) const; + + /** + * Set the finger lengths of a specific finger in cm. + */ + void SetFingerLengths(ESGFinger Finger, const TArray& Lengths); + + /** + * Set the finger lengths of a specific finger in cm. + */ + void SetFingerLengths(uint8 Finger, const TArray& Lengths); + + /** + * Get the finger ratios of all fingers. + */ + TArray> GetFingerRatios() const; + + /** + * Get the finger ratios of a specific finger. + */ + TArray GetFingerRatios(ESGFinger Finger) const; + + /** + * Starting joint positions relative to the device Origin. + */ + TArray GetStartJointPositions() const; + + /** + * + */ + void SetStartJointPosition(ESGFinger Finger, const FVector& Position); + + /** + * + */ + void SetStartJointPosition(uint8 Finger, const FVector& Position); + + /** + * Starting joint rotations relative to the device Origin. + */ + TArray GetStartJointRotationsQ() const; + + /** + * Starting joint rotations relative to the device Origin. + */ + TArray GetStartJointRotations() const; + + /** + * Retrieve the start position of a specific finger. + */ + FVector GetJointPosition(ESGFinger Finger) const; + + /** + * Set the start position of a specific finger. + */ + void SetJointPosition(const FVector& NewPosition, ESGFinger Finger); + + /** + * Retrieve the start rotation of a specific finger. + */ + FQuat GetJointRotationQ(ESGFinger Finger) const; + + /** + * Retrieve the start rotation of a specific finger. + */ + FRotator GetJointRotation(ESGFinger Finger) const; + + /** + * Set the start rotation of a specific finger. + */ + void SetJointRotation(const FQuat& NewRotation, ESGFinger Finger); + + /** + * Set the start rotation of a specific finger. + */ + void SetJointRotation(const FRotator& NewRotation, ESGFinger Finger); + + /** + * Get the total lengths of fingers, in cm. + */ + TArray GetTotalLengths() const; + + /** + * Get the total length of a specific finger, in mm. + */ + float GetTotalLength(ESGFinger Finger) const; + +public: + /** + * Retrieve the lengths of a specific finger, as BasicHandModel representation (L, 0, 0). + * + * @remarks Used for forwards kinematics. + */ + TArray Get3DLengths(ESGFinger Finger) const; + +public: + /** + * Check if this BasicHandModel has the same values as another BasicHandModel. + */ + bool Equals(const USGBasicHandModel* BasicHandModel) const; + +public: + /** + * Convert this handModel into a string notation, readable for humans. Does not include starting positions / rotations. + */ + FString ToString() const; + + /** + * Convert this handModel into a string notation, readable for humans. Optionally includes starting positions / rotations. + */ + FString ToString(bool bLengthsOnly) const; + + /** + * Serialize this HandModel into a string representation. + */ + FString SGSerialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBetaDevice.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBetaDevice.h new file mode 100644 index 0000000..2cca0e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGBetaDevice.h @@ -0,0 +1,177 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Represents a Sense Glove Device that has no specific class within the API. + * Used to test different iterations of the same product before integrating it + * into the Core API. + * Allows access to raw sensor values and commands of such a device. + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGDevice.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGBetaDevice.generated.h" + +class FSGDeviceImpl; +class FSGBetaDeviceImpl; + +/** + * A Device that adheres to the SenseGlove communications protocol, but which has no implementation in this API. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGBetaDevice final : public USGDevice +{ + GENERATED_BODY() + +public: + static USGBetaDevice* NewBetaDevice(UObject* Outer, const FSGBetaDeviceImpl& BetaDeviceImpl); + + static USGBetaDevice* NewBetaDevice(UObject* Outer, TSharedRef BetaDeviceImpl); + +public: + /** + * The basic class constructor. + */ + static USGBetaDevice* NewBetaDevice(UObject* Outer); + + /** + * Creates a new instance of a Beta Device. + */ + static USGBetaDevice* NewBetaDevice( + UObject* Outer, + const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * Deserialize a beta device from its basic constants string. Returns nullptr is unsuccessful. + */ + static USGBetaDevice* Parse(UObject* Outer, const FString& String); + +public: + /** + * The basic class constructor. + */ + USGBetaDevice(); + + /** + * Creates a new instance of a Beta Device. + */ + USGBetaDevice(const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGBetaDevice(const FSGBetaDeviceImpl& BetaDeviceImpl); + +protected: + /** + * The cast from underlying pointer type constructor. + */ + explicit USGBetaDevice(TSharedRef BetaDeviceImpl); + +public: + /** + * The destructor. + */ + virtual ~USGBetaDevice() override; + +protected: + /** + * The cast to underlying type method. + */ + TSharedRef ToBetaDeviceImpl() const; + +public: + /** + * Get the DeviceType enumerator of this SenseGlove, used in DeviceList enumeration. + */ + virtual ESGDeviceType GetDeviceType() const override; + + /** + * Get the unique identifier of this device. + */ + virtual FString GetDeviceId() const override; + + /** + * Retrieve this device's hardware version. + */ + virtual FString GetHardwareVersion() const override; + + /** + * Retrieve this device's firmware version. + */ + virtual int32 GetFirmwareVersion() const override; + + /** + * Retrieve this device's sub-firmware version. + */ + virtual int32 GetSubFirmwareVersion() const override; + +public: + /** + * Retrieve the constants string for additional processing. + */ + FString GetConstantsString() const; + + /** + * Retrieve a raw sensor string from this Beta Device. + */ + FString GetSensorData() const; + + /** + * Retrieve the last command retrieved from this Beta Device. + */ + FString GetLastCommand() const; + +public: + /** + * Send a raw string command to this device. + */ + bool SendHaptics(const FString& Command) const; + +public: + /** + * Create a string representation of this device for reporting purposes. + */ + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCore.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCore.h new file mode 100644 index 0000000..85ddc1e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCore.h @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCore/SGAnatomy.h" +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGBetaDevice.h" +#include "SGCore/SGDevice.h" +#include "SGCore/SGDeviceList.h" +#include "SGCore/SGDeviceModel.h" +#include "SGCore/SGHandInterpolator.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGHapticGlove.h" +#include "SGCore/SGInterpolationSet.h" +#include "SGCore/SGJointKinematics.h" +#include "SGCore/SGLibrary.h" +#include "SGCore/SGNovaGlove.h" +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCore/SGNovaGloveSensorData.h" +#include "SGCore/SGSenseCom.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCore/SGSenseGloveInfo.h" +#include "SGCore/SGSenseGlovePose.h" +#include "SGCore/SGSenseGloveSensorData.h" +#include "SGCore/SGSenseGloveVars.h" +#include "SGCore/SGTracking.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCustomWaveform.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCustomWaveform.h new file mode 100644 index 0000000..310e560 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGCustomWaveform.h @@ -0,0 +1,305 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Describes a vibration based on a number of parameters. Is sent to Nova Gloves + * to be generated on the hardware and played. + */ + + +#pragma once + +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGCustomWaveform.generated.h" + +class FSGCustomWaveformImpl; + +/* + * A single vibration pulse for Nova Gloves. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGCustomWaveform final : public UObject +{ + GENERATED_BODY() + +public: + static USGCustomWaveform* NewCustomWaveform( + UObject* Outer, const FSGCustomWaveformImpl& CustomWaveformImpl); + +public: + /** + * The default constructor. + */ + static USGCustomWaveform* NewCustomWaveform(UObject* Outer); + + /** + * Create a new instance of CustomWaveform. + */ + static USGCustomWaveform* NewCustomWaveform( + UObject* Outer, + float Amplitude, float Duration); + + /** + * Create a new instance of CustomWaveform. + */ + static USGCustomWaveform* NewCustomWaveform( + UObject* Outer, + float Amplitude, float Duration, float Frequency); + +public: + /** + * Creates a string representation of the ESGWaveformType. + * + * @param Type + */ + static FString ToString(ESGWaveformType Type); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGCustomWaveform(); + + /** + * Create a new instance of CustomWaveform. + */ + USGCustomWaveform(float Amplitude, float Duration); + + /** + * Create a new instance of CustomWaveform. + */ + USGCustomWaveform(float Amplitude, float Duration, float Frequency); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGCustomWaveform(const FSGCustomWaveformImpl& CustomWaveformImpl); + +public: + /** + * The destructor. + */ + virtual ~USGCustomWaveform() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetCustomWaveformImpl(const FSGCustomWaveformImpl& CustomWaveformImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGCustomWaveformImpl& ToCustomWaveformImpl() const; + +public: + /** + * Get the total amplitude of the wave-from, represented by 0 (off) or 1 (maximum value). + */ + float GetAmplitude() const; + + /** + * Set the total amplitude of the wave-from, represented by 0 (off) or 1 (maximum value). + * + * @param Amplitude + */ + void SetAmplitude(float Amplitude); + + /** + * Get the Type of waveform pattern that is used. + */ + ESGWaveformType GetWaveType() const; + + /** + * Set the Type of waveform pattern that is used. + * + * @param Type + */ + void SetWaveType(ESGWaveformType Type); + + /** + * Get whether or not this Waveform is infinitely repeating. + */ + bool IsInfinite() const; + + /** + * Set whether or not this Waveform is infinitely repeating. + * + * @param bInfinite + */ + void SetInfinite(bool bInfinite); + + /** + * Get the amount of times to repeat this waveform. 1 is the default. If set to 0, repeats indefinitely. + */ + int32 GetRepeatAmount() const; + + /** + * Set the amount of times to repeat this waveform. 1 is the default. If set to 0, repeats indefinitely. + * + * @param Amount + */ + void SetRepeatAmount(int32 Amount); + + /** + * Get time, in seconds, before the signal reaches its maximum amplitude. Limited to 0.01 - 1s. Set to 0 for an + * instant start. Linear only. + */ + float GetAttackTime() const; + + /** + * Set time, in seconds, before the signal reaches its maximum amplitude. Limited to 0.01 - 1s. Set to 0 for an + * instant start. Linear only. + * + * @param Time + */ + void SetAttackTime(float Time); + + /** + * Get time, in seconds, to keep the signal at one Amplitude. Limited to 0.01 - 1s. + */ + float GetSustainTime() const; + + /** + * Set time, in seconds, to keep the signal at one Amplitude. Limited to 0.01 - 1s. + * + * @param Time + */ + void SetSustainTime(float Time); + + /** + * Get time it takes for the effect to fade out after AttackTime+SustainTime has passed. Limited to 0.01 - 1s. Set + * to 0 for instant stop. Linear only. + */ + float GetDecayTime() const; + + /** + * Set time it takes for the effect to fade out after AttackTime+SustainTime has passed. Limited to 0.01 - 1s. Set + * to 0 for instant stop. Linear only. + * + * @param Time + */ + void SetDecayTime(float Time); + + /** + * Get the Wave-from Frequency at the start of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + */ + float GetFrequencyStart() const; + + /** + * Set the Wave-from Frequency at the start of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + * + * @param Frequency + */ + void SetFrequencyStart(float Frequency); + + /** + * Get the Wave-from Frequency at the end of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + */ + float GetFrequencyEnd() const; + + /** + * Set the Wave-from Frequency at the end of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + * + * @param Frequency + */ + void SetFrequencyEnd(float Frequency); + + /** + * Get value of [0..1], representing a percentage of total time (attack+sustain+decay). After that moment passes, + * we increase the frequency by FrequencySwitch factor. + */ + float GetFrequencySwitchTime() const; + + /** + * Set value of [0..1], representing a percentage of total time (attack+sustain+decay). After that moment passes, + * we increase the frequency by FrequencySwitch factor. + * + * @param Time + */ + void SetFrequencySwitchTime(float Time); + + /** + * After a certain % of the waveform (FrequencySwitchTime) plays, multiply the frequency by this factor [1x .. 3x]. + */ + float GetFrequencySwitchFactor() const; + + /** + * After a certain % of the waveform (FrequencySwitchTime) plays, multiply the frequency by this factor [1x .. 3x]. + * param Time + */ + void SetFrequencySwitchFactor(float Time); + +public: + /** + * The total command time of a single play of this pattern (not taking into account the RepeatAmount). + */ + float GetEffectTime() const; + + /** + * Total time for the entire effect (effect time multiplied by the repeat amount). + */ + float GetTotalEffectTime() const; + + /** + * If true, the frequency of this waveform jumps at any time during its playtime by FrequencySwitchFactor. + */ + bool FrequencyJumps() const; + +public: + /** + * Check if this CustomWaveform is roughly equal to another. + */ + bool Equals(const USGCustomWaveform* CustomWaveform) const; + +public: + /** + * Create a string representation of this CustomWaveform. + */ + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDevice.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDevice.h new file mode 100644 index 0000000..b7c5392 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDevice.h @@ -0,0 +1,407 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Represents a Device built by the Sense Glove company that is compatible with + * our Communications Protocol. All such devices derive from this abstract + * class. + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGDevice.generated.h" + +class FSGBetaDeviceImpl; +class FSGDeviceImpl; +class FSGHapticGloveImpl; +class FSGNovaGloveImpl; +class FSGNova2GloveImpl; +class FSGSenseGloveImpl; +class USGHapticChannelInfo; +class USGBetaDevice; +class USGHapticGlove; +class USGNova2Glove; +class USGNovaGlove; +class USGSenseGlove; + +/** + * + */ +UCLASS(Abstract, BlueprintType) +class SENSEGLOVECORE_API USGDevice : public UObject +{ + GENERATED_BODY() + +public: + /** + * Parse a main and sub firmware version from its raw (v4.12) notation + */ + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + + /** + * If true, my firmware is newer than the reference firmware. + * + * @param MyFirmwareMain + * @param MyFirmwareSub + * @param ReferenceMain + * @param ReferenceSub + * @param bInclusive + */ + static bool FirmwareNewerThan(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + + /** + * If true, my firmware is older than the reference firmware. + * + * @param MyFirmwareMain + * @param MyFirmwareSub + * @param ReferenceMain + * @param ReferenceSub + * @param bInclusive + */ + static bool FirmwareOlderThan(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + + /** + * + */ + static FString ToString(ESGDeviceType DeviceType); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +protected: + /** + * The basic constructor. + */ + USGDevice(); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGDevice(const FSGDeviceImpl& SGDeviceImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGDevice(const FSGBetaDeviceImpl& BetaDeviceImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGDevice(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGDevice(const FSGNova2GloveImpl& Nova2GloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGDevice(const FSGNovaGloveImpl& NovaGloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGDevice(const FSGSenseGloveImpl& SenseGloveImpl); + +protected: + /** + * The cast from underlying pointer type constructor. + */ + explicit USGDevice(TSharedRef SGDeviceImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGDevice(TSharedRef BetaDeviceImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGDevice(TSharedRef HapticGloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGDevice(TSharedRef Nova2GloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGDevice(TSharedRef NovaGloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGDevice(TSharedRef SenseGloveImpl); + +public: + /** + * The destructor. + */ + virtual ~USGDevice() override; + +protected: + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGDeviceImpl& SGDeviceImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGBetaDeviceImpl& BetaDeviceImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGNova2GloveImpl& Nova2GloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGNovaGloveImpl& NovaGloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(const FSGSenseGloveImpl& SenseGloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef SGDeviceImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef BetaDeviceImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef HapticGloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef Nova2GloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef NovaGloveImpl); + + /** + * Allows the child classes to set the underlying object after construction. + */ + void SetSGDeviceImpl(TSharedRef SenseGloveImpl); + +public: + /** + * The cast to underlying type method. + */ + TSharedRef ToSGDeviceImpl() const; + +public: + bool IsABetaDevice() const; + bool IsAHapticGlove() const; + bool IsANova2Glove() const; + bool IsANovaGlove() const; + bool IsASenseGlove() const; + +public: + USGBetaDevice* AsBetaDevice(UObject* Outer) const; + + USGHapticGlove* AsHapticGlove(UObject* Outer) const; + + USGNova2Glove* AsNova2Glove(UObject* Outer) const; + + USGNovaGlove* AsNovaGlove(UObject* Outer) const; + + USGSenseGlove* AsSenseGlove(UObject* Outer) const; + +public: + /** + * Check which DeviceType this class belongs to. + */ + virtual ESGDeviceType GetDeviceType() const; + + /** + * Retrieve this device's unique identifier. + */ + virtual FString GetDeviceId() const PURE_VIRTUAL(FSGDevice::GetDeviceId, return FString();); + + /** + * Retrieve this device's hardware version. + */ + virtual FString GetHardwareVersion() const PURE_VIRTUAL(FSGDevice::GetHardwareVersion, return FString();); + + /** + * Retrieve this device's main firmware version. v4.12 returns 4. + */ + virtual int32 GetFirmwareVersion() const PURE_VIRTUAL(FSGDevice::FirmwareVersion, return -1;); + + /** + * Retrieve this device's sub firmware version. v4.12 returns 12. + */ + virtual int32 GetSubFirmwareVersion() const; + + /** + * + */ + virtual FString GetFirmwareString() const; + + /** + * Returns true if this glove's firmware is newer than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Returns true if this glove's firmware is older than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Retrieve this Device's Serial/Bluetooth address. + */ + FString GetAddress() const; + + /** + * Check if this device is currently connected to the system. + */ + bool IsConnected() const; + + /** + * Retrieve the connection type of this Sense Glove. + */ + ESGConnectionType GetConnectionType() const; + + /** + * Retrieve the device's Packets per Second Variable. + */ + int32 PacketsPerSecondReceived() const; + + /** + * Retrieve the device's Packets per Second Variable. + */ + int32 PacketsPerSecondSent() const; + + /** + * Retrieve the index of this device within SenseCom. + */ + int32 GetDeviceIndex() const; + + /** + * Change this device's index within the SenseCom. Warning: Can cause errors. + */ + virtual void SetDeviceIndex(int32 NewIndex); + + /** + * Returns true if this device is connected over a connection other than usb cable. + */ + virtual bool IsWireless() const; + + /** + * Returns true if this device operates on a battery. + */ + virtual bool HasBattery() const; + + /** + * Returns true if this device is currently charging. + */ + virtual bool IsCharging(); + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + virtual bool GetBatteryLevel(float& OutLevel); + +public: + /** + * Assign this Device's Haptic Channels. Should not be done outside the API unless you know what you're doing. + * + * @param Channels + */ + virtual void SetHapticChannels(const USGHapticChannelInfo* Channels); + + /** + * The number of haptic channels this device can support. + */ + int32 GetHapticChannelCount() const; + + /** + * How many channels of a specific type this SGDevice possesses. + * + * @param ChannelType + */ + int32 GetHapticChannelCount(ESGHapticChannelType ChannelType) const; + +public: + /** + * Get a string representation of this SGDevice, used for debugging. + */ + virtual FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceList.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceList.h new file mode 100644 index 0000000..f62da28 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceList.h @@ -0,0 +1,137 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Interface for SenseCom, allows the retrieval of Devices and Data, but only + * as. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGDeviceList.generated.h" + +class USGDevice; + +/** + * Interface for SenseCom, allows the retrieval of Devices and Data. + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGDeviceList +{ + GENERATED_BODY() + +public: + /** + * Retrieve the number of devices that have been detected by the SenseCom executable. + */ + static int32 ActiveDevices(); + + /** + * Returns true if the SenseCom program is running. + */ + static bool SenseCommRunning(); + + /** + * Clear the device list, and block any further attempt to add to it until ReInitialize is called. + * + * @remarks Useful if your IDE has troubles unloading dlls (cough, Unity, Cough). + */ + static void Dispose(); + + /** + * When you've accidentally disposed of the list before you meant to. + */ + static void Reinitialize(); + + /** + * Retrieve all Sense Glove Devices connected to this system. + */ + static TArray GetDevices(UObject* Outer); + + /// TODO + // THIS PROBABLY SHOULD BE REMOVED! + /** + * Retrieve a list of SGDevices of a specific class. + */ + static TArray GetDevices(UObject* Outer, const TSubclassOf& DeviceType); + + /** + * Retrieve a list of SGDevices of a specific type. + */ + static TArray GetDevices(UObject* Outer, ESGDeviceType DeviceType); + + /** + * Retrieve the latest (raw) sensor data from a specific device in our list. + */ + static bool GetSensorDataString(int32 IpcIndex, const FString& IpcAddress, FString& OutString); + + /** + * Send a (raw) command to a specific device in the list. + */ + static bool SendHaptics(int32 IpcIndex, const FString& IpcAddress, int32 ChannelIndex, const FString& Commands); + + /** + * + */ + static FString GetDeviceStringAt(int32 IpcIndex, const FString& IpcAddress, int32 Index); + + /** + * Retrieve Device Address. + */ + static FString GetAddress(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retieve this device's connectionType. + */ + static ESGConnectionType GetConnectionType(int32 IpcIndex, const FString& IpcAddress); + + /** + * Returns true if the device at this connection side is properly connected. + */ + static bool IsConnected(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retrieve the device's Packets per Second Variable. + */ + static int32 PacketsPerSecondReceived(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retrieve the device's Packets per Second sent Variable. + */ + static int32 PacketsPerSecondSent(int32 IpcIndex, const FString& IpcAddress); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceModel.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceModel.h new file mode 100644 index 0000000..1e6e0e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGDeviceModel.h @@ -0,0 +1,177 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Base class for Device Models containing the minimum amount of data gathered + * through Communications Protocol. Used for shared functionality. + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGDeviceModel.generated.h" + +class FSGDeviceModelImpl; + +/** + * Base class containing the minimum amount of data for device models. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGDeviceModel final : public UObject +{ + GENERATED_BODY() + +public: + static USGDeviceModel* NewDeviceModel( + UObject* Outer, const FSGDeviceModelImpl& DeviceModelImpl); + +public: + /** + * + */ + static USGDeviceModel* NewDeviceModel(UObject* Outer); + + /** + * + */ + static USGDeviceModel* NewDeviceModel( + UObject* Outer, + const FString& Id, const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * Parse a 32-bit integer value into a set of booleans (010010011) that indicate which (optional) functions this + * device has. + */ + static TArray ParseFunctions(int32 Value, int32 Size); + + /** + * + */ + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Empty constructor to be used by child classes. + */ + USGDeviceModel(); + + /** + * + */ + USGDeviceModel(const FString& Id, const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGDeviceModel(const FSGDeviceModelImpl& DeviceModelImpl); + +public: + /** + * The destructor. + */ + virtual ~USGDeviceModel() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetDeviceModelImpl(const FSGDeviceModelImpl& DeviceModelImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGDeviceModelImpl& ToDeviceModelImpl() const; + +protected: + /** + * The non-const cast to underlying type method. + */ + FSGDeviceModelImpl& ToDeviceModelImpl(); + +public: + /** + * Retrieve the Unique identifier of this device. + */ + FString GetDeviceId() const; + + /** + * Retrieve the Hardware (sub) version of this Sense Glove Device. + */ + FString GetHardwareVersion() const; + + /** + * Firmware version running on the device's MicroController. (as of v4.12, this is the 4). + */ + int32 GetFirmwareVersion() const; + + /** + * Sub firmware version running on the device's microcontroller (as of v4.12, this is the 12). + */ + int32 GetSubFirmwareVersion() const; + +public: + /** + * Returns true if this glove's firmware is newer than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Returns true if this glove's firmware is older than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandInterpolator.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandInterpolator.h new file mode 100644 index 0000000..ec35593 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandInterpolator.h @@ -0,0 +1,164 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains interpolation sets for all hand joint movements that can be + * calculated using the Sense Glove. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGInterpolationSetArray.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGHandInterpolator.generated.h" + +class FSGHandInterpolatorImpl; +class USGHandInterpolator; + +/** + * Contains interpolation sets of all joint movements that can be calculated into a HandPose. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGHandInterpolator final : public UObject +{ + GENERATED_BODY() + +public: + static USGHandInterpolator* NewHandInterpolator( + UObject* Outer, const FSGHandInterpolatorImpl& HandInterpolatorImpl); + +public: + /** + * The basic constructor. + */ + static USGHandInterpolator* NewHandInterpolator(UObject* Outer); + + /** + * Create a new basic HandInterpolator. + */ + static USGHandInterpolator* NewHandInterpolator(UObject* Outer, bool bRightHanded); + +public: + /** + * Convert a serialized HandInterpolator back into a class representation. + * + * @param SerializedString + * @param bRightHanded + */ + static USGHandInterpolator* Deserialize(UObject* Outer, const FString& SerializedString, bool bRightHanded = true); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The basic constructor. + */ + USGHandInterpolator(); + + /** + * Create a new basic HandInterpolator. + */ + explicit USGHandInterpolator(bool bRightHanded); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGHandInterpolator(const FSGHandInterpolatorImpl& HandInterpolatorImpl); + +public: + /** + * The destructor. + */ + virtual ~USGHandInterpolator() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetHandInterpolatorImpl(const FSGHandInterpolatorImpl& HandInterpolatorImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGHandInterpolatorImpl& ToHandInterpolatorImpl() const; + +public: + /** + * Calculate a finger movement's rotation, using an input value. + */ + float CalculateAngle(ESGFingerMovement Movement, float Value, bool bApplyLimits = true) const; + + /** + * Calculate a thumb movement's rotation, using an input value. + */ + float CalculateAngle(ESGThumbMovement Movement, float Value, bool bApplyLimits = true) const; + +public: + /** + * Calculate all hand angles based on an interpolator and normalized input. + */ + TArray> InterpolateHandAngles( + const TArray>& Flexions, const TArray& Abductions, float CmcTwist) const; + +public: + /** + * Check if this handInterpolator matches another. + * + * @param HandInterpolator + */ + bool Equals(const USGHandInterpolator* HandInterpolator) const; + +public: + /** + * Serialize this HandInterpolator into a string representation. + */ + FString SGSerialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h new file mode 100644 index 0000000..9c002aa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandLayer.h @@ -0,0 +1,267 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A way to access all sorts of Hand Tracking and -Haptics without needing to + * cache any device instances. + * Use this layer if you don't care where a HandPose is coming from, and are + * fine with calling generic haptic functions. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGHandLayer.generated.h" + +class USGCustomWaveform; +class USGHandPose; +class USGHapticGlove; + +/** + * A way to access all sorts of Hand Tracking and -Haptics without needing to cache any device instances. + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGHandLayer +{ + GENERATED_BODY() + +public: + /** + * Returns true if there is a HapticGlove Device connected that corresponds to the chosen hand. + * + * @param bRightHanded + */ + static bool DeviceConnected(bool bRightHanded); + + /** + * Returns the Device Type of the right / left hand. + * + * @param bRightHanded + */ + static ESGDeviceType GetDeviceType(bool bRightHanded); + + /** + * Returns the handedness of the first device you can find; true for right, false for left. Use this for testing a + * single glove. + */ + static bool GetFirstGloveHandedness(); + + /** + * Returns the number of Haptic Gloves connected to the system. + */ + static int32 GlovesConnected(); + + /** + * Retrieve a Glove Instance for the right- or left hand to do more complicated, device-specific stuff. + * + * @param bRightHanded + * @param OutGlove + */ + static bool GetGloveInstance(UObject* Outer, bool bRightHanded, USGHapticGlove*& OutGlove); + + /** + * Returns the calibration state of the chosen hand. + * + * @param bRightHanded + */ + static ESGHapticGloveCalibrationState GetCalibrationState(bool bRightHanded); + + /** + * Returns the Calibration Instructions for the chosen hand. + * + * @param bRightHanded + */ + static FString GetCalibrationInstructions(bool bRightHanded); + + /** + * Reset the calibration of the left/right hand. + * + * @param bRightHanded + */ + static void ResetCalibration(bool bRightHanded); + + /** + * Reset the calibration of the left/right hand. + * + * @param bRightHanded + */ + static void EndCalibration(bool bRightHanded); + + /** + * Attempt to get the HandPose through any of our gloves. You don't care which one is on the other side, as long as + * you get one. + * + * @param bRightHanded + * @param OutHandPose + */ + static bool GetHandPose(UObject* Outer, bool bRightHanded, USGHandPose*& OutHandPose); + + /** + * Calculate the Wrist Location of the chosen hand, based on a reference location and tracking hardware. + * + * @param bRightHanded + * @param ReferencePosition + * @param ReferenceRotation + * @param TrackingHardware + * @param OutWristPosition + * @param OutWristRotation + */ + static void GetWristLocation( + bool bRightHanded, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Stop all haptics on the chosen hand. + * + * @param bRightHanded + */ + static void StopAllHaptics(bool bRightHanded); + + /** + * Sends all haptics in the queue for the Left / Right hand. + * @param bRightHanded + */ + static bool SendHaptics(bool bRightHanded); + + /** + * Returns true if the glove for this hand supports a custom waveform vibration on said location. + * + * @param bRightHanded + * @param AtLocation + */ + static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); + + /** + * Send a Custom Waveform to a glove at a specific location. + * + * @param bRightHanded + * @param OutWaveform + * @param Location + */ + static bool SendCustomWaveform(bool bRightHanded, USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Tell a specific hand to hold the force-feedback at a certain level. + * + * @param bRightHanded + * @param Finger + * @param Level01 + * @param bSendImmediate + */ + static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue Force Feedback for multiple fingers. Up to 5. Make sure the value is not NULL. + * + * @param bRightHanded + * @param Levels01 + * @param bSendImmediate + */ + static bool QueueCommand_ForceFeedbackLevels( + bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + * + * @param bRightHanded + * @param Levels01 + * @param bSendImmediate + */ + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + * + * @param bRightHanded + * @param Finger + * @param Level01 + * @param bSendImmediate + */ + static bool QueueCommand_VibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue a vibration level command for a specific HapticLocation. If the gloves has this vibration motor installed. + * Cross-compatible with Nova 2.0. + * + * @param bRightHanded + * @param AtLocation + * @param Level01 + * @param bSendImmediate + */ + static bool QueueCommand_VibroLevel( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); + + /** + * Returns true if the chosen glove supports active contact feedback on the Wrist. + * + * @param bRightHanded + */ + static bool SupportsWristSqueeze(bool bRightHanded); + + /** + * Queue a command to set a squeeze level on the wrist, and optionally send it right away. + * + * @param bRightHanded + * @param SqueezeLevel01 + * @param bSendImmediate + */ + static bool QueueCommand_WristSqueeze(bool bRightHanded, float SqueezeLevel01, bool bSendImmediate); + + /** + * Returns true is the chosen hand supports flexion locking; automatic locking of FFB when flexed beyond a specific + * point. + * + * @param bRightHanded + */ + static bool SupportsFlexionLocks(bool bRightHanded); + + /** + * If the flexion exceeds a particular value, turn on the Force-Feedback. + */ + static bool QueueCommand_FlexionLock(bool bRightHanded, int32 Finger, float Flexion01, bool bSendImmediate); + + /** + * Stop any Flexion Threshold active on the chosen finger. + */ + static bool QueueCommand_ClearFlexionLock(bool bRightHanded, int32 Finger, bool bSendImmediate); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandPose.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandPose.h new file mode 100644 index 0000000..0e2d196 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHandPose.h @@ -0,0 +1,291 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Data class containing all variables to draw or analyze a virtual hand + * in different formats. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGQuatArray.h" +#include "SGTypes/SGRotatorArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGHandPose.generated.h" + +class FSGHandPoseImpl; +class USGBasicHandModel; +class USGHandPose; + +/** + * Contains all variables required to draw or analyze a virtual hand. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGHandPose final : public UObject +{ + GENERATED_BODY() + +public: + static USGHandPose* NewHandPose( + UObject* Outer, const FSGHandPoseImpl& HandPoseImpl); + +public: + /** + * The default constructor. + */ + static USGHandPose* NewHandPose(UObject* Outer); + + static USGHandPose* NewHandPose( + UObject* Outer, + bool bRightHanded, const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles); + + /** + * Create a new instance of HandPose. + */ + static USGHandPose* NewHandPose( + UObject* Outer, + bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles); + + /** + * Create a new instance of HandPose. + */ + static USGHandPose* NewHandPose( + UObject* Outer, + bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + + /** + * Create a new instance of HandPose. + */ + static USGHandPose* NewHandPose( + UObject* Outer, + bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + +public: + /** + * Deserialize a HandPose back into usable values. + */ + static USGHandPose* Deserialize(UObject* Outer, const FString& SerializedString); + + /** + * Generate a HandPose based on articulation angles (handAngles). + */ + static USGHandPose* FromHandAngles(UObject* Outer, + const TArray>& HandAngles, bool bRightHanded, + const USGBasicHandModel* HandDimensions); + + /** + * Generate a HandPose based on articulation angles (handAngles), with a default HandModel. + */ + static USGHandPose* FromHandAngles(UObject* Outer, const TArray>& HandAngles, bool bRightHanded); + + /** + * Create a new instance of a left or right handed Pose that is "idle"; in a neutral position. + */ + static USGHandPose* DefaultIdle(UObject* Outer, bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Create a new instance of a left or right handed Pose that is "idle"; in a neutral position. + */ + static USGHandPose* DefaultIdle(UObject* Outer, bool bRightHanded); + + /** + * Generates a HandPose representing an 'open hand', used in calibration to determine finger extension. + */ + static USGHandPose* FlatHand(UObject* Outer, bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing an 'open hand', used in calibration to determine finger extension. + */ + static USGHandPose* FlatHand(UObject* Outer, bool bRightHanded); + + /** + * Generates a HandPose representing a 'thumbs up', used in calibration to determine finger flexion, thumb + * extension and adduction. + */ + static USGHandPose* ThumbsUp(UObject* Outer, bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing a 'thumbs up', used in calibration to determine finger flexion, thumb + * extension and adduction. + */ + static USGHandPose* ThumbsUp(UObject* Outer, bool bRightHanded); + + /** + * Generates a HandPose representing a 'fist', used in calibration to determine, thumb flexion and abduction. + */ + static USGHandPose* Fist(UObject* Outer, bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing a 'fist', used in calibration to determine, thumb flexion and abduction. + */ + static USGHandPose* Fist(UObject* Outer, bool bRightHanded); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGHandPose(); + + /** + * Create a new instance of HandPose. + */ + USGHandPose(bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles); + + /** + * Create a new instance of HandPose. + */ + USGHandPose(bool bRightHanded, + const TArray>& JointPositions, const TArray>& JointRotations, + const TArray>& HandAngles); + + /** + * Create a new instance of HandPose. + */ + USGHandPose(bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + + /** + * Create a new instance of HandPose. + */ + USGHandPose(bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGHandPose(const FSGHandPoseImpl& HandPoseImpl); + +public: + /** + * The destructor. + */ + virtual ~USGHandPose() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetHandPoseImpl(const FSGHandPoseImpl& HandPoseImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGHandPoseImpl& ToHandPoseImpl() const; + +public: + /** + * Whether this HandPose was created to be a right- or left hand. + */ + bool IsRight() const; + + /** + * Positions of all hand joints relative to the Sense Glove origin. From thumb to pinky, proximal to distal. + */ + TArray> GetJointPositions() const; + + /** + * Quaternion rotations of all hand joints. From thumb to pinky, proximal to distal. + */ + TArray> GetJointRotationsQ() const; + + /** + * Rotations of all hand joints. From thumb to pinky, proximal to distal. + */ + TArray> GetJointRotations() const; + + /** + * Euler representations of all possible hand angles. From thumb to pinky, proximal to distal. + */ + TArray> GetHandAngles() const; + +public: + /** + * Returns true of these two hand poses are roughly equal. + */ + bool Equals(const USGHandPose* HandPose) const; + + /** + * Returns the total flexion of a specific finger as a value between 0 (fully extended) and 1 (fully flexed). + * + * @remarks Useful for animation or for detecting gestures. + */ + float GetNormalizedFlexion(ESGFinger Finger, bool bClamp01 = true) const; + + /** + * Returns the total flexion of a specific finger as a value between 0 (fully extended) and 1 (fully flexed). + * + * @remarks Useful for animation or for detecting gestures. + */ + TArray GetNormalizedFlexion(bool bClamp01 = true) const; + +public: + /** + * + */ + FString ToString(bool bShortFormat = false) const; + + /** + * Serialize this HandPose into a string representation. + */ + FString SGSerialize() const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticChannelInfo.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticChannelInfo.h new file mode 100644 index 0000000..04fe9ee --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticChannelInfo.h @@ -0,0 +1,199 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains information on Haptic channels available to this device for IPC. + * Some devices have different "Haptic Channels". This info is exposed via IPC + * to SGCore. + */ + + +#pragma once + +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGHapticChannelInfo.generated.h" + +class FSGHapticChannelInfoImpl; + +/* + * Contains information on Haptic channels available to this device for IPC. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGHapticChannelInfo final : public UObject +{ + GENERATED_BODY() + +public: + static USGHapticChannelInfo* NewHapticChannelInfo( + UObject* Outer, const FSGHapticChannelInfoImpl& HapticChannelInfoImpl); + +public: + /** + * The default constructor. + */ + static USGHapticChannelInfo* NewHapticChannelInfo(UObject* Outer); + + /** + * Create a new instance of HapticChannelInfo. + */ + static USGHapticChannelInfo* NewHapticChannelInfo( + UObject* Outer, + const TArray& StreamIndex, const TArray& FireAndForgetIndex); + +public: + /** + * Generate a single IPCAddress for an address. + * + * @param DeviceIndex + * @param ChannelIndex + */ + static FString GenerateAddress(int32 DeviceIndex, int32 ChannelIndex); + + /** + * Parse HapticChannelInfo received through IPC into usable data. + * + * @param IpcString + */ + static USGHapticChannelInfo* Parse(UObject* Outer, const FString& IpcString); + +public: + /** + * Byte used to identify streaming channels. + */ + static int32 GetStreamingType(); + + /** + * Byte used to indicate fire-and-forget channels. + */ + static int32 GetFireAndForgetType(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Creates a default HapticChannelInfo, with solely a single streaming haptic Channel. + */ + USGHapticChannelInfo(); + + /** + * Create a new instance of HapticChannelInfo. + */ + USGHapticChannelInfo(const TArray& StreamIndex, const TArray& FireAndForgetIndex); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGHapticChannelInfo(const FSGHapticChannelInfoImpl& HapticChannelInfoImpl); + +public: + /** + * The destructor. + */ + virtual ~USGHapticChannelInfo() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetHapticChannelInfoImpl(const FSGHapticChannelInfoImpl& HapticChannelInfoImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGHapticChannelInfoImpl& ToHapticChannelInfoImpl() const; + +public: + /** + * Returns the amount of streaming channels available for haptics. Will indicate if a device can support the + * haptics you're trying to send through it. + */ + int32 GetStreamChannelCount() const; + + /** + * Returns the amount of fire-and-forget channels available for haptics. Will indicate if a device can support the + * haptics you're trying to send through it. + */ + int32 GetFireAndForgetChannelCount() const; + + /** + * Retrieve the total amount of channels for this device. + */ + int32 GetTotalChannelCount() const; + + /** + * Returns the address that corresponds to the nth channel of a specific type. It's unguarded, which means I don't + * check the validity of index - could result in an exception. Optimized piece of code for for loops. + * + * @param Type + * @param TypeIndex + */ + FString GetAddress_Unguarded(ESGHapticChannelType Type, int32 TypeIndex) const; + + /** + * Returns the address that corresponds to the nth channel of a specific type. It's unguarded, which means I don't + * check the validity of index - could result in an exception. Optimized piece of code for for loops. + * Used for Internals. + * + * @param Type + * @param TypeIndex + * @param OutIndex + * @param OutAddressString + */ + void GetIpcParams_Unguarded(ESGHapticChannelType Type, int32 TypeIndex, + int32& OutIndex, FString& OutAddressString) const; + + /** + * Regenerate the channel names for a specific device Index in shared memory. + * + * @param ForDeviceIndex + */ + void RegenerateAddresses(int32 ForDeviceIndex); + + /** + * Returns an array of all the haptic addresses stored for this info channel. + */ + TArray GetAllAddresses() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h new file mode 100644 index 0000000..9c529d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGHapticGlove.h @@ -0,0 +1,390 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * An interface for any of our gloves that can track hand motion and/or send + * force / vibrotactile feedback. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGDevice.h" +#include "SGCore/SGHandPose.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGHapticGlove.generated.h" + +class FSGHapticGloveImpl; +class FSGNovaGloveImpl; +class FSGNova2GloveImpl; +class FSGSenseGloveImpl; +class USGBasicHandModel; +class USGCustomWaveform; + +/** + * A glove developed by SenseGlove, that has hand tracking and/or haptic feedback functionality. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGHapticGlove : public USGDevice +{ + GENERATED_BODY() + +private: + friend class USGHapticGloveCalibrationSequence; + friend struct FSGHandLayer; + +protected: + static USGHapticGlove* NewHapticGlove(UObject* Outer, const FSGHapticGloveImpl& HapticGloveImpl); + + static USGHapticGlove* NewHapticGlove(UObject* Outer, TSharedRef HapticGloveImpl); + +protected: + /** + * + */ + static USGHapticGlove* NewHapticGlove(UObject* Outer); + +public: + /** + * Get all Haptic Gloves detected on this system. + * + * @param bConnectedOnly + */ + static TArray GetHapticGloves(UObject* Outer, bool bConnectedOnly = true); + + /** + * Get the first Haptic Glove detected on this system. + * + * @param OutGlove + */ + static bool GetGlove(UObject* Outer, USGHapticGlove*& OutGlove); + + /** + * Get the first left/right Haptic Glove detected on this system. + * + * @param bRightHanded + * @param OutGlove + */ + static bool GetGlove(UObject* Outer, bool bRightHanded, USGHapticGlove*& OutGlove); + +public: + /** + * + */ + static FString ToString(ESGHapticGloveCalibrationState State); + + /** + * + */ + static FString ToString(ESGHapticLocation Location); + +protected: + /** + * The basic constructor. + */ + USGHapticGlove(); + +public: + /** + * The cast from underlying parent type constructor. + */ + explicit USGHapticGlove(const FSGDeviceImpl& SGDeviceImpl); + + /** + * The cast from underlying type constructor. + */ + explicit USGHapticGlove(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGHapticGlove(const FSGNova2GloveImpl& NovaGloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGHapticGlove(const FSGNovaGloveImpl& NovaGloveImpl); + + /** + * The cast from underlying child type constructor. + */ + explicit USGHapticGlove(const FSGSenseGloveImpl& SenseGloveImpl); + +protected: + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGHapticGlove(TSharedRef SGDeviceImpl); + + /** + * The cast from underlying pointer type constructor. + */ + explicit USGHapticGlove(TSharedRef HapticGloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGHapticGlove(TSharedRef NovaGloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGHapticGlove(TSharedRef NovaGloveImpl); + + /** + * The cast from underlying child pointer type constructor. + */ + explicit USGHapticGlove(TSharedRef SenseGloveImpl); + +public: + /** + * The destructor. + */ + virtual ~USGHapticGlove() override; + +public: + /** + * The cast to underlying type method. + */ + TSharedRef ToHapticGloveImpl() const; + +public: + /** + * Get the DeviceType enumerator of this device; used to check if its a SenseGlove/Nova/etc. + */ + virtual ESGDeviceType GetDeviceType() const override; + + /** + * Retrieve this glove's unique identifier. + */ + virtual FString GetDeviceId() const override; + + /** + * Retrieve this glove's hardware (sub) version. "DK1", "DK2", etc. + */ + virtual FString GetHardwareVersion() const override; + + /** + * Retrieve this device's main firmware version. v4.12 returns 4. + */ + virtual int32 GetFirmwareVersion() const override; + + /** + * Retrieve this device's sub firmware version. v4.12 returns 12. + */ + virtual int32 GetSubFirmwareVersion() const override; + + /** + * Returns true if this glove is made for a right hand. If false, it's a left hand. + */ + virtual bool IsRight() const; + + /** + * Retrieve this glove's IMU rotation, if if has any. + */ + virtual bool GetImuRotation(FQuat& OutImu); + + /** + * Retrieve this glove's IMU rotation, if if has any. + */ + virtual bool GetImuRotation(FRotator& OutImu); + + /** + * Retrieve a HandPose based on the latest profile, but with a specific hand geometry. + */ + virtual bool GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) const; + + /** + * Retrieve a HandPose based on the latest profile and default hand Geometry. + */ + virtual bool GetHandPose(UObject* Outer, USGHandPose*& OutHandPose); + + /** + * Returns the Hand Angles calculated by this Nova 2 Glove. Used for input for HandPoses, but can be used in and of + * itself. + * + * @param OutHandAngles + */ + virtual bool GetHandAngles(TArray>& OutHandAngles) const; + + /** + * + */ + USGBasicHandModel* GetHandGeometry(UObject* Outer) const; + + /** + * + */ + void SetHandGeometry(const USGBasicHandModel* HandGeometry); + +public: + /** + * Returns the HapticGlove's state of calibration for its on-board sensors. + */ + virtual ESGHapticGloveCalibrationState GetCalibrationState() const; + + /** + * Resets internal calibration of the Haptic Glove. + */ + virtual void EndCalibration(); + + /** + * Force-End any form of calibration manually, if any is still running. + */ + virtual void ResetCalibration(); + + /** + * Retrieve the current calibration instruction. + */ + virtual FString GetCalibrationInstruction() const; + +public: + /** + * Stops all Haptic effects if any are currently playing. Useful at the end of simulations or when resetting. + */ + virtual void StopHaptics(); + + /** + * Stops only vibrations. + */ + virtual void StopVibrations(); + + /** + * Take all active commands in the device queue, compile them into one and send them to the device. + * + * @return Returns true if the message was successfully sent to SenseCom. + */ + virtual bool SendHaptics(); + +public: + /** + * Returns true if the HapticGlove supports vibration feedback on the specified location. + * + * @param AtLocation + */ + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + + /** + * Sends a custom waveform to the location specified, provided that the glove has a motor there, and can support + * custom waveforms. + * + * @param OutWaveform + * @param Location + */ + virtual bool SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Queue a list of force-feedback levels, between 0.0f and 1.0f. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the Force-Feedback levels, from 0.0f (no FFB) to 1.0f. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueForceFeedbackLevels(const TArray& Levels01); + + /** + * Set the Force-Feedback value of a particular finger to a specific level + * + * @param Level01 Value will be clamped between [0...1], where 0.0f means no Force-Feedback, and 1.0 means full + * force-feedback. + * @param Finger The finger to which to send the command. + */ + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01); + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueVibroLevels(const TArray& Levels01); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01); + +public: + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const; + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const; + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const; + +public: + /** + * Create a String Representation of this Haptic Glove. + */ + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSet.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSet.h new file mode 100644 index 0000000..d5f9eca --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSet.h @@ -0,0 +1,225 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Data class containing all variables to map an input value from one range to + * another. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGInterpolationSet.generated.h" + +class FSGInterpolationSetImpl; + +/** + * Set of variables to map a value from one range to the next. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGInterpolationSet final : public UObject +{ + GENERATED_BODY() + +public: + static USGInterpolationSet* NewInterpolationSet( + UObject* Outer, const FSGInterpolationSetImpl& InterpolationSetImpl); + +public: + /** + * Creates a basic interpolation set, without limits. + */ + static USGInterpolationSet* NewInterpolationSet(UObject* Outer); + + /** + * Create a new interpolation set without limits. + */ + static USGInterpolationSet* NewInterpolationSet(UObject* Outer, float From1, float From2, float To1, float To2); + + /** + * Create a new interpolation set with limits. + */ + static USGInterpolationSet* NewInterpolationSet( + UObject* Outer, float From1, float From2, float To1, float To2, float Min, float Max); + +public: + /** + * Convert a string notation of an InterpolationSet into a new class instance. + */ + static USGInterpolationSet* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Creates a basic interpolation set, without limits. + */ + USGInterpolationSet(); + + /** + * Create a new interpolation set without limits. + */ + USGInterpolationSet(float From1, float From2, float To1, float To2); + + /** + * Create a new interpolation set with limits. + */ + USGInterpolationSet(float From1, float From2, float To1, float To2, float Min, float Max); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGInterpolationSet(const FSGInterpolationSetImpl& InterpolationSetImpl); + +public: + /** + * The destructor. + */ + virtual ~USGInterpolationSet() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetInterpolationSetImpl(const FSGInterpolationSetImpl& InterpolationSetImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGInterpolationSetImpl& ToInterpolationSetImpl() const; + +public: + /** + * First value of input range. + */ + float GetX0() const; + + /** + * + */ + void SetX0(float X0); + + /** + * Second value of input range. + */ + float GetX1() const; + + /** + * + */ + void SetX1(float X1); + + /** + * First value of output range. + */ + float GetY0() const; + + /** + * + */ + void SetY0(float Y0); + + /** + * Second value of output range. + */ + float GetY1() const; + + /** + * + */ + void SetY1(float Y1); + + /** + * Minimum range of the output value. + */ + float GetMin() const; + + /** + * + */ + void SetMin(float Min); + + /** + * Maximum range of the output value. + */ + float GetMax() const; + + /** + * + */ + void SetMax(float Max); + +public: + /** + * Calculate an output value in range [x0...x1] to [y0..y1] + */ + float Get(float Value, bool bLimit, bool bNormalizeAngle = false) const; + +public: + /** + * Returns true if this InterpolationSet has the same values as another set. + */ + bool Equals(const USGInterpolationSet* InterpolationSet) const; + +public: + /** + * + */ + FString ToString() const; + + /** + * + */ + FString ToString(bool bLimits) const; + + /** + * Convert this InterpolationSet into a string notation so it can be stored on disk. + */ + FString SGSerialize() const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSetArray.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSetArray.h new file mode 100644 index 0000000..02b051d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGInterpolationSetArray.h @@ -0,0 +1,50 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCore/SGInterpolationSet.h" + +#include "SGInterpolationSetArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVECORE_API FSGInterpolationSetArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray InterpolationSetArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGJointKinematics.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGJointKinematics.h new file mode 100644 index 0000000..d1880cb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGJointKinematics.h @@ -0,0 +1,89 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains kinematic formulae and wrappers for Sense Glove mathematics. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGJointKinematics.generated.h" + +class USGBasicHandModel; + +/** + * + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGJointKinematics +{ + GENERATED_BODY() + +public: + /** + * Perform forward Kinematics on a set of joints, defined by a start position- and rotation, + * joint angles and the lengths in between. Outputs the calculated positions and rotations. + */ + static bool ForwardKinematics( + const FVector& StartPosition, const FQuat& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Perform forward Kinematics on a set of joints, defined by a start position- and rotation, + * joint angles and the lengths in between. Outputs the calculated positions and rotations. + */ + static bool ForwardKinematics( + const FVector& StartPosition, const FRotator& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Calculate positions and rotations of a finger based on input angles and profile. + */ + static bool ForwardKinematics( + const USGBasicHandModel* Profile, ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Calculate positions and rotations of a finger based on input angles and profile. + */ + static bool ForwardKinematics( + const USGBasicHandModel* Profile, ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGLibrary.h new file mode 100644 index 0000000..55eedd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGLibrary.h @@ -0,0 +1,73 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Information about the SGCore C++ Library. + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGLibrary.generated.h" + +/** + * Provides information about this C++ Library. + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGLibrary +{ + GENERATED_BODY() + +public: + /** + * The version of this C++ Library in string representation. + */ + static FString GetVersion(); + + /** + * Check what back-end connections are used for this version of SGConnect. + */ + static ESGBackendType GetBackendType(); + + /** + * Back-End version in string notation. + */ + static FString GetBackendVersion(); + + /** + * If possible, check what version of SGConnect is paired with this API. + */ + static FString GetSGConnectVersion(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h new file mode 100644 index 0000000..baf066b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2Glove.h @@ -0,0 +1,593 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback + * and sensor module, and active contact feedback in the front strap. + * Since the Nova 2.0 is significantly different from the Nova 1 Glove, it gets + * its own separate device interface. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGHapticGlove.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGNova2Glove.generated.h" + +class FSGNova2GloveImpl; +class USGHandInterpolator; +class USGNovaGloveInfo; +class USGNova2GloveSensorData; +class USGSensorNormalization; +class USGThresholdCommand; + +/** + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback and sensor module, and active contact + * feedback in the front strap. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGNova2Glove final : public USGHapticGlove +{ + GENERATED_BODY() + +public: + static USGNova2Glove* NewNova2Glove(UObject* Outer, const FSGNova2GloveImpl& Nova2GloveImpl); + + static USGNova2Glove* NewNova2Glove(UObject* Outer, TSharedRef Nova2GloveImpl); + +public: + /** + * Default constructor for Nova2Glove. + */ + static USGNova2Glove* NewNova2Glove(UObject* Outer); + + /** + * Creates a new instance of a Nova Glove. + */ + static USGNova2Glove* NewNova2Glove(UObject* Outer, const USGNovaGloveInfo& DeviceInfo); + +public: + /** + * Deserializes a Nova 2.0 from its ConstantsString. Returns a nullptr if unsuccessful. + * + * @param ConstantsString + */ + static USGDevice* Parse(UObject* Outer, const FString& ConstantsString); + + /** + * Retrieve all Nova 2.0's. + */ + static TArray GetNova2Gloves(UObject* Outer); + + /** + * Retrieve the first connected Nova 2.0 there is. + */ + static bool GetNova2Glove(UObject* Outer, USGNova2Glove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed Nova 2.0. + */ + static bool GetNova2Glove(UObject* Outer, bool bRightHanded, USGNova2Glove*& OutGlove); + +public: + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is a left or right-handed glove. + * @param HardwareVersion + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is a left or right-handed glove. + * @param HardwareVersion + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is right or left hand. + * @param HardwareVersion + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + static void CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is right or left hand. + * @param HardwareVersion + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + static void CalculateWristLocation( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FRotator& OutWristRotation); + +public: + /** + * Special Byte to identify the command as a Streaming Byte. + */ + static ANSICHAR GetStreamByte(); + + /** + * Ranges before a Nova 2.0 Sensor is allowed to move. + */ + static TArray GetNova2SensorRanges(); + +public: + /** + * Converts Nova 2.0 Sensor Data into floating point inputs for normalization. + * + * @param SensorData + */ + static TArray ToNormalizedValues(const USGNova2GloveSensorData* SensorData); + + /** + * Convert Sensor Data into a series of normalized values. + * + * @param Outer + * @param SensorData + * @param OutSensorNormalizer + */ + static TArray ToNormalizedValues( + UObject* Outer, + const USGNova2GloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer); + +public: + /** + * Calculate Hand Angles for a Nova 2.0 Glove, based on normalized input. + * + * @param NormalizedValues + * @param Interpolator + */ + static TArray> CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator, bool bInfluenceIndex); + + /** + * Convert normalized inputs (5-6 sensors) to input for an Interpolator. + * + * @param NormalizedData + * @param GloveInfo + */ + static TArray> ToNormalizedAngles( + const TArray& NormalizedData, const USGNovaGloveInfo* GloveInfo); + +protected: + USGNova2Glove(); + + explicit USGNova2Glove(const USGNovaGloveInfo& DeviceInfo); + +public: + /** + * The cast from underlying parent type constructor. + */ + explicit USGNova2Glove(const FSGDeviceImpl& SGDeviceImpl); + + /** + * The cast from underlying parent type constructor. + */ + explicit USGNova2Glove(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * The cast from underlying type constructor. + */ + explicit USGNova2Glove(const FSGNova2GloveImpl& Nova2GloveImpl); + +protected: + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGNova2Glove(TSharedRef SGDeviceImpl); + + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGNova2Glove(TSharedRef HapticGloveImpl); + + /** + * The cast from underlying pointer type constructor. + */ + explicit USGNova2Glove(TSharedRef Nova2GloveImpl); + +public: + /** + * The destructor. + */ + virtual ~USGNova2Glove() override; + +public: + /** + * The cast to underlying type method. + */ + TSharedRef ToNova2GloveImpl() const; + +public: + /** + * Return the DeviceType of this Nova. + */ + virtual ESGDeviceType GetDeviceType() const override; + + /** + * Returns this device's unique identifier. + */ + virtual FString GetDeviceId() const override; + + /** + * Access this device's hardware designation. + */ + virtual FString GetHardwareVersion() const override; + + /** + * Access this device's main firmware version. (ex: v3.2 -> 3). + */ + virtual int32 GetFirmwareVersion() const override; + + /** + * Access this device's sub-firmware version. (ex: v3.2 -> 2). + */ + virtual int32 GetSubFirmwareVersion() const override; + +public: + /** + * Returns true if this device operates on a battery. + */ + virtual bool HasBattery() const override; + + /** + * Returns true if this device is currently charging. + */ + virtual bool IsCharging() override; + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + virtual bool GetBatteryLevel(float& OutBatteryLevel) override; + +public: + /** + * Returns true if this glove is meant for right hands. + */ + virtual bool IsRight() const override; + + /** + * Retrieve this glove's latest IMU rotation, if one is present. + * + * @param OutImu + */ + virtual bool GetImuRotation(FQuat& OutImu) override; + + /** + * Retrieve this glove's latest IMU rotation, if one is present. + * + * @param OutImu + */ + virtual bool GetImuRotation(FRotator& OutImu) override; + + /* + * Calculate a HandPose from this glove's latest Sensor Data. + */ + virtual bool GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, + USGHandPose*& OutHandPose) const override; + + /** + * Returns the Hand Angles calculated by this Nova 2 Glove. Used for input for HandPoses, but can be used in and + * of itself. + * + * @param OutHandAngles + */ + virtual bool GetHandAngles(TArray>& OutHandAngles) const override; + +public: + /* + * Retrieve the calibration status of this Nova 2.0 Glove. + */ + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + /* + * Completes sensor Normalization on the Nova 2.0's end. + */ + virtual void EndCalibration() override; + + /* + * Completes sensor Normalization on the Nova 2.0's end. + */ + virtual void ResetCalibration() override; + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + virtual void StopHaptics() override; + + /** + * Stop only all vibrotactile feedback. + */ + virtual void StopVibrations() override; + + /** + * Flush all streaming haptic effects on the different fingers to the Nova 2.0 Glove. + */ + virtual bool SendHaptics() override; + +public: + /** + * Returns true if this Glove supports the chosen haptic location. + * + * @param AtLocation + */ + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const override; + + /** + * Send a custom waveform to the Nova 2.0. + * + * @param OutWaveform + * @param Location + */ + virtual bool SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location) override; + +public: + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the Force-Feedback levels, from 0.0 (no FFB) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + * + * @param Finger The finger to which to send the command. + * @param Level01 Value will be clamped between [0...1], where 0.0 means no Force-Feedback, and 1.0 means full + * force-feedback. + */ + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Amplitudes Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. This is to + * support backwards compatibility for older plugins. Use of Customwaveforms is encouraged. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + + /** + * Set the amount of squeeze-feedback to the desired level (0 = no squeeze, 1 = full squeeze). + * + * @param SqueezeLevel01 + */ + virtual bool QueueSqueezeLevel(float SqueezeLevel01); + +public: + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the Nova2. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the Nova2. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const override; + +public: + /** + * Access DeviceInfo of this Nova. + */ + USGNovaGloveInfo* GetGloveInfo(UObject* Outer) const; + + /** + * If true, the Index Finger sensors will influence the tracking of the other fingers. + */ + bool DoesIndexInfluenceOthers() const; + + /** + * + * + * @param bInfluenceOthers + */ + void SetIndexInfluencesOthers(bool bInfluenceOthers); + + /** + * If true, the sensors of this Nova Glove are normalized on-board the device. Otherwise, sensor normalization runs + * inside the library. + */ + bool SupportsOnBoardNormalization() const; + +public: + /** + * Get the latest Sensor Data from this Glove. + */ + bool GetSensorData(UObject* Outer, USGNova2GloveSensorData*& OutSensorData); + + /** + * Returns the normalized Sensor Data of this Nova2 Glove. If no normalization is running on the glove(s), then + * it's done on the PC side. + * + * @param OutNormalizedValues + */ + bool GetNormalizedInput(TArray& OutNormalizedValues) const; + + /** + * Tell the Nova Glove to send Raw Data instead of normalized data. + */ + virtual bool SendRawData(); + + /** + * Tell the Nova Glove to send normalized data. + */ + virtual bool SendNormalizedData(); + +public: + /** + * Convert a HapticLocation into a Nova 2.0 Motor location. + * + * @param Location + */ + virtual ESGNova2VibroMotor ToNovaMotor(ESGHapticLocation Location) const; + + /** + * Returns the channel index for a particular motor. Can make this as complex as I want for the Nova2 GLove(s). + * + * @param Motor + */ + virtual int32 ChannelIndex(ESGNova2VibroMotor Motor) const; + + /** + * Ensures the waveform that is to be sent to this Nova 2.0 Glove has the appropriate parameters. + * + * @param OutWaveform + * @param Motor + */ + virtual void ValidateWaveform(USGCustomWaveform* OutWaveform, ESGNova2VibroMotor Motor) const; + + /** + * Directly sends a custom waveform to the Nova2 Glove motors, as opposed to specifying a Haptic Location. + * + * @param OutWaveform + * @param Motor + * @param bValidateWaveform + */ + virtual bool SendCustomWaveform_Nova2( + USGCustomWaveform* OutWaveform, ESGNova2VibroMotor Motor, bool bValidateWaveform = true); + +public: + /** + * Get a string representation of this Nova 2.0 Glove. + */ + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2GloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2GloveSensorData.h new file mode 100644 index 0000000..503b6e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNova2GloveSensorData.h @@ -0,0 +1,280 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Sensor Data coming off the Nova 2.0 Glove. + * Has certain features the Nova 1.0 Glove does not have, such as multiple + * flexion sensors, normalization states and Active Strap info. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGNova2GloveSensorData.generated.h" + +class FSGNova2GloveSensorDataImpl; +class USGNovaGloveInfo; + +/** + * Nova Glove 2.0 Sensor data, which had additional feedback and calibration parameters. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGNova2GloveSensorData final : public UObject +{ + GENERATED_BODY() + +public: + static USGNova2GloveSensorData* NewNova2GloveSensorData( + UObject* Outer, const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl); + +public: + /** + * Default constructor for Nova2GloveSensorData. + */ + static USGNova2GloveSensorData* NewNova2GloveSensorData(UObject* Outer); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + static USGNova2GloveSensorData* NewNova2GloveSensorData( + UObject* Outer, ESGNormalizationState NormalizationState, + const TArray>& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + static USGNova2GloveSensorData* NewNova2GloveSensorData( + UObject* Outer, ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + static USGNova2GloveSensorData* NewNova2GloveSensorData( + UObject* Outer, ESGNormalizationState NormalizationState, + const TArray>& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + static USGNova2GloveSensorData* NewNova2GloveSensorData( + UObject* Outer, ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * Parse the bytes as they come in from the device into usable values. + * + * @param RawData + * @param GloveInfo + */ + static USGNova2GloveSensorData* Parse(UObject* Outer, const FString& RawData, const USGNovaGloveInfo* GloveInfo); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Default constructor for Nova2GloveSensorData. + */ + USGNova2GloveSensorData(); + + /** + * Create a new instance of a Nova2GloveSensorData. + * + * @param NormalizationState + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNova2GloveSensorData(ESGNormalizationState NormalizationState, + const TArray>& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + * + * @param NormalizationState + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNova2GloveSensorData(ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + * + * @param NormalizationState + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNova2GloveSensorData(ESGNormalizationState NormalizationState, + const TArray>& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + * + * @param NormalizationState + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNova2GloveSensorData(ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGNova2GloveSensorData(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl); + +public: + /** + * The destructor. + */ + virtual ~USGNova2GloveSensorData() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetNova2GloveSensorDataImpl(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGNova2GloveSensorDataImpl& ToNova2GloveSensorDataImpl() const; + +public: + /** + * Sensor Data State based on the internal data. + */ + ESGNormalizationState GetSensorState() const; + + /** + * Pronation/Supination, Flexion/Extension and Abduction/Adduction values for each finger. + */ + TArray> GetSensorValues() const; + + /** + * Returns the sensor movement of a specific finger. + * + * @param Finger + * @param Location If a Nova glove has only one flexion sensor, it will return the same value for FlexionProximal + * and FlexionDistal. + */ + float GetSensorValue(ESGFinger Finger, ESGNova2SensorLocation Location) const; + + /** + * The number of values that were parsed from the sensor string. + */ + int32 GetParsedValues() const; + +public: + /** + * Quaternion rotation relative to magnetic north. + */ + FQuat GetImuRotationQ() const; + + /** + * Rotation relative to magnetic north. + */ + FRotator GetImuRotation() const; + + /** + * Whether the IMU values were all successfully parsed, or not. + */ + bool IsImuParsed() const; + +public: + /** + * A value between 0..1 that represents the battery level of this Nova2 Glove (0 .. 100%). Returns -1 if the value + * wasn't received. + */ + float GetBatteryLevel() const; + + /** + * Returns true if this NovaGlove is connected to a power source. + */ + bool IsCharging() const; + +public: + /** + * Returns true if this sensor data contains the same values as another. + */ + bool Equals(const USGNova2GloveSensorData* Nova2GloveSensorData) const; + +public: + /** + * Create a readable string representation of this Sensor Data. + */ + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h new file mode 100644 index 0000000..92827b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGlove.h @@ -0,0 +1,640 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * An interface for the "Nova" - a soft glove. + * Contains methods for Kinematics, Haptics and Serialization. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGHapticGlove.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGNovaGlove.generated.h" + +class FSGNovaGloveImpl; +class USGHandInterpolator; +class USGNovaGloveInfo; +class USGNovaGloveSensorData; +class USGSensorNormalization; +class USGThresholdCommand; + +/** + * A soft glove with Force- and Vibrotactile Feedback and limited tracking. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGNovaGlove final : public USGHapticGlove +{ + GENERATED_BODY() + +public: + static USGNovaGlove* NewNovaGlove(UObject* Outer, const FSGNovaGloveImpl& NovaGloveImpl); + + static USGNovaGlove* NewNovaGlove(UObject* Outer, TSharedRef NovaGloveImpl); + +public: + /** + * Default constructor for NovaGlove. + */ + static USGNovaGlove* NewNovaGlove(UObject* Outer); + + /** + * Creates a new instance of a Nova Glove. + */ + static USGNovaGlove* NewNovaGlove(UObject* Outer, const USGNovaGloveInfo& DeviceInfo); + +public: + /** + * Deserializes a Nova from its ConstantsString. Returns a nullptr if unsuccessful. + * + * @param ConstantsString + */ + static USGDevice* Parse(UObject* Outer, const FString& ConstantsString); + + /** + * Retrieve all Nova's. + */ + static TArray GetNovaGloves(UObject* Outer); + + /** + * Retrieve the first connected Nova there is. + */ + static bool GetNovaGlove(UObject* Outer, USGNovaGlove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed Nova. + */ + static bool GetNovaGlove(UObject* Outer, bool bRightHanded, USGNovaGlove*& OutGlove); + +public: + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is a left or right-handed glove. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is a left or right-handed glove. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is right or left hand. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + static void CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether this is right or left hand. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + static void CalculateWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutWristPosition, FRotator& OutWristRotation); + +public: + /** + * Byte indicating a new Nova haptic command. + */ + static ANSICHAR GetHapticsByte(); + + /** + * Byte indicating a new Nova thresholds command. + */ + static ANSICHAR GetThresholdsByte(); + + /** + * Byte to ignore Thresholds. + */ + static ANSICHAR GetIgnoreThresholdsByte(); + + /** + * Ranges before a Nova 1.0 Sensor is allowed to move. + */ + static TArray GetNovaSensorRanges(); + +public: + /** + * Converts Nova Sensor Data into floating point inputs for normalization. + * + * @param SensorData + */ + static TArray ToNormalizedValues(const USGNovaGloveSensorData* SensorData); + + /** + * Convert Sensor Data into a series of normalized values. + * + * @param Outer + * @param SensorData + * @param OutSensorNormalizer + */ + static TArray ToNormalizedValues( + UObject* Outer, + const USGNovaGloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer); + +public: + /** + * Calculate Hand Angles for a Nova Glove, based on normalized input. + * + * @param NormalizedValues + * @param Interpolator + */ + static TArray> CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator); + +public: + /** + * Converts a Threshold command into a Nova Glove command. + * + * @param Thresholds + */ + static FString ToNovaCommandAsFlexion(const USGThresholdCommand* Thresholds); + + /** + * Converts a Threshold command into a Nova Glove command. + * + * @param Thresholds + * @param Interpolator + */ + static FString ToNovaCommandAsRaw( + const USGThresholdCommand* Thresholds, const USGSensorNormalization* Interpolator); + +protected: + USGNovaGlove(); + + explicit USGNovaGlove(const USGNovaGloveInfo& DeviceInfo); + +public: + /** + * The cast from underlying parent type constructor. + */ + explicit USGNovaGlove(const FSGDeviceImpl& SGDeviceImpl); + + /** + * The cast from underlying parent type constructor. + */ + explicit USGNovaGlove(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * The cast from underlying type constructor. + */ + explicit USGNovaGlove(const FSGNovaGloveImpl& NovaGloveImpl); + +protected: + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGNovaGlove(TSharedRef SGDeviceImpl); + + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGNovaGlove(TSharedRef HapticGloveImpl); + + /** + * The cast from underlying pointer type constructor. + */ + explicit USGNovaGlove(TSharedRef NovaGloveImpl); + +public: + /** + * The destructor. + */ + virtual ~USGNovaGlove() override; + +public: + /** + * The cast to underlying type method. + */ + TSharedRef ToNovaGloveImpl() const; + +public: + /** + * Return the DeviceType of this Nova. + */ + virtual ESGDeviceType GetDeviceType() const override; + + /** + * Returns this device's unique identifier. + */ + virtual FString GetDeviceId() const override; + + /** + * Access this device's hardware designation. + */ + virtual FString GetHardwareVersion() const override; + + /** + * Access this device's main firmware version. (ex: v3.2 -> 3). + */ + virtual int32 GetFirmwareVersion() const override; + + /** + * Access this device's sub-firmware version. (ex: v3.2 -> 2). + */ + virtual int32 GetSubFirmwareVersion() const override; + +public: + /** + * Change this device's index within the SenseCom. Warning: Can cause errors. + * + * @param NewIndex + */ + virtual void SetDeviceIndex(int32 NewIndex) override; + +public: + /** + * Returns true if this device operates on a battery. + */ + virtual bool HasBattery() const override; + + /** + * Returns true if this device is currently charging. + */ + virtual bool IsCharging() override; + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + virtual bool GetBatteryLevel(float& OutBatteryLevel) override; + +public: + /** + * Returns true if this glove is meant for right hands. + */ + virtual bool IsRight() const override; + + /** + * Retrieve Nova rotation. + * + * @param OutImu + */ + virtual bool GetImuRotation(FQuat& OutImu) override; + + /** + * Retrieve Nova rotation. + * + * @param OutImu + */ + virtual bool GetImuRotation(FRotator& OutImu) override; + + /* + * Calculate a HandPose from this glove's latest Sensor Data. + */ + virtual bool GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, + USGHandPose*& OutHandPose) const override; + + /** + * Returns the Hand Angles calculated by this Nova Glove. Used for input for HandPoses, but can be used in and of + * itself. + * + * @param OutHandAngles + */ + virtual bool GetHandAngles(TArray>& OutHandAngles) const override; + +public: + /* + * Retrieve the calibration status of this Nova Glove. + */ + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + /* + * Completes sensor Normalization on the Nova's end. + */ + virtual void EndCalibration() override; + + /* + * Completes sensor Normalization on the Nova's end. + */ + virtual void ResetCalibration() override; + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + virtual void StopHaptics() override; + + /** + * Stop only all vibrotactile feedback. + */ + virtual void StopVibrations() override; + + /** + * Take all active commands in the device queue, compile them into one and send them to the device. + * + * @returns Returns true if the message was successfully sent to SenseCom. Returns false if no changes to commands + * were detected. + * + * @remarks Generic function across any Haptic Interface in SGCore. + */ + virtual bool SendHaptics() override; + +public: + /** + * Returns true if this Glove supports the chosen haptic location. + * + * @param AtLocation + */ + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const override; + + /** + * Send a custom waveform to the Nova. + * + * @param OutWaveform + * @param Location + */ + virtual bool SendCustomWaveform(USGCustomWaveform* OutWaveform, ESGHapticLocation Location) override; + +public: + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the Force-Feedback levels, from 0.0 (no FFB) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + * + * @param Finger The finger to which to send the command. + * @param Level01 Value will be clamped between [0...1], where 0.0 means no Force-Feedback, and 1.0 means full + * force-feedback. + */ + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + /** + * Queue a vibrotactile level for each finger. + * + * @param Amplitudes + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + +public: + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the Nova. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the Nova. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const override; + +public: + /** + * Access all sorts of device info specific to this Nova. + */ + USGNovaGloveInfo* GetGloveInfo(UObject* Outer) const; + + /** + * If true, this Nova Glove supports sending special firmware commands to lock brakes at specific sensor values. + */ + bool SupportsThresholds() const; + + /** + * If true, this Nova Glove supports sending custom 'fire-and-forget' waveforms. + */ + bool SupportsCustomWaveforms() const; + + /** + * If true, this glove's sensor calibration runs on board the device. + */ + bool SupportsOnBoardNormalization() const; + +public: + /** + * Get the latest Sensor Data from this Glove. + */ + bool GetSensorData(UObject* Outer, USGNovaGloveSensorData*& OutSensorData); + + /** + * Returns the normalized Sensor Data of this Nova Glove. If no normalization is running on the glove(s), then it's + * done on the PC side. + * + * @param OutNormalizedValues + */ + bool GetNormalizedInput(TArray& OutNormalizedValues) const; + +public: + /** + * Converts a set of commands into a series of bytes (string) this glove can understand. + * + * @param ForceFeedbackLevels Force-Feedback levels for each finger. + * @param BuzzLevels Vibration levels for each finger. + * @param WristLevel Value between 0 and 1 for the wrist amplitude to set. + */ + virtual FString ToNovaCommand( + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel) const; + + /** + * Queue a vibrotactle level for a specific finger. + * + * @param Finger + * @param Amplitude + */ + virtual bool QueueVibroLevel(int32 Finger, float Amplitude); + + /** + * Queue a command to the vibration amplitude of a general wrist actuator to a set level. + * + * @param Amplitude The amplitude of the wrist vibration, where 0.0 means no vibration, and 1.0 means full + * vibration. + * + * @returns Returns true if the wrist command has been successfully queued. If false, the device might not support + * direct wrist control or have the appropriate firmware. + * + * @remarks This one isn't contained in an interface as it's not used outside of the NovaGlove class. + */ + virtual bool QueueWristLevel(float Amplitude); + +public: + /** + * Convert a HapticLocation into a Nova Motor location. + * + * @param Location + */ + virtual ESGNovaVibroMotor ToNovaMotor(ESGHapticLocation Location) const; + + /** + * Returns the channel index for a particular motor. Can make this as complex as I want for the Nova GLove(s). + * + * @param Motor + */ + virtual int32 ChannelIndex(ESGNovaVibroMotor Motor) const; + + /** + * Ensures the waveform that is to be sent to this Nova Glove has the appropriate parameters. + * + * @param OutWaveform + * @param Motor + */ + virtual void ValidateWaveform(USGCustomWaveform* OutWaveform, ESGNovaVibroMotor Motor) const; + + /** + * Directly sends a custom waveform to the Nova Glove motors, as opposed to specifying a Haptic Location. + * + * @param OutWaveform + * @param Motor + * @param bValidateWaveform + */ + virtual bool SendCustomWaveform_Nova( + USGCustomWaveform* OutWaveform, ESGNovaVibroMotor Motor, bool bValidateWaveform = true); + +public: + /** + * Stops the glove when flexing pas this point. + * + * @param Finger + * @param FlexionThreshold + */ + bool QueueThresholdCommand_Flexion(int32 Finger, float FlexionThreshold); + + /** + * Queue a command to clear the threshold for a specific finger. + * + * @param Finger + * + * @returns Returns true if the command was queued. If false, the device does not have the required firmware for + * these commands. + */ + virtual bool QueueClearThreshold(int32 Finger); + +public: + /** + * Create a string representation of this device for reporting purposes. + */ + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveInfo.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveInfo.h new file mode 100644 index 0000000..f40e416 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveInfo.h @@ -0,0 +1,215 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains information on Nova's hardware, extracted from the device. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGNovaGloveInfo.generated.h" + +class FSGNovaGloveInfoImpl; + +/** + * Device information extracted from a Nova Glove. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGNovaGloveInfo final : public UObject +{ + GENERATED_BODY() + +public: + static USGNovaGloveInfo* NewNovaGloveInfo( + UObject* Outer, const FSGNovaGloveInfoImpl& NovaGloveInfoImpl); + +public: + /** + * The default constructor. + */ + static USGNovaGloveInfo* NewNovaGloveInfo(UObject* Outer); + + /** + * Create a new instance of a NovaGloveInfo. + */ + static USGNovaGloveInfo* NewNovaGloveInfo( + UObject* Outer, + const FString& DeviceId, const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, const FQuat& ImuCorrection, int32 NumberOfSensors); + +public: + /** + * Parse a constants string into a NovaGloveInfo class. + */ + static bool Parse(UObject* Outer, const FString& ConstantsString, USGNovaGloveInfo*& OutGloveInfo); + + /** + * Convert a string representation back into a NovaGloveInfo class. + */ + static USGNovaGloveInfo* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGNovaGloveInfo(); + + /** + * Create a new instance of a NovaGloveInfo. + */ + USGNovaGloveInfo(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, const FQuat& ImuCorrection, int32 NumberOfSensors); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGNovaGloveInfo(const FSGNovaGloveInfoImpl& NovaGloveInfoImpl); + +public: + /** + * The destructor. + */ + virtual ~USGNovaGloveInfo() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetNovaGloveInfoImpl(const FSGNovaGloveInfoImpl& NovaGloveInfoImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGNovaGloveInfoImpl& ToNovaGloveInfoImpl() const; + +protected: + /** + * The non-const cast to underlying type method. + */ + FSGNovaGloveInfoImpl& ToNovaGloveInfoImpl(); + +public: + /** + * Unique identifier of this device. + */ + FString GetDeviceId() const; + + /** + * Hardware (sub) version of this Sense Glove Device. + */ + FString GetHardwareVersion() const; + + /** + * Firmware version running on the device's MicroController. (as v4.12, this is the 4). + */ + int32 GetFirmwareVersion() const; + + /** + * Sub firmware version running on the device's microcontroller (as v4.12, this is the .12). + */ + int32 GetSubFirmwareVersion() const; + + /** + * Determines if this is a right-handed Nova. + */ + bool IsRight() const; + + /** + * The IMU correction of this Nova. + */ + FQuat GetImuCorrectionQ() const; + + /** + * The IMU correction of this Nova. + */ + FRotator GetImuCorrection() const; + + /** + * The number of sensors in this device. + */ + int32 GetNumberOfSensors() const; + +public: + /** + * Returns true if this glove's firmware is newer than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Returns true if this glove's firmware is older than certain version. + * + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + +public: + /** + * Returns true if this GloveInfo contains the same information as another. + */ + bool Equals(const USGNovaGloveInfo* NovaGloveInfo) const; + +public: + /** + * Create a string representation of this Glove Info. + */ + FString ToString() const; + + /** + * Convert this class into a string representation so it can be unpacked later. + */ + FString SGSerialize() const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveSensorData.h new file mode 100644 index 0000000..2e9f128 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGNovaGloveSensorData.h @@ -0,0 +1,238 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * Nova SensorData, parsed from rae string representations. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGNovaGloveSensorData.generated.h" + +class FSGNovaGloveSensorDataImpl; +class USGNovaGloveInfo; + +/** + * Sensor Data coming from a Nova, converted into useful values. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGNovaGloveSensorData final : public UObject +{ + GENERATED_BODY() + +public: + static USGNovaGloveSensorData* NewNovaGloveSensorData( + UObject* Outer, const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl); + +public: + /** + * Default constructor for NovaGloveSensorData. + */ + static USGNovaGloveSensorData* NewNovaGloveSensorData(UObject* Outer); + + /** + * Create a new instance of a NovaGloveSensorData. + */ + static USGNovaGloveSensorData* NewNovaGloveSensorData( + UObject* Outer, const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a NovaGloveSensorData. + */ + static USGNovaGloveSensorData* NewNovaGloveSensorData( + UObject* Outer, const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * Returns a NovaGloveSensorData without any values. + */ + static USGNovaGloveSensorData* Empty(UObject* Outer); + + /** + * Parse the bytes as they come in from the device into usable values. + * + * @param RawData + * @param GloveInfo + * @return + */ + static USGNovaGloveSensorData* Parse(UObject* Outer, const FString& RawData, const USGNovaGloveInfo* GloveInfo); + + /** + * Convert this sensor data into ta string representation. + * + * @param SerializedString + */ + static USGNovaGloveSensorData* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Default constructor for NovaGloveSensorData. + */ + USGNovaGloveSensorData(); + + /** + * Create a new instance of a NovaGloveSensorData. + * + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNovaGloveSensorData(const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a NovaGloveSensorData. + * + * @param Values + * @param ParsedValues + * @param ImuRotation + * @param bImuParsed + * @param BatteryLevel + * @param bCharging + */ + USGNovaGloveSensorData(const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGNovaGloveSensorData(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl); + +public: + /** + * The destructor. + */ + virtual ~USGNovaGloveSensorData() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetNovaGloveSensorDataImpl(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGNovaGloveSensorDataImpl& ToNovaGloveSensorDataImpl() const; + +public: + /** + * Pronation/Supination, Flexion/Extension and Abduction/Adduction values for each finger. + */ + TArray GetSensorValues() const; + + /** + * Returns the sensor movement of a specific finger. + * + * @param Finger + * @param Location If a Nova glove has only one flexion sensor, it will return the same value for FlexionProximal + * and FlexionDistal. + */ + float GetSensorValue(ESGFinger Finger, ESGNovaSensorLocation Location) const; + + /** + * The number of values that were parsed from the sensor string. + */ + int32 GetParsedValues() const; + +public: + /** + * Quaternion rotation relative to magnetic north. + */ + FQuat GetImuRotationQ() const; + + /** + * Rotation relative to magnetic north. + */ + FRotator GetImuRotation() const; + + /** + * Whether the IMU values were all successfully parsed, or not. + */ + bool IsImuParsed() const; + +public: + /** + * A value between 0..1 that represents the battery level of this Nova Glove (0 .. 100%). Returns -1 if the value + * wasn't received. + */ + float GetBatteryLevel() const; + + /** + * Returns true if this NovaGlove is connected to a power source. + */ + bool IsCharging() const; + +public: + /** + * Returns true if this sensor data contains the same values as another. + */ + bool Equals(const USGNovaGloveSensorData* NovaGloveSensorData) const; + +public: + /** + * Create a readable string representation of this Sensor Data. + */ + FString ToString() const; + + /** + * Convert this sensor data into a string so it can be stored on disk. + */ + FString SGSerialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseCom.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseCom.h new file mode 100644 index 0000000..c8bf288 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseCom.h @@ -0,0 +1,81 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "UObject/Object.h" + +#include "SGSenseCom.generated.h" + +/** + * + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGSenseCom +{ + GENERATED_BODY() + +public: + /** + * Registers current process as the latest SenseCom build. + */ + static bool RegisterExe(); + + /** + * Register a particular path as the SenseGlove executable location. + */ + static bool RegisterExe(const FString& ExePath); + + /** + * Retrieve the location of SenseGlove executable. + */ + static bool GetExePath(FString& OutExePath); + + /** + * Returns true if SenseCom scanning is active. + */ + static bool ScanningActive(); + + /** + * Returns the directory of the current process. + */ + static bool GetCurrentExeDirectory(FString& OutDirectory); + + /** + * Force-starts the SenseCom application if it is active on the system. + */ + static bool StartupSenseCom(); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h new file mode 100644 index 0000000..60d7baa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlove.h @@ -0,0 +1,621 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * An interface for the Sense Glove exoskeleton glove. + * Contains methods for Kinematics, Haptics and Serialization. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGHapticGlove.h" +#include "SGCore/SGSenseGlovePose.h" +#include "SGCore/SGSenseGloveSensorData.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGSenseGlove.generated.h" + +class FSGSenseGloveImpl; +class USGHandInterpolator; +class USGHandPose; +class USGSenseGloveSensorNormalizer; + +/** + * Interface for the Sense Glove; and exoskeleton Force-Feedback glove. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSenseGlove final : public USGHapticGlove +{ + GENERATED_BODY() + +public: + static USGSenseGlove* NewSenseGlove(UObject* Outer, const FSGSenseGloveImpl& SenseGloveImpl); + + static USGSenseGlove* NewSenseGlove(UObject* Outer, TSharedRef SenseGloveImpl); + +public: + /** + * Default constructor for SenseGlove. + */ + static USGSenseGlove* NewSenseGlove(UObject* Outer); + + /** + * Create a new instance of a Sense Glove. + */ + static USGSenseGlove* NewSenseGlove(UObject* Outer, const USGSenseGloveInfo& Model); + +public: + /** + * Deserializes a Sense Glove from its ConstantsString. Returns a nullptr if unsuccessful. + */ + static USGDevice* Parse(UObject* Outer, const FString& ConstantsString); + + /** + * Retrieve all Sense Gloves connected to this system. + */ + static TArray GetSenseGloves(UObject* Outer); + + /** + * Retrieve the first connected Sense Glove there is. + */ + static bool GetSenseGlove(UObject* Outer, USGSenseGlove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed sense glove. + */ + static bool GetSenseGlove(UObject* Outer, bool bRightHanded, USGSenseGlove*& OutGlove); + +public: + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether or not this is a left or right handed glove. + * @param MountedOn Which finger module the hardware is mounted on. Default is Middle finger. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param bRightHanded Whether or not this is a left or right handed glove. + * @param MountedOn Which finger module the hardware is mounted on. Default is Middle finger. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + static void CalculateGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Calculates the full wrist location. + * + * @param ReferencePosition + * @param ReferenceRotation + * @param TrackingHardware + * @param bRightHanded + * @param MountedOn + * @param GloveWristPositionOffset + * @param GloveWristRotationOffset + * @param OutWristPosition + * @param OutWristRotation + */ + static void CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Calculates the full wrist location. + * + * @param ReferencePosition + * @param ReferenceRotation + * @param TrackingHardware + * @param bRightHanded + * @param MountedOn + * @param GloveWristPositionOffset + * @param GloveWristRotationOffset + * @param OutWristPosition + * @param OutWristRotation + */ + static void CalculateWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation); + +public: + /** + * Byte indicating a new Sense Glove haptic command. + */ + static ANSICHAR GetHapticsByte(); + + /** + * Byte indicating a new Thumper command. + */ + static ANSICHAR GetThumperByte(); + + /** + * Default offset from thimble to fingertip. + */ + static FVector GetDefaultThimbleOffset(); + +public: + /** + * Calculates a GlovePose based on sensor angles and a glove model. + * + * @remarks Use this when you already have gloveAngles collected. + */ + static USGSenseGlovePose* CalculateGlovePose(UObject* Outer, + const USGSenseGloveSensorData* SensorData, + const USGSenseGloveInfo* GloveModel); + + /** + * Calculates a GlovePose based on gloveAngles and a glove model. + * + * @remarks Use this when you already have gloveAngles collected. + */ + static USGSenseGlovePose* CalculateGlovePose(UObject* Outer, + const TArray>& GloveAngles, + const USGSenseGloveInfo* GloveModel); + + /** + * Returns normalized flexions and abductions. + * + * @param SumAngles + * @param Normalizer + * @param OutFlexions + * @param OutAbductions + */ + static void NormalizeValues(const TArray& SumAngles, + const USGSenseGloveSensorNormalizer* Normalizer, + TArray& OutFlexions, TArray& OutAbductions); + +public: + /** + * Calculate Hand Angles from a GlovePose and relevant normalizers. + * + * @param GlovePose + * @param Normalizer + * @param NormalizedToAngles + * @param OutHandAngles + */ + static void CalculateHandAngles( + const USGSenseGlovePose* GlovePose, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + TArray>& OutHandAngles); + + /** + * Calculate a HandPose based on a glovePose and a solver. + * + * @remarks Use this when you already have a GlovePose. + * + * @param GlovePose + * @param HandModel + * @param Normalizer + * @param NormalizedToAngles + * @param OutHandPose + */ + static void CalculateHandPose( + UObject* Outer, + const USGSenseGlovePose* GlovePose, const USGBasicHandModel* HandModel, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + USGHandPose*& OutHandPose); + +protected: + /** + * + */ + USGSenseGlove(); + + /** + * Create a new instance of a Sense Glove. + */ + explicit USGSenseGlove(const USGSenseGloveInfo& Model); + +public: + /** + * The cast from underlying parent type constructor. + */ + explicit USGSenseGlove(const FSGDeviceImpl& SGDeviceImpl); + + /** + * The cast from underlying parent type constructor. + */ + explicit USGSenseGlove(const FSGHapticGloveImpl& HapticGloveImpl); + + /** + * The cast from underlying type constructor. + */ + explicit USGSenseGlove(const FSGSenseGloveImpl& SenseGloveImpl); + +protected: + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGSenseGlove(TSharedRef SGDeviceImpl); + + /** + * The cast from underlying parent pointer type constructor. + */ + explicit USGSenseGlove(TSharedRef HapticGloveImpl); + + /** + * The cast from underlying pointer type constructor. + */ + explicit USGSenseGlove(TSharedRef SenseGloveImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSenseGlove() override; + +public: + /** + * The cast to underlying type method. + */ + TSharedRef ToSenseGloveImpl() const; + +public: + /** + * Get the DeviceType enumerator of this SenseGlove, used in DeviceList enumeration. + */ + virtual ESGDeviceType GetDeviceType() const override; + + /** + * Retrieve this Sense Glove's unique identifier. + */ + virtual FString GetDeviceId() const override; + + /** + * Retrieve this glove's hardware (sub) version. + */ + virtual FString GetHardwareVersion() const override; + + /** + * Retrieve this device's firmware version. + */ + virtual int32 GetFirmwareVersion() const override; + + /** + * Retrieve this device's sub-firmware version. + */ + virtual int32 GetSubFirmwareVersion() const override; + +public: + /** + * Check if this Sense Glove is right handed. + * + * @remarks While the variable is stored in SG_GloveModel, added direct access here since its frequently used. + */ + virtual bool IsRight() const override; + + /** + * + */ + virtual bool GetImuRotation(FQuat& OutImu) override; + + /** + * + */ + virtual bool GetImuRotation(FRotator& OutImu) override; + + /* + * Calculate a HandPose from this glove's latest Sensor Data. + * + * @param HandGeometry + * @param OutHandPose + */ + virtual bool GetHandPose(UObject* Outer, const USGBasicHandModel* HandGeometry, + USGHandPose*& OutHandPose) const override; + + /** + * Returns the Hand Angles calculated by this Sense Glove. Used for input for HandPoses, but can be used in and of + * itself. + * + * @param OutHandAngles + */ + virtual bool GetHandAngles(TArray>& OutHandAngles) const; + +public: + /* + * Retrieve the calibration status of this Sense Glove. + */ + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + /* + * Completes sensor Normalization on the Glove's end. + */ + virtual void EndCalibration() override; + + /* + * Completes sensor Normalization on the Glove's end. + */ + virtual void ResetCalibration() override; + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + virtual void StopHaptics() override; + + /** + * Stop only all vibrotactile feedback. + */ + virtual void StopVibrations() override; + + /** + * Flush all streaming haptic effects on the different fingers to the Glove. + */ + virtual bool SendHaptics() override; + +public: + /** + * Set the Force-Feedback value of a particular finger to a specific level. + * + * @param Levels01 Array containing the Force-Feedback levels, from 0.0 (no FFB) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Finger Value will be clamped between [0...1], where 0.0 means no Force-Feedback, and 1.0 means + * full force-feedback. + * @param Level01 The finger to which to send the command. + */ + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + /** + * Queue a vibrotactile level for each finger. + * + * @param Amplitudes + */ + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + +public: + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + virtual void GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const override; + + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param MountedOn Which finger module the hardware is mounted on. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const; + + /** + * Retrieve the location of the glove origin, based on a reference location. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param MountedOn Which finger module the hardware is mounted on. + * @param OutGlovePosition The 3D Position of the glove, in mm, relative to your origin. + * @param OutGloveRotation The 3D Rotation of the glove, relative to your origin. + */ + void GetGloveLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation) const; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition Position of the tracked object, in mm, relative to your origin. + * @param ReferenceRotation Rotation of the tracked object relative to your origin. + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + * + * @remarks The simplest interface, using default offsets. + */ + virtual void GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) const override; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition + * @param ReferenceRotation + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param GloveWristPositionOffset Position offset, in mm, from the glove origin to wrist (default = 0,0,-30 mm). + * @param GloveWristRotationOffset Rotation offset from the glove origin to wrist (default = 0,-5,0 degrees). + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + */ + void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) const; + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @param ReferencePosition + * @param ReferenceRotation + * @param TrackingHardware The hardware mounted on the SenseGlove. + * @param GloveWristPositionOffset Position offset, in mm, from the glove origin to wrist (default = 0,0,-30 mm). + * @param GloveWristRotationOffset Rotation offset from the glove origin to wrist (default = 0,-5,0 degrees). + * @param OutWristPosition The 3D Position of the wrist, in mm, relative to your origin. + * @param OutWristRotation The 3D Rotation of the wrist, relative to your origin. + */ + void GetWristLocation(const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation) const; + +public: + /** + * Retrieve this glove's hardware model, which contains its hardware data. + */ + USGSenseGloveInfo* GetGloveInfo(UObject* Outer) const; + + /** + * Offset from thimble to fingertip, used for Inverse Kinematics. + */ + TArray GetFingerThimbleOffsets() const; + + /** + * + * @param Finger + * @param Offset + */ + void SetFingerThimbleOffset(int32 Finger, const FVector& Offset); + + /** + * + */ + bool SupportsWristActuator() const; + +public: + /** + * Get the latest Sensor Data from this Sense Glove. + */ + bool GetSensorData(UObject* Outer, USGSenseGloveSensorData*& OutSensorData) const; + + /** + * Get the pose of this Sense Glove's hardware, based on its latest Sensor Data. + */ + bool GetGlovePose(UObject* Outer, USGSenseGlovePose*& OutGlovePose); + + /** + * Get the pose of this Sense Glove's hardware based on a set of Sensor Data. + */ + bool GetGlovePose(UObject* Outer, const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose); + +public: + /** + * Queue a vibrotactle level for a specific finger. + * + * @param Finger + * @param Amplitude + */ + virtual bool QueueVibroLevel(int32 Finger, float Amplitude); + + /** + * Queue a command for the SenseGlove Thumper actuator. + * + * @param Command + */ + virtual bool QueueThumperCommand(ESGSenseGloveThumperCommand Command); + +public: + /** + * Create a string representation of this device for reporting purposes. + */ + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveInfo.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveInfo.h new file mode 100644 index 0000000..e27ffd2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveInfo.h @@ -0,0 +1,317 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Glove information taken from the Sense Glove. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGloveInfo.generated.h" + +class FSGSenseGloveInfoImpl; + +/** + * Glove Information taken from a SenseGlove. Contains everything from unique ID, firmware version, etc. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSenseGloveInfo final : public UObject +{ + GENERATED_BODY() + +public: + static USGSenseGloveInfo* NewSenseGloveInfo( + UObject* Outer, const FSGSenseGloveInfoImpl& SenseGloveInfoImpl); + +public: + /** + * The default constructor. + */ + static USGSenseGloveInfo* NewSenseGloveInfo(UObject* Outer); + + /** + * Create a new Sense Glove device model. + */ + static USGSenseGloveInfo* NewSenseGloveInfo( + UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + static USGSenseGloveInfo* NewSenseGloveInfo( + UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + static USGSenseGloveInfo* NewSenseGloveInfo( + UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + static USGSenseGloveInfo* NewSenseGloveInfo( + UObject* Outer, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + +public: + /** + * Create an instance of the SGModel from its string representation. + */ + static bool Parse(UObject* Outer, const FString& ConstantsString, USGSenseGloveInfo*& OutGloveInfo, + bool bUpdateOldModels = true); + + /** + * Deserialize a HandProfile back into usable values. + */ + static USGSenseGloveInfo* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGSenseGloveInfo(); + + /** + * Create a new Sense Glove device model. + */ + USGSenseGloveInfo(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + USGSenseGloveInfo(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray>& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + USGSenseGloveInfo(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + USGSenseGloveInfo(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGSenseGloveInfo(const FSGSenseGloveInfoImpl& SenseGloveInfoImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSenseGloveInfo() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetSenseGloveInfoImpl(const FSGSenseGloveInfoImpl& SenseGloveInfoImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGSenseGloveInfoImpl& ToSenseGloveInfoImpl() const; + +protected: + /** + * The non-const cast to underlying type method. + */ + FSGSenseGloveInfoImpl& ToSenseGloveInfoImpl(); + +public: + /** + * Unique identifier of this device. + */ + FString GetDeviceId() const; + + /** + * Hardware (sub) version of this Sense Glove Device. + */ + FString GetHardwareVersion() const; + + /** + * Firmware version running on the device's MicroController. + */ + int32 GetFirmwareVersion() const; + + /** + * Sub-Firmware version running on the device's MicroController. + */ + int32 GetSubFirmwareVersion() const; + + /** + * Check if this Sense Glove belongs to a left or right hand. + */ + bool IsRight() const; + + /** + * The number of Sensors in this SenseGlove. + */ + int32 GetNumberOfSensors() const; + + /** + * The IMU correction of this Sense Glove. + */ + FQuat GetImuCorrectionQ() const; + + /** + * The IMU correction of this Sense Glove. + */ + FRotator GetImuCorrection() const; + + /** + * The starting positions of each Sense Glove finger, relative to the glove origin. + */ + TArray GetStartPositions() const; + + /** + * The starting rotations of each Sense Glove finger, relative to the glove origin. + */ + TArray GetStartRotationsQ() const; + + /** + * The starting rotations of each Sense Glove finger, relative to the glove origin. + */ + TArray GetStartRotations() const; + + /** + * The lengths of each Sense Glove finger section, in cm. + */ + TArray> GetGloveLengths() const; + + /** + * Whether this device has a specific function (T/F). + */ + TArray GetFunctions() const; + +public: + /** + * The starting position of one Sense Glove finger, relative to the glove origin. + */ + FVector GetStartPosition(ESGFinger Finger) const; + + /** + * The starting rotation of one Sense Glove finger, relative to the glove origin. + */ + FQuat GetStartRotationQ(ESGFinger Finger) const; + + /** + * The starting rotation of one Sense Glove finger, relative to the glove origin. + */ + FRotator GetStartRotation(ESGFinger Finger) const; + + /** + * The lengths of one Sense Glove finger's sections, in cm. + */ + TArray GetGloveLengths(ESGFinger Finger) const; + +public: + /** + * Place incoming sensor data into the right format, according to this glove's model. + */ + TArray> ToGloveAngles(const TArray>& SensorAngles) const; + + /** + * Returns true if this SG_Model has the same values as another. + */ + bool Equals(const USGSenseGloveInfo* SenseGloveInfo) const; + +public: + /** + * Create a string representation for fast logging. + */ + FString ToString(bool bShortNotation) const; + + /** + * Create a string representation for logging. If shortNotation is false, all values are reported. + */ + FString ToString() const; + + /** + * Serialize this HandProfile into a string representation. + */ + FString SGSerialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlovePose.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlovePose.h new file mode 100644 index 0000000..98f2a1c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGlovePose.h @@ -0,0 +1,259 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains position and rotation data of a SenseGlove's exoskeleton, along + * with accessors for relevant variables. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGQuatArray.h" +#include "SGTypes/SGRotatorArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGlovePose.generated.h" + +class FSGSenseGlovePoseImpl; +class USGSenseGloveInfo; + +/** + * Represents a pose of a Sense Glove exoskeleton. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSenseGlovePose final : public UObject +{ + GENERATED_BODY() + +public: + static USGSenseGlovePose* NewSenseGlovePose( + UObject* Outer, const FSGSenseGlovePoseImpl& SenseGlovePoseImpl); + +public: + /** + * The basic constructor. + */ + static USGSenseGlovePose* NewSenseGlovePose(UObject* Outer); + + /** + * Creates a new instance of a SenseGlovePose. + */ + static USGSenseGlovePose* NewSenseGlovePose(UObject* Outer, bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + static USGSenseGlovePose* NewSenseGlovePose(UObject* Outer, bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + static USGSenseGlovePose* NewSenseGlovePose(UObject* Outer, bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + static USGSenseGlovePose* NewSenseGlovePose(UObject* Outer, bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + +public: + /** + * Returns an idle pose for the Sense Glove if no data can be found. + */ + static USGSenseGlovePose* IdlePose(UObject* Outer, const USGSenseGloveInfo* GloveInfo); + + /** + * Deserialize a GlovePose back into usable values. + */ + static USGSenseGlovePose* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The basic constructor. + */ + USGSenseGlovePose(); + + /** + * Creates a new instance of a SenseGlovePose. + */ + USGSenseGlovePose(bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + USGSenseGlovePose(bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + USGSenseGlovePose(bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + USGSenseGlovePose(bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGSenseGlovePose(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSenseGlovePose() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetSenseGlovePoseImpl(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGSenseGlovePoseImpl& ToSenseGlovePoseImpl() const; + +public: + /** + * Whether this Glove Pose was created for be a right- or left hand, or not. + */ + bool IsRight() const; + + /** + * Positions of each glove joint, relative to the Glove's Origin. + */ + TArray> GetJointPositions() const; + + /** + * Quaternion rotation of each glove joint, relative to the Glove Origin. + */ + TArray> GetJointRotationsQ() const; + + /** + * Rotation of each glove joint, relative to the Glove Origin. + */ + TArray> GetJointRotations() const; + + /** + * Glove joint angles in euler notation, relative to the last segment. + * + * @remarks Essentially sensor angles, though placed in their proper xyz notation. + */ + TArray> GetGloveAngles() const; + +public: + /** + * The position of the tip of the 'thimbles', the furthest link on each glove link. + */ + TArray GetThimblePositions() const; + + /** + * The (quaternion) rotation of the 'thimbles', the furthest link on each link. + */ + TArray GetThimbleRotationsQ() const; + + /** + * The rotation of the 'thimbles', the furthest link on each link. + */ + TArray GetThimbleRotations() const; + + /** + * Sum of the Sensor angles in each (xyz) direction. "Total Pronation / Flexion / Abduction". + */ + TArray GetTotalGloveAngles() const; + + /** + * Calculate fingertip positions, knowing the offset between thimble and fingertips. + */ + TArray CalculateFingertips(const TArray& FingerOffsets) const; + + /** + * Returns true if this glove pose equals another. + */ + bool Equals(const USGSenseGlovePose* SenseGlovePose) const; + +public: + /** + * Returns a user-friendly string representation of this GlovePose for reporting. + */ + FString ToString(bool bShortFormat = false) const; + + /** + * Serialize this GlovePose into a string representation. + */ + FString SGSerialize() const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorData.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorData.h new file mode 100644 index 0000000..20b7ae5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorData.h @@ -0,0 +1,232 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Parsed sensor data coming form a Sense Glove. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGSenseGloveInfo.h" +#include "SGTypes/SGFloatArray.h" + +#include "SGSenseGloveSensorData.generated.h" + +class FSGSenseGloveSensorDataImpl; + +/** + * Sense Glove Sensor Data, parsed from a sensor string. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSenseGloveSensorData final : public UObject +{ + GENERATED_BODY() + +public: + static USGSenseGloveSensorData* NewSenseGloveSensorData( + UObject* Outer, const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl); + +public: + /** + * The basic constructor. + */ + static USGSenseGloveSensorData* NewSenseGloveSensorData(UObject* Outer); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + static USGSenseGloveSensorData* NewSenseGloveSensorData( + UObject* Outer, const TArray>& SensorAngles, + const FQuat& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + static USGSenseGloveSensorData* NewSenseGloveSensorData( + UObject* Outer, const TArray>& SensorAngles, + const FRotator& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + static USGSenseGloveSensorData* NewSenseGloveSensorData( + UObject* Outer, const TArray& SensorAngles, + const FQuat& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + static USGSenseGloveSensorData* NewSenseGloveSensorData( + UObject* Outer, const TArray& SensorAngles, + const FRotator& ImuRotation, int32 ParsedValues, bool bImuParsed); + +public: + /** + * Returns sensor data with no values. + */ + static USGSenseGloveSensorData* Empty(UObject* Outer); + + /** + * Deserialize Sense Glove sensor data from a raw char[] received through IPC. + */ + static USGSenseGloveSensorData* Parse(UObject* Outer, const FString& RawData, const USGSenseGloveInfo* GloveInfo); + + /** + * Deserialize a HandProfile back into usable values. + */ + static USGSenseGloveSensorData* Deserialize(UObject* Outer, const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The basic constructor. + */ + USGSenseGloveSensorData(); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + USGSenseGloveSensorData(const TArray>& SensorAngles, + const FQuat& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + USGSenseGloveSensorData(const TArray>& SensorAngles, + const FRotator& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + USGSenseGloveSensorData(const TArray& SensorAngles, + const FQuat& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + USGSenseGloveSensorData(const TArray& SensorAngles, + const FRotator& ImuRotation, int32 ParsedValues, bool bImuParsed); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGSenseGloveSensorData(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSenseGloveSensorData() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetSenseGloveSensorDataImpl(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGSenseGloveSensorDataImpl& ToSenseGloveSensorDataImpl() const; + +public: + /** + * Glove angles in degrees, sorted by finger, from proximal to distal. + */ + TArray> GetSensorAngles() const; + + /** + * Get the glove angles of a specific finger segment. + */ + TArray GetSensorAngles(ESGFinger Finger) const; + + /** + * Returns all glove angles in a sequence, without splitting them per finger. + */ + TArray GetAngleSequence() const; + + /** + * + */ + FQuat GetImuRotationQ() const; + + /** + * + */ + FRotator GetImuRotation() const; + + /** + * Check how many values have been parsed from the Sensor String. + */ + int32 GetParsedValues() const; + +public: + /** + * Check if the IMU was properly parsed. + */ + bool IsImuParsed() const; + +public: + /** + * Returns true if the values of both data are equal. + */ + bool Equals(const USGSenseGloveSensorData* SenseGloveSensorData) const; + +public: + /** + * Retrieve a simple representation of this sensor data for debugging purposes. + */ + FString ToString() const; + + /** + * Serialize this HandProfile into a string representation. + */ + FString SGSerialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorNormalizer.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorNormalizer.h new file mode 100644 index 0000000..f3e5c11 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveSensorNormalizer.h @@ -0,0 +1,137 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Internal class that acts as a sort of 'in between' handProfile. This class + * converts SG Dk1 Angles into 'normalized data' - between 0 .. 1. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGSenseGloveSensorNormalizer.generated.h" + +class FSGSenseGloveSensorNormalizerImpl; + +/** + * Internal class to hold 'Threshold Commands' for specific fingers. Can be sent to a Device, or used internally. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSenseGloveSensorNormalizer final : public UObject +{ + GENERATED_BODY() + +public: + static USGSenseGloveSensorNormalizer* NewSenseGloveSensorNormalizer( + UObject* Outer, const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl); + +public: + /** + * The default constructor. + */ + static USGSenseGloveSensorNormalizer* NewSenseGloveSensorNormalizer(UObject* Outer); + + /** + * Create a new instance of SenseGloveSensorNormalizer. + */ + static USGSenseGloveSensorNormalizer* NewSenseGloveSensorNormalizer( + UObject* Outer, bool bRightHanded); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGSenseGloveSensorNormalizer(); + + /** + * Creates a new SenseGlove Sensor Normalizer based off the device's sensor angles. + * + * @param bRightHanded + */ + explicit USGSenseGloveSensorNormalizer(bool bRightHanded); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGSenseGloveSensorNormalizer(const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSenseGloveSensorNormalizer() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetSenseGloveSensorNormalizerImpl(const FSGSenseGloveSensorNormalizerImpl& SenseGloveSensorNormalizerImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGSenseGloveSensorNormalizerImpl& ToSenseGloveSensorNormalizerImpl() const; + +public: + /** + * Normalize a finger's flexion, based on the total flexion of the exoskeleton. + * + * @param Finger + * @param SumFlexionAngles + */ + float NormalizeFlexion(int32 Finger, float SumFlexionAngles) const; + + /** + * Normalize a finger's abduction, based on the total abduction of the exoskeleton. + * + * @param Finger + * @param SumAbductionAngles + */ + float NormalizeAbduction(int32 Finger, float SumAbductionAngles) const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveVars.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveVars.h new file mode 100644 index 0000000..0d9085b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSenseGloveVars.h @@ -0,0 +1,121 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains enumerators and classes to aid in Sense Glove Deserialization. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGSenseGloveVars.generated.h" + +class USGSenseGloveInfo; + +/** + * "Database" class containing Sense Glove internal variables. + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGSenseGloveVars +{ + GENERATED_BODY() + +public: + /** + * Retrieve a basic ConstantsString for a Sense Glove of a specific Hardware Version. Used for debugging / unit + * tests. + * + * @returns Returns an empty string when an invalid glove version is requested. + */ + static FString GetStandardConstantsString(const FString& HardwareVersion, float FirmwareVersion, bool bRightHanded); + + /** + * Retrieve an example sensor string of a Sense Glove with a particular hardware- and firmware version. + */ + static FString GetSensorString(const FString& HardwareVersion, float FirmwareVersion); + + /** + * Retrieve the starting positions of a particular Sense Glove. + */ + static TArray GetStartPositions(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the starting rotations of a particular Sense Glove. + */ + static TArray GetStartRotationsQ(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the starting rotations of a particular Sense Glove. + */ + static TArray GetStartRotations(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the glove finger lengths of a particular Sense Glove. + */ + static TArray> GetGloveLengths(const FString& HardwareVersion); + + /** + * Get the number of sensors of a SenseGlove. + */ + static int32 GetSensors(const FString& HardwareVersion); + + /** + * Get the default IMUCorrection for the SenseGlove. + */ + static FQuat GetImuCorrectionQ(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Get the default IMUCorrection for the SenseGlove. + */ + static FRotator GetImuCorrection(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Check all functionality of a SenseGlove. + */ + static TArray GetFunctions(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Generate a custom glove info. + */ + static USGSenseGloveInfo* GenerateGloveModel(UObject* Outer, const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, bool bRightHanded); + + /** + * Generate a custom glove info. + */ + static USGSenseGloveInfo* GenerateGloveModel(UObject* Outer, const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, bool bRightHanded, const FString& CustomId); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSensorNormalization.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSensorNormalization.h new file mode 100644 index 0000000..ec9da38 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGSensorNormalization.h @@ -0,0 +1,189 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A script to normalize any set of floating point values by looking at their + * minimum and maximum values. Used for automagical calibration. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGSensorNormalization.generated.h" + +class FSGSensorNormalizationImpl; + +/** + * Internal class to hold 'Threshold Commands' for specific fingers. Can be sent to a Device, or used internally. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGSensorNormalization final : public UObject +{ + GENERATED_BODY() + +public: + static USGSensorNormalization* NewSensorNormalization( + UObject* Outer, const FSGSensorNormalizationImpl& SensorNormalizationImpl); + +public: + /** + * The default constructor. + */ + static USGSensorNormalization* NewSensorNormalization(UObject* Outer); + + /** + * Create a new instance of SensorNormalization. + */ + static USGSensorNormalization* NewSensorNormalization( + UObject* Outer, const TArray& MovementRanges); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGSensorNormalization(); + + /** + * Create a new instance of SensorNormalization. + */ + explicit USGSensorNormalization(const TArray& MovementRanges); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGSensorNormalization(const FSGSensorNormalizationImpl& SensorNormalizationImpl); + +public: + /** + * The destructor. + */ + virtual ~USGSensorNormalization() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetSensorNormalizationImpl(const FSGSensorNormalizationImpl& SensorNormalizationImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGSensorNormalizationImpl& ToSensorNormalizationImpl() const; + +public: + /** + * If true, the normalization collection is active. If false, we're no longer collecting min / max values. + */ + bool CollectsNormalization() const; + + /** + * + * @param bCollectNormalization + */ + void SetCollectNormalization(bool bCollectNormalization); + +public: + /** + * The amount of items in this collector Useful for FOR loops. + */ + int32 GetLength() const; + + /** + * The amount of values that have moved the appropriate amount. + */ + int32 GetMoveCount() const; + + /** + * Returns true if all sensors are allowed to move. + */ + bool AllSensorsMoving() const; + + /** + * Reset the normalization of values. + */ + void ResetNormalization(); + + /** + * + * @param Value + * @param Index + */ + void UpdateNormalization(float Value, int32 Index); + + /** + * Normalize a value on a specific index, and update Normalization while you're at it. + * + * @param Value + * @param Index + */ + float NormalizeValue(float Value, int32 Index); + + /** + * Update and Normalize a set of values, provided this is the same length. + * + * @param Values + */ + TArray NormalizeValues(const TArray& Values); + + /** + * Returns true if a sensor on this index has moved enough. + * + * @param Index + */ + bool MovedEnough(int32 Index) const; + + /** + * Turn a value from 0 .. 1 back into [minValue ... maxValue] range for the Nova Glove. + * + * @param Value01 + * @param Index + * @param FallbackValue + */ + float Denormalize(float Value01, int32 Index, float FallbackValue = 1.0f) const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGThresholdCommand.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGThresholdCommand.h new file mode 100644 index 0000000..ec2722d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGThresholdCommand.h @@ -0,0 +1,183 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Internal class to hold 'Threshold Commands' for specific fingers. Can be sent + * to a Device, or used internally. + * Threshold Commands tell our device "When your sensor data is higher than this + * threshold, lock FFB. Otherwise, turn it back off". + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGThresholdCommand.generated.h" + +class FSGThresholdCommandImpl; + +/** + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback and sensor module, and active contact + * feedback in the front strap. + */ +UCLASS(BlueprintType) +class SENSEGLOVECORE_API USGThresholdCommand final : public UObject +{ + GENERATED_BODY() + +public: + static USGThresholdCommand* NewThresholdCommand( + UObject* Outer, const FSGThresholdCommandImpl& ThresholdCommandImpl); + +public: + /** + * The default constructor. + */ + static USGThresholdCommand* NewThresholdCommand(UObject* Outer); + + /** + * Create a new instance of ThresholdCommand. + */ + static USGThresholdCommand* NewThresholdCommand( + UObject* Outer, + const TArray& AffectedFingers, const TArray& ThresholdValues); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + USGThresholdCommand(); + + /** + * Create a new instance of ThresholdCommand. + */ + USGThresholdCommand( + const TArray& AffectedFingers, const TArray& ThresholdValues); + +public: + /** + * The cast from underlying type constructor. + */ + explicit USGThresholdCommand(const FSGThresholdCommandImpl& ThresholdCommandImpl); + +public: + /** + * The destructor. + */ + virtual ~USGThresholdCommand() override; + +protected: + /** + * Allows to set the underlying object after construction. + */ + void SetThresholdCommandImpl(const FSGThresholdCommandImpl& ThresholdCommandImpl); + +public: + /** + * The cast to underlying type method. + */ + const FSGThresholdCommandImpl& ToThresholdCommandImpl() const; + +public: + /** + * Retrieve the threshold of a particular finger. + * + * @param Finger + */ + float GetThreshold(int32 Finger) const; + + /** + * Activates the threshold for a finger at a particular value. + * + * @param Finger + * @param ThresholdValue + */ + void SetThreshold(int32 Finger, float ThresholdValue); + + TArray GetThresholds() const; + + /** + * Activates the threshold for a finger at a particular value. + * + * @param AffectedFingers + * @param ThresholdValues + */ + void SetThresholds(const TArray& AffectedFingers, const TArray& ThresholdValues); + + /** + * If true, the threshold on a finger should be active. + * + * @param Finger + */ + bool GetFingerActive(int32 Finger) const; + + TArray GetActiveFingers() const; + + /** + * Deactivates Threshold Mode for a particular finger. + * + * @param Finger + */ + void ClearThreshold(int32 Finger); + + /** + * Disables Threshold mode for all fingers. Clears the ActiveFingers, but keeps the Thresholds value for now, in + * case you want to re-apply them later. + */ + void ClearThresholds(); + +public: + /** + * Returns true if both values are exactly equal. + */ + bool Equals(const USGThresholdCommand* ThresholdCommand) const; + +public: + /** + * Print the contents of this Threshold Command. If inactive, a '-' is shown. + */ + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGTracking.h b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGTracking.h new file mode 100644 index 0000000..19502a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/Public/SGCore/SGTracking.h @@ -0,0 +1,618 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGTypes/SGCoreTypes.h" + +#include "SGTracking.generated.h" + +/** + * + */ +USTRUCT() +struct SENSEGLOVECORE_API FSGTracking +{ + GENERATED_BODY() + +public: + /** + * Knowing a position & rotation in 3D space, calculate a relative location based on offsets. + */ + static void CalculateLocation( + const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation); + + /** + * Knowing a position & rotation in 3D space, calculate a relative location based on offsets. + */ + static void CalculateLocation( + const FVector& TrackedPosition, const FRotator& TrackedRotation, + const FVector& PositionOffset, const FRotator& RotationOffset, + FVector& OutNewPosition, FRotator& OutNewRotation); + + /** + * Positional offset from each finger to the glove origin. + */ + static TArray GetSenseGloveFingerToGlovePositionOrigin(); + + /** + * + */ + static TArray GetSenseGloveFingerToGloveRotationOriginQ(); + + /** + * + */ + static TArray GetSenseGloveFingerToGloveRotationOrigin(); + + /** + * Default position offset from glove origin to wrist location, in cm. + */ + static FVector GetSenseGloveWristPositionOffset(); + + /** + * Default rotation offset from glove origin to wrist location. + */ + static FQuat GetSenseGloveWristRotationOffsetQ(); + + /** + * Default rotation offset from glove origin to wrist location. + */ + static FRotator GetSenseGloveWristRotationOffset(); + + /** + * Get the position and rotation offsets to go from the glove origin to the mounted position. + * + * @remarks Based on CAD. needs to be inverted when going from tracker to glove origin. + */ + static void GetSenseGloveMountOffset(bool bRightHanded, ESGFinger ToFinger, + FVector& OutIPosition, FQuat& OutIRotation); + + /** + * Get the position and rotation offsets to go from the glove origin to the mounted position. + * + * @remarks Based on CAD. needs to be inverted when going from tracker to glove origin. + */ + static void GetSenseGloveMountOffset(bool bRightHanded, ESGFinger ToFinger, + FVector& OutIPosition, FRotator& OutIRotation); + + /** + * Get the offset to get from the TrackedHardware to a SenseGlove mounting location. Combined with Glove-Mount + * offset to get the glove location. + */ + static void GetSenseGloveTrackerMountOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Get the offset to get from the TrackedHardware to a SenseGlove mounting location. Combined with Glove-Mount + * offset to get the glove location. + */ + static void GetSenseGloveTrackerMountOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + static FVector GetSenseGloveViveToAttachPosition(); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + static FQuat GetSenseGloveViveToAttachRotationQ(); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + static FRotator GetSenseGloveViveToAttachRotation(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + static FVector GetSenseGloveOculusTouchToAttachPosition(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + static FQuat GetSenseGloveOculusTouchToAttachRotationQ(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + static FRotator GetSenseGloveOculusTouchToAttachRotation(); + + /** + * Positional offset between Nova Glove Origin and Wrist. + */ + static FVector GetNovaToWristPositionOffset(); + + /** + * Rotational offset between Nova Glove Origin and Wrist. + */ + static FQuat GetNovaToWristRotationOffsetQ(); + + /** + * Rotational offset between Nova Glove Origin and Wrist. + */ + static FRotator GetNovaToWristRotationOffset(); + + /** + * + */ + static FVector GetRightNovaViveToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaViveToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaViveToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaViveToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaViveToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaViveToAttachRotation(); + + /** + * + */ + static FVector GetRightNovaQuest2ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaQuest2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaQuest2ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaQuest2ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaQuest2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaQuest2ToAttachRotation(); + + /** + * @remarks Left is a mirror, so we only need R pos. + */ + static FVector GetRightNovaPico2ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaPico2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaPico2ToAttachRotation(); + + /** + * + */ + static FQuat GetLeftNovaPico2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaPico2ToAttachRotation(); + + /** + * + */ + static FVector GetRightNovaQuestProToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaQuestProToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaQuestProToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaQuestProToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaQuestProToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaQuestProToAttachRotation(); + + /** + * + */ + static FVector GetRightNovaViveFocus3ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaViveFocus3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaViveFocus3ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaViveFocus3ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaViveFocus3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaViveFocus3ToAttachRotation(); + + /** + * + */ + static FVector GetRightNovaQuest3ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNovaQuest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNovaQuest3ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNovaQuest3ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNovaQuest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNovaQuest3ToAttachRotation(); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + static void GetNovaGloveWristOffset(bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + static void GetNovaGloveWristOffset(bool bRightHanded, FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + * + * @param Hardware + * @param bRightHanded + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNovaGloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + * + * @param Hardware + * @param bRightHanded + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNovaGloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * + */ + static FVector GetRightNova2ToWristPositionOffset(); + + /** + * + */ + static FQuat GetRightNova2ToWristRotationOffsetQ(); + + /** + * + */ + static FRotator GetRightNova2ToWristRotationOffset(); + + /** + * + */ + + static FVector GetLeftNova2ToWristPositionOffset(); + + /** + * + */ + static FQuat GetLeftNova2ToWristRotationOffsetQ(); + + /** + * + */ + static FRotator GetLeftNova2ToWristRotationOffset(); + + /** + * + */ + static FVector GetRightNova2Quest2ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2Quest2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2Quest2ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2Quest2ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2Quest2ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2Quest2ToAttachRotation(); + + /** + * + */ + static FVector GetRightNova2QuestProToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2QuestProToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2QuestProToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2QuestProToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2QuestProToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2QuestProToAttachRotation(); + + /** + * + */ + static FVector GetRightNova2ViveTrackerToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2ViveTrackerToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2ViveTrackerToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2ViveTrackerToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2ViveTrackerToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2ViveTrackerToAttachRotation(); + + + /** + * + */ + static FVector GetRightNova2ViveWristTrackerToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2ViveWristTrackerToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2ViveWristTrackerToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2ViveWristTrackerToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2ViveWristTrackerToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2ViveWristTrackerToAttachRotation(); + + /** + * + */ + static FVector GetRightNova2Quest3ToAttachPosition(); + + /** + * + */ + static FQuat GetRightNova2Quest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetRightNova2Quest3ToAttachRotation(); + + /** + * + */ + static FVector GetLeftNova2Quest3ToAttachPosition(); + + /** + * + */ + static FQuat GetLeftNova2Quest3ToAttachRotationQ(); + + /** + * + */ + static FRotator GetLeftNova2Quest3ToAttachRotation(); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + * + * @param bRightHanded + * @param HardwareVersion + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNova2GloveWristOffset(bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + * + * @param bRightHanded + * @param HardwareVersion + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNova2GloveWristOffset(bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + * + * @param Hardware + * @param bRightHanded + * @param HardwareVersion + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNova2GloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + * + * @param Hardware + * @param bRightHanded + * @param HardwareVersion + * @param OutPositionOffset + * @param OutRotationOffset + */ + static void GetNova2GloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * + */ + static FString ToString(ESGPositionalTrackingHardware Hardware); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCore/SenseGloveCore.Build.cs b/Plugins/SenseGlove/Source/SenseGloveCore/SenseGloveCore.Build.cs new file mode 100644 index 0000000..cdedf40 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCore/SenseGloveCore.Build.cs @@ -0,0 +1,74 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveCore : ModuleRules +{ + public SenseGloveCore(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveAndroid", + "SenseGloveCoreImpl", + "SenseGloveLog", + "SenseGloveTypes", + "SenseGloveUtils", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + "SenseGloveInterop", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGAnatomyImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGAnatomyImpl.cpp new file mode 100644 index 0000000..38157db --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGAnatomyImpl.cpp @@ -0,0 +1,134 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGAnatomyImpl.h" + +#include "SGBuildHacks/SGInclude_Core_Anatomy.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGAngles.h" +#include "SGUtils/SGArrayUtils.h" + +float FSGAnatomyImpl::GetTotalFingerFlexion() +{ + return FAnatomyType::GetTotalFingerFlexion(); +} + +float FSGAnatomyImpl::GetTotalFingerExtension() +{ + return FAnatomyType::GetTotalFingerExtension(); +} + +float FSGAnatomyImpl::GetTotalThumbFlexion() +{ + return FAnatomyType::GetTotalThumbFlexion(); +} + +float FSGAnatomyImpl::GetTotalThumbExtension() +{ + return FAnatomyType::GetTotalThumbExtension(); +} + +float FSGAnatomyImpl::GetFingerJointLimit( + const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax) +{ + return FSGAngles::TransformToUnreal( + Movement, FAnatomyType::GetFingerJointLimit(bRightHanded, Joint, Movement, bMax)); +} + +float FSGAnatomyImpl::GetThumbJointLimit( + const bool bRightHanded, const int32 Joint, const int32 Movement, const bool bMax) +{ + return FSGAngles::TransformToUnreal( + Movement, FAnatomyType::GetThumbJointLimit(bRightHanded, Joint, Movement, bMax)); +} + +float FSGAnatomyImpl::ClampJointAngle( + const float Value, const int32 Finger, const bool bRightHand, const int32 Joint, const int32 Movement) +{ + return FAnatomyType::ClampJointAngle(Value, Finger, bRightHand, Joint, Movement); +} + +float FSGAnatomyImpl::NormalizeFingerFlexion(const float FlexionInDegrees) +{ + return FSGAngles::TransformToUnreal( + FAnatomyType::NormalizeFingerFlexion( + FSGAngles::TransformToSenseGlove( + FlexionInDegrees))); +} + +float FSGAnatomyImpl::NormalizeThumbFlexion(const float FlexionInDegrees) +{ + return FSGAngles::TransformToUnreal( + FAnatomyType::NormalizeThumbFlexion( + FSGAngles::TransformToSenseGlove( + FlexionInDegrees))); +} + +TArray> FSGAnatomyImpl::GetDefaultHandAngles(const bool bRightHanded) +{ + const TArray> DefaultHandAngles{ + FSGArrayUtils::FromSenseGloveAngles( + FAnatomyType::GetDefaultHandAngles(bRightHanded)) + }; + return DefaultHandAngles; +} + +TArray> FSGAnatomyImpl::GetFlatHandAngles(const bool bRightHanded) +{ + const TArray> FlatHandAngles{ + FSGArrayUtils::FromSenseGloveAngles( + FAnatomyType::GetFlatHandAngles(bRightHanded)) + }; + return FlatHandAngles; +} + +TArray> FSGAnatomyImpl::GetThumbsUpHandAngles(const bool bRightHanded) +{ + const TArray> ThumbsUpHandAngles{ + FSGArrayUtils::FromSenseGloveAngles( + FAnatomyType::GetThumbsUpHandAngles(bRightHanded)) + }; + return ThumbsUpHandAngles; +} + +TArray> FSGAnatomyImpl::GetFistHandAngles(const bool bRightHanded) +{ + const TArray> FistHandAngles{ + FSGArrayUtils::FromSenseGloveAngles( + FAnatomyType::GetFistHandAngles(bRightHanded)) + }; + return FistHandAngles; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBasicHandModelImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBasicHandModelImpl.cpp new file mode 100644 index 0000000..460f60b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBasicHandModelImpl.cpp @@ -0,0 +1,356 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGBasicHandModelImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" +#include "SGUtils/SGUnits.h" + +struct FSGBasicHandModelImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FBasicHandModelType BasicHandModel; + + /************************ + * Owner object + ************************/ + + FSGBasicHandModelImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGBasicHandModelImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGBasicHandModelImpl FSGBasicHandModelImpl::Default(const bool bRightHanded) +{ + return FSGBasicHandModelImpl(FSGBasicHandModelImpl::FBasicHandModelType::Default(bRightHanded)); +} + +FSGBasicHandModelImpl FSGBasicHandModelImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGBasicHandModelImpl BasicHandModel(FBasicHandModelType::Deserialize(MoveTemp(Serialized))); + return BasicHandModel; +} + +const TArray>& FSGBasicHandModelImpl::GetBaseFingerLengths() +{ + static const TArray> BaseFingerLengths{ + FSGArrayUtils::FromMillimeters( + FSGBasicHandModelImpl::FBasicHandModelType::GetBaseFingerLengths()) + }; + return BaseFingerLengths; +} + +const TArray& FSGBasicHandModelImpl::GetBaseJointPositions() +{ + static const TArray BaseJointPositions{ + FSGArrayUtils::FromMillimeters( + FBasicHandModelType::GetBaseJointPositions()) + }; + return BaseJointPositions; +} + +const TArray& FSGBasicHandModelImpl::GetBaseJointAngles() +{ + static const TArray BaseJointAngles{ + FSGArrayUtils::FromStdVector( + FBasicHandModelType::GetBaseJointAngles()) + }; + return BaseJointAngles; +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> LengthsVector{ + FSGArrayUtils::ToMillimeters(Lengths) + }; + + std::vector StartPositionsVector{ + FSGArrayUtils::ToMillimeters(StartPositions) + }; + + Pimpl->BasicHandModel = FBasicHandModelType(bRightHanded, MoveTemp(LengthsVector), MoveTemp(StartPositionsVector)); +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl(const bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> LengthsVector{ + FSGArrayUtils::ToMillimeters(Lengths) + }; + + std::vector StartPositionsVector{ + FSGArrayUtils::ToMillimeters(StartPositions) + }; + + std::vector StartRotationsVector{ + FSGArrayUtils::ToStdVector(StartRotations) + }; + + Pimpl->BasicHandModel = FBasicHandModelType(bRightHanded, MoveTemp(LengthsVector), + MoveTemp(StartPositionsVector), MoveTemp(StartRotationsVector)); +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl(const FBasicHandModelType& BasicHandModel) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->BasicHandModel = BasicHandModel; +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl(const FSGBasicHandModelImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGBasicHandModelImpl::FSGBasicHandModelImpl(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT = default; + +FSGBasicHandModelImpl::~FSGBasicHandModelImpl() = default; + +FSGBasicHandModelImpl& FSGBasicHandModelImpl::operator=(const FSGBasicHandModelImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGBasicHandModelImpl& FSGBasicHandModelImpl::operator=(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGBasicHandModelImpl::FBasicHandModelType& FSGBasicHandModelImpl::ToBasicHandModel() const +{ + return Pimpl->BasicHandModel; +} + +bool FSGBasicHandModelImpl::IsRight() const +{ + return Pimpl->BasicHandModel.IsRight(); +} + +TArray> FSGBasicHandModelImpl::GetFingerLengths() const +{ + const TArray> FingerLengths{ + FSGArrayUtils::FromMillimeters(Pimpl->BasicHandModel.GetFingerLengths()) + }; + return FingerLengths; +} + +TArray FSGBasicHandModelImpl::GetFingerLengths(const ESGFinger Finger) const +{ + const TArray FingerLengths{ + FSGArrayUtils::FromMillimeters(Pimpl->BasicHandModel.GetFingerLengths(FSGCoreEnumCast::ToEFinger(Finger))) + }; + return FingerLengths; +} + +void FSGBasicHandModelImpl::SetFingerLengths(const ESGFinger Finger, const TArray& Lengths) +{ + std::vector LengthsVector{ + FSGArrayUtils::ToMillimeters(Lengths) + }; + Pimpl->BasicHandModel.SetFingerLengths(FSGCoreEnumCast::ToEFinger(Finger), MoveTemp(LengthsVector)); +} + +void FSGBasicHandModelImpl::SetFingerLengths(const uint8 Finger, const TArray& Lengths) +{ + std::vector LengthsVector{ + FSGArrayUtils::ToMillimeters(Lengths) + }; + Pimpl->BasicHandModel.SetFingerLengths(Finger, MoveTemp(LengthsVector)); +} + +TArray> FSGBasicHandModelImpl::GetFingerRatios() const +{ + const TArray> FingerRatios{ + FSGArrayUtils::FromStdVector(Pimpl->BasicHandModel.GetFingerRatios()) + }; + return FingerRatios; +} + +TArray FSGBasicHandModelImpl::GetFingerRatios(const ESGFinger Finger) const +{ + const TArray FingerRatios{ + FSGArrayUtils::FromStdVector(Pimpl->BasicHandModel.GetFingerRatios(FSGCoreEnumCast::ToEFinger(Finger))) + }; + return FingerRatios; +} + +TArray FSGBasicHandModelImpl::GetStartJointPositions() const +{ + const TArray StartJointPositions{ + FSGArrayUtils::FromMillimeters( + Pimpl->BasicHandModel.GetStartJointPositions()) + }; + return StartJointPositions; +} + +void FSGBasicHandModelImpl::SetStartJointPosition(const ESGFinger Finger, const FVector& Position) +{ + Pimpl->BasicHandModel.SetStartJointPosition( + FSGCoreEnumCast::ToEFinger(Finger), + FSGUnits::CentimetersToMillimeters(Position)); +} + +void FSGBasicHandModelImpl::SetStartJointPosition(const uint8 Finger, const FVector& Position) +{ + Pimpl->BasicHandModel.SetStartJointPosition( + Finger, + FSGUnits::CentimetersToMillimeters(Position)); +} + +TArray FSGBasicHandModelImpl::GetStartJointRotations() const +{ + const TArray StartJointRotations{ + FSGArrayUtils::FromStdVector< + FSGQuatImpl::FQuatType, FQuat, FSGQuatImpl, &FSGQuatImpl::ToFQuat>( + Pimpl->BasicHandModel.GetStartJointRotations()) + }; + return StartJointRotations; +} + +FVector FSGBasicHandModelImpl::GetJointPosition(const ESGFinger Finger) const +{ + return FSGUnits::MillimetersToCentimeters( + Pimpl->BasicHandModel.GetJointPosition(FSGCoreEnumCast::ToEFinger(Finger))); +} + +void FSGBasicHandModelImpl::SetJointPosition(const FVector& NewPosition, const ESGFinger Finger) +{ + Pimpl->BasicHandModel.SetJointPosition( + FSGUnits::CentimetersToMillimeters(NewPosition), + FSGCoreEnumCast::ToEFinger(Finger)); +} + +FQuat FSGBasicHandModelImpl::GetJointRotation(const ESGFinger Finger) const +{ + const FSGQuatImpl Rotation(Pimpl->BasicHandModel.GetJointRotation(FSGCoreEnumCast::ToEFinger(Finger))); + return Rotation.ToFQuat(); +} + +void FSGBasicHandModelImpl::SetJointRotation(const FQuat& NewRotation, const ESGFinger Finger) +{ + Pimpl->BasicHandModel.SetJointRotation(FSGQuatImpl(NewRotation).ToQuat(), FSGCoreEnumCast::ToEFinger(Finger)); +} + +TArray FSGBasicHandModelImpl::GetTotalLengths() const +{ + const TArray TotalLengths{ + FSGArrayUtils::FromMillimeters(Pimpl->BasicHandModel.GetTotalLengths()) + }; + return TotalLengths; +} + +float FSGBasicHandModelImpl::GetTotalLength(const ESGFinger Finger) const +{ + return FSGUnits::MillimetersToCentimeters( + Pimpl->BasicHandModel.GetTotalLength(FSGCoreEnumCast::ToEFinger(Finger))); +} + +TArray FSGBasicHandModelImpl::Get3DLengths(const ESGFinger Finger) const +{ + const TArray Lengths{ + FSGArrayUtils::FromMillimeters( + Pimpl->BasicHandModel.Get3DLengths(FSGCoreEnumCast::ToEFinger(Finger))) + }; + return Lengths; +} + +bool FSGBasicHandModelImpl::Equals(const FSGBasicHandModelImpl& BasicHandModelImpl) const +{ + return Pimpl->BasicHandModel.Equals(BasicHandModelImpl.ToBasicHandModel()); +} + +FString FSGBasicHandModelImpl::ToString() const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->BasicHandModel.ToString().c_str())); + return String; +} + +FString FSGBasicHandModelImpl::ToString(const bool bLengthsOnly) const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->BasicHandModel.ToString(bLengthsOnly).c_str())); + return String; +} + +FString FSGBasicHandModelImpl::Serialize() const +{ + const FString Serialized(UTF8_TO_TCHAR(Pimpl->BasicHandModel.Serialize().c_str())); + return Serialized; +} + +FSGBasicHandModelImpl::FImpl::FImpl(FSGBasicHandModelImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGBasicHandModelImpl::FImpl::~FImpl() = default; + +void FSGBasicHandModelImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBetaDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBetaDeviceImpl.cpp new file mode 100644 index 0000000..f547657 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGBetaDeviceImpl.cpp @@ -0,0 +1,211 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGBetaDeviceImpl.h" + +#include "Containers/StringConv.h" +#include "Misc/AssertionMacros.h" + +#include "SGBuildHacks/SGInclude_Core_BetaDevice.h" +#include "SGBuildHacks/SGInclude_Core_SGDevice.h" +#include "SGCoreImpl/SGCoreEnumCast.h" + +struct FSGBetaDeviceImpl::FImpl +{ + /************************ + * Owner object + ************************/ + + FSGBetaDeviceImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGBetaDeviceImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TSharedRef FSGBetaDeviceImpl::Parse(const FString& String) +{ + FSGDevicePtrType SGDevicePtr{FBetaDeviceType::Parse(TCHAR_TO_UTF8(*String))}; + ensureAlwaysMsgf(SGDevicePtr, TEXT("Invalid SGDevice!")); + const TSharedRef BetaDeviceImpl{ + MakeShared(std::dynamic_pointer_cast(MoveTemp(SGDevicePtr))) + }; + return BetaDeviceImpl; +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl() + : FSGDeviceImpl(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion) + : FSGDeviceImpl(std::make_shared( + TCHAR_TO_UTF8(*ConstantsString), + TCHAR_TO_UTF8(*DeviceId), + TCHAR_TO_UTF8(*HardwareVersion), + FirmwareVersion, + SubFirmwareVersion)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FBetaDeviceType BetaDevice) + : FSGDeviceImpl(std::make_shared(BetaDevice)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FBetaDevicePtrType BetaDevice) + : FSGDeviceImpl(BetaDevice), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl(const FSGBetaDeviceImpl& Rhs) + : FSGDeviceImpl(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGBetaDeviceImpl::FSGBetaDeviceImpl(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT = default; + +FSGBetaDeviceImpl::~FSGBetaDeviceImpl() = default; + +FSGBetaDeviceImpl& FSGBetaDeviceImpl::operator=(const FSGBetaDeviceImpl& Rhs) +{ + FSGDeviceImpl::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGBetaDeviceImpl& FSGBetaDeviceImpl::operator=(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT = default; + +FSGBetaDeviceImpl::FBetaDeviceType FSGBetaDeviceImpl::ToBetaDevice() const +{ + return *ToBetaDevicePtr(); +} + +FSGBetaDeviceImpl::FBetaDevicePtrType FSGBetaDeviceImpl::ToBetaDevicePtr() const +{ + return std::dynamic_pointer_cast(ToSGDevicePtr()); +} + +FSGBetaDeviceImpl::FBetaDevicePtrType FSGBetaDeviceImpl::ToBetaDevicePtrChecked() const +{ + FBetaDevicePtrType BetaDevice = std::dynamic_pointer_cast(ToSGDevicePtr()); + ensureAlwaysMsgf(BetaDevice.get(), TEXT("Invalid BetaDevice")); + return BetaDevice; +} + +ESGDeviceType FSGBetaDeviceImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToBetaDevicePtrChecked()->GetDeviceType()); +} + +FString FSGBetaDeviceImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToBetaDevicePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGBetaDeviceImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToBetaDevicePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGBetaDeviceImpl::GetFirmwareVersion() const +{ + return ToBetaDevicePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGBetaDeviceImpl::GetSubFirmwareVersion() const +{ + return ToBetaDevicePtrChecked()->GetSubFirmwareVersion(); +} + +FString FSGBetaDeviceImpl::GetConstantsString() const +{ + const FString String{UTF8_TO_TCHAR(ToBetaDevicePtrChecked()->GetConstantsString().c_str())}; + return String; +} + +FString FSGBetaDeviceImpl::GetSensorData() const +{ + const FString Data{UTF8_TO_TCHAR(ToBetaDevicePtrChecked()->GetSensorData().c_str())}; + return Data; +} + +FString FSGBetaDeviceImpl::GetLastCommand() const +{ + const FString Command{UTF8_TO_TCHAR(ToBetaDevicePtrChecked()->GetLastCommand().c_str())}; + return Command; +} + +bool FSGBetaDeviceImpl::SendHaptics(const FString& Command, const int32 Channel) const +{ + return ToBetaDevicePtrChecked()->SendHaptics(TCHAR_TO_UTF8(*Command), Channel); +} + +FString FSGBetaDeviceImpl::ToString() const +{ + return FSGDeviceImpl::ToString(); +} + +FSGBetaDeviceImpl::FImpl::FImpl(FSGBetaDeviceImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGBetaDeviceImpl::FImpl::~FImpl() = default; + +void FSGBetaDeviceImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp new file mode 100644 index 0000000..93ef801 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.cpp @@ -0,0 +1,796 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGCoreEnumCast.h" + +#include "Misc/AssertionMacros.h" + +FSGCoreEnumCast::FEBackendType FSGCoreEnumCast::ToEBackendType(const ESGBackendType Enum) +{ + switch (Enum) + { + case ESGBackendType::SharedMemory: + return FEBackendType::SharedMemory; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEBackendType::SharedMemory; +} + +ESGBackendType FSGCoreEnumCast::ToESGBackendType(const FEBackendType Enum) +{ + switch (Enum) + { + case FEBackendType::SharedMemory: + return ESGBackendType::SharedMemory; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGBackendType::None; +} + +FSGCoreEnumCast::FEConnectionType FSGCoreEnumCast::ToEConnectionType(const ESGConnectionType Enum) +{ + switch (Enum) + { + case ESGConnectionType::Unknown: + return FEConnectionType::Unknown; + case ESGConnectionType::Serial: + return FEConnectionType::Serial; + case ESGConnectionType::BluetoothSerial: + return FEConnectionType::BluetoothSerial; + case ESGConnectionType::BluetoothAndroid: + return FEConnectionType::BluetoothAndroid; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEConnectionType::Unknown; +} + +ESGConnectionType FSGCoreEnumCast::ToESGConnectionType(const FEConnectionType Enum) +{ + switch (Enum) + { + case FEConnectionType::Unknown: + return ESGConnectionType::Unknown; + case FEConnectionType::Serial: + return ESGConnectionType::Serial; + case FEConnectionType::BluetoothSerial: + return ESGConnectionType::BluetoothSerial; + case FEConnectionType::BluetoothAndroid: + return ESGConnectionType::BluetoothAndroid; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGConnectionType::None; +} + +FSGCoreEnumCast::FEDeviceType FSGCoreEnumCast::ToEDeviceType(const ESGDeviceType Enum) +{ + switch (Enum) + { + case ESGDeviceType::Unknown: + return FEDeviceType::Unknown; + case ESGDeviceType::BetaDevice: + return FEDeviceType::BetaDevice; + case ESGDeviceType::SenseGlove: + return FEDeviceType::SenseGlove; + case ESGDeviceType::Nova: + return FEDeviceType::Nova; + case ESGDeviceType::Nova2: + return FEDeviceType::Nova2; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEDeviceType::Unknown; +} + +ESGDeviceType FSGCoreEnumCast::ToESGDeviceType(const FEDeviceType Enum) +{ + switch (Enum) + { + case FEDeviceType::Unknown: + return ESGDeviceType::Unknown; + case FEDeviceType::BetaDevice: + return ESGDeviceType::BetaDevice; + case FEDeviceType::SenseGlove: + return ESGDeviceType::SenseGlove; + case FEDeviceType::Nova: + return ESGDeviceType::Nova; + case FEDeviceType::Nova2: + return ESGDeviceType::Nova2; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGDeviceType::None; +} + +FSGCoreEnumCast::FEFingerType FSGCoreEnumCast::ToEFinger(const ESGFinger Enum) +{ + switch (Enum) + { + case ESGFinger::Thumb: + return FEFingerType::Thumb; + case ESGFinger::Index: + return FEFingerType::Index; + case ESGFinger::Middle: + return FEFingerType::Middle; + case ESGFinger::Ring: + return FEFingerType::Ring; + case ESGFinger::Pinky: + return FEFingerType::Pinky; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEFingerType::Thumb; +} + +ESGFinger FSGCoreEnumCast::ToESGFinger(const FSGCoreEnumCast::FEFingerType Enum) +{ + switch (Enum) + { + case FEFingerType::Thumb: + return ESGFinger::Thumb; + case FEFingerType::Index: + return ESGFinger::Index; + case FEFingerType::Middle: + return ESGFinger::Middle; + case FEFingerType::Ring: + return ESGFinger::Ring; + case FEFingerType::Pinky: + return ESGFinger::Pinky; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGFinger::None; +} + +FSGCoreEnumCast::FEFingerMovementType FSGCoreEnumCast::ToEFingerMovement(const ESGFingerMovement Enum) +{ + switch (Enum) + { + case ESGFingerMovement::McpFlexion: + return FEFingerMovementType::McpFlexion; + case ESGFingerMovement::McpAbduction: + return FEFingerMovementType::McpAbduction; + case ESGFingerMovement::PipFlexion: + return FEFingerMovementType::PipFlexion; + case ESGFingerMovement::DipFlexion: + return FEFingerMovementType::DipFlexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEFingerMovementType::McpFlexion; +} + +ESGFingerMovement FSGCoreEnumCast::ToESGFingerMovement(const FEFingerMovementType Enum) +{ + switch (Enum) + { + case FEFingerMovementType::McpFlexion: + return ESGFingerMovement::McpFlexion; + case FEFingerMovementType::McpAbduction: + return ESGFingerMovement::McpAbduction; + case FEFingerMovementType::PipFlexion: + return ESGFingerMovement::PipFlexion; + case FEFingerMovementType::DipFlexion: + return ESGFingerMovement::DipFlexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGFingerMovement::None; +} + +FSGCoreEnumCast::FEHapticChannelType FSGCoreEnumCast::ToEHapticChannelType(const ESGHapticChannelType Enum) +{ + switch (Enum) + { + case ESGHapticChannelType::StreamingChannel: + return FEHapticChannelType::StreamingChannel; + case ESGHapticChannelType::FireAndForgetChannel: + return FEHapticChannelType::FireAndForgetChannel; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEHapticChannelType::StreamingChannel; +} + +ESGHapticChannelType FSGCoreEnumCast::ToESGHapticChannelType(const FEHapticChannelType Enum) +{ + switch (Enum) + { + case FEHapticChannelType::StreamingChannel: + return ESGHapticChannelType::StreamingChannel; + case FEHapticChannelType::FireAndForgetChannel: + return ESGHapticChannelType::FireAndForgetChannel; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGHapticChannelType::None; +} + +FSGCoreEnumCast::FEHapticGloveCalibrationStateType FSGCoreEnumCast::ToEHapticGloveCalibrationState( + const ESGHapticGloveCalibrationState Enum) +{ + switch (Enum) + { + case ESGHapticGloveCalibrationState::Unknown: + return FEHapticGloveCalibrationStateType::Unknown; + case ESGHapticGloveCalibrationState::MoveFingers: + return FEHapticGloveCalibrationStateType::MoveFingers; + case ESGHapticGloveCalibrationState::AllSensorsMoved: + return FEHapticGloveCalibrationStateType::AllSensorsMoved; + case ESGHapticGloveCalibrationState::CalibrationLocked: + return FEHapticGloveCalibrationStateType::CalibrationLocked; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEHapticGloveCalibrationStateType::Unknown; +} + +ESGHapticGloveCalibrationState FSGCoreEnumCast::ToESGHapticGloveCalibrationState( + const FEHapticGloveCalibrationStateType Enum) +{ + switch (Enum) + { + case FEHapticGloveCalibrationStateType::Unknown: + return ESGHapticGloveCalibrationState::Unknown; + case FEHapticGloveCalibrationStateType::MoveFingers: + return ESGHapticGloveCalibrationState::MoveFingers; + case FEHapticGloveCalibrationStateType::AllSensorsMoved: + return ESGHapticGloveCalibrationState::AllSensorsMoved; + case FEHapticGloveCalibrationStateType::CalibrationLocked: + return ESGHapticGloveCalibrationState::CalibrationLocked; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGHapticGloveCalibrationState::None; +} + +FSGCoreEnumCast::FEHapticLocationType FSGCoreEnumCast::ToEHapticLocation(const ESGHapticLocation Enum) +{ + switch (Enum) + { + case ESGHapticLocation::Unknown: + return FEHapticLocationType::Unknown; + case ESGHapticLocation::ThumbTip: + return FEHapticLocationType::ThumbTip; + case ESGHapticLocation::IndexTip: + return FEHapticLocationType::IndexTip; + case ESGHapticLocation::MiddleTip: + return FEHapticLocationType::MiddleTip; + case ESGHapticLocation::RingTip: + return FEHapticLocationType::RingTip; + case ESGHapticLocation::PinkyTip: + return FEHapticLocationType::PinkyTip; + case ESGHapticLocation::PalmIndexSide: + return FEHapticLocationType::PalmIndexSide; + case ESGHapticLocation::PalmPinkySide: + return FEHapticLocationType::PalmPinkySide; + case ESGHapticLocation::WholeHand: + return FEHapticLocationType::WholeHand; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEHapticLocationType::Unknown; +} + +ESGHapticLocation FSGCoreEnumCast::ToESGHapticLocation(const FEHapticLocationType Enum) +{ + switch (Enum) + { + case FEHapticLocationType::Unknown: + return ESGHapticLocation::Unknown; + case FEHapticLocationType::ThumbTip: + return ESGHapticLocation::ThumbTip; + case FEHapticLocationType::IndexTip: + return ESGHapticLocation::IndexTip; + case FEHapticLocationType::MiddleTip: + return ESGHapticLocation::MiddleTip; + case FEHapticLocationType::RingTip: + return ESGHapticLocation::RingTip; + case FEHapticLocationType::PinkyTip: + return ESGHapticLocation::PinkyTip; + case FEHapticLocationType::PalmIndexSide: + return ESGHapticLocation::PalmIndexSide; + case FEHapticLocationType::PalmPinkySide: + return ESGHapticLocation::PalmPinkySide; + case FEHapticLocationType::WholeHand: + return ESGHapticLocation::WholeHand; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGHapticLocation::None; +} + +FSGCoreEnumCast::FENormalizationStateType FSGCoreEnumCast::ToENormalizationState(const ESGNormalizationState Enum) +{ + switch (Enum) + { + case ESGNormalizationState::Unknown: + return FENormalizationStateType::Unknown; + case ESGNormalizationState::SendingRawData: + return FENormalizationStateType::SendingRawData; + case ESGNormalizationState::Normalizing_MoveFingers: + return FENormalizationStateType::Normalizing_MoveFingers; + case ESGNormalizationState::Normalizing_AwaitConfirm: + return FENormalizationStateType::Normalizing_AwaitConfirm; + case ESGNormalizationState::NormalizationFinished: + return FENormalizationStateType::NormalizationFinished; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FENormalizationStateType::Unknown; +} + +ESGNormalizationState FSGCoreEnumCast::ToESGNormalizationState(const FENormalizationStateType Enum) +{ + switch (Enum) + { + case FENormalizationStateType::Unknown: + return ESGNormalizationState::Unknown; + case FENormalizationStateType::SendingRawData: + return ESGNormalizationState::SendingRawData; + case FENormalizationStateType::Normalizing_MoveFingers: + return ESGNormalizationState::Normalizing_MoveFingers; + case FENormalizationStateType::Normalizing_AwaitConfirm: + return ESGNormalizationState::Normalizing_AwaitConfirm; + case FENormalizationStateType::NormalizationFinished: + return ESGNormalizationState::NormalizationFinished; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGNormalizationState::None; +} + +FSGCoreEnumCast::FEPositionalTrackingHardwareType FSGCoreEnumCast::ToEPositionalTrackingHardware( + const ESGPositionalTrackingHardware Enum) +{ + switch (Enum) + { + case ESGPositionalTrackingHardware::Custom: + return FEPositionalTrackingHardwareType::Custom; + case ESGPositionalTrackingHardware::ViveTracker: + return FEPositionalTrackingHardwareType::ViveTracker; + case ESGPositionalTrackingHardware::Quest2Controller: + return FEPositionalTrackingHardwareType::Quest2Controller; + case ESGPositionalTrackingHardware::ViveFocus3WristTracker: + return FEPositionalTrackingHardwareType::ViveFocus3WristTracker; + case ESGPositionalTrackingHardware::QuestProController: + return FEPositionalTrackingHardwareType::QuestProController; + case ESGPositionalTrackingHardware::Quest3Controller: + return FEPositionalTrackingHardwareType::Quest3Controller; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEPositionalTrackingHardwareType::Custom; +} + +ESGPositionalTrackingHardware FSGCoreEnumCast::ToESGPositionalTrackingHardware( + const FEPositionalTrackingHardwareType Enum) +{ + switch (Enum) + { + case FEPositionalTrackingHardwareType::Custom: + return ESGPositionalTrackingHardware::Custom; + case FEPositionalTrackingHardwareType::ViveTracker: + return ESGPositionalTrackingHardware::ViveTracker; + case FEPositionalTrackingHardwareType::Quest2Controller: + return ESGPositionalTrackingHardware::Quest2Controller; + case FEPositionalTrackingHardwareType::ViveFocus3WristTracker: + return ESGPositionalTrackingHardware::ViveFocus3WristTracker; + case FEPositionalTrackingHardwareType::QuestProController: + return ESGPositionalTrackingHardware::QuestProController; + case FEPositionalTrackingHardwareType::Quest3Controller: + return ESGPositionalTrackingHardware::Quest3Controller; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGPositionalTrackingHardware::None; +} + +FSGCoreEnumCast::FESenseGloveThumperCommandType FSGCoreEnumCast::ToESenseGloveThumperCommand( + const ESGSenseGloveThumperCommand Enum) +{ + switch (Enum) + { + case ESGSenseGloveThumperCommand::None: + return FESenseGloveThumperCommandType::None; + case ESGSenseGloveThumperCommand::TurnOff: + return FESenseGloveThumperCommandType::TurnOff; + case ESGSenseGloveThumperCommand::CueGameOver: + return FESenseGloveThumperCommandType::CueGameOver; + case ESGSenseGloveThumperCommand::ButtonDouble100: + return FESenseGloveThumperCommandType::ButtonDouble100; + case ESGSenseGloveThumperCommand::ButtonDouble60: + return FESenseGloveThumperCommandType::ButtonDouble60; + case ESGSenseGloveThumperCommand::ImpactThump100: + return FESenseGloveThumperCommandType::ImpactThump100; + case ESGSenseGloveThumperCommand::ImpactThump30: + return FESenseGloveThumperCommandType::ImpactThump30; + case ESGSenseGloveThumperCommand::ImpactThump10: + return FESenseGloveThumperCommandType::ImpactThump10; + case ESGSenseGloveThumperCommand::ObjectGrasp100: + return FESenseGloveThumperCommandType::ObjectGrasp100; + case ESGSenseGloveThumperCommand::ObjectGrasp60: + return FESenseGloveThumperCommandType::ObjectGrasp60; + case ESGSenseGloveThumperCommand::ObjectGrasp30: + return FESenseGloveThumperCommandType::ObjectGrasp30; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FESenseGloveThumperCommandType::None; +} + +ESGSenseGloveThumperCommand FSGCoreEnumCast::ToESGSenseGloveThumperCommand(const FESenseGloveThumperCommandType Enum) +{ + switch (Enum) + { + case FESenseGloveThumperCommandType::None: + return ESGSenseGloveThumperCommand::None; + case FESenseGloveThumperCommandType::TurnOff: + return ESGSenseGloveThumperCommand::TurnOff; + case FESenseGloveThumperCommandType::CueGameOver: + return ESGSenseGloveThumperCommand::CueGameOver; + case FESenseGloveThumperCommandType::ButtonDouble100: + return ESGSenseGloveThumperCommand::ButtonDouble100; + case FESenseGloveThumperCommandType::ButtonDouble60: + return ESGSenseGloveThumperCommand::ButtonDouble60; + case FESenseGloveThumperCommandType::ImpactThump100: + return ESGSenseGloveThumperCommand::ImpactThump100; + case FESenseGloveThumperCommandType::ImpactThump30: + return ESGSenseGloveThumperCommand::ImpactThump30; + case FESenseGloveThumperCommandType::ImpactThump10: + return ESGSenseGloveThumperCommand::ImpactThump10; + case FESenseGloveThumperCommandType::ObjectGrasp100: + return ESGSenseGloveThumperCommand::ObjectGrasp100; + case FESenseGloveThumperCommandType::ObjectGrasp60: + return ESGSenseGloveThumperCommand::ObjectGrasp60; + case FESenseGloveThumperCommandType::ObjectGrasp30: + return ESGSenseGloveThumperCommand::ObjectGrasp30; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGSenseGloveThumperCommand::None; +} + +FSGCoreEnumCast::FENova2SensorLocationType FSGCoreEnumCast::ToESensorLocation(const ESGNova2SensorLocation Enum) +{ + switch (Enum) + { + case ESGNova2SensorLocation::Abduction: + return FENova2SensorLocationType::Abduction; + case ESGNova2SensorLocation::FlexionProximal: + return FENova2SensorLocationType::FlexionProximal; + case ESGNova2SensorLocation::FlexionDistal: + return FENova2SensorLocationType::FlexionDistal; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FENova2SensorLocationType::Abduction; +} + +ESGNova2SensorLocation FSGCoreEnumCast::ToESGNova2SensorLocation(const FENova2SensorLocationType Enum) +{ + switch (Enum) + { + case FENova2SensorLocationType::Abduction: + return ESGNova2SensorLocation::Abduction; + case FENova2SensorLocationType::FlexionProximal: + return ESGNova2SensorLocation::FlexionProximal; + case FENova2SensorLocationType::FlexionDistal: + return ESGNova2SensorLocation::FlexionDistal; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGNova2SensorLocation::None; +} + +FSGCoreEnumCast::FENovaSensorLocationType FSGCoreEnumCast::ToESensorLocation(const ESGNovaSensorLocation Enum) +{ + switch (Enum) + { + case ESGNovaSensorLocation::Abduction: + return FENovaSensorLocationType::Abduction; + case ESGNovaSensorLocation::Flexion: + return FENovaSensorLocationType::Flexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FENovaSensorLocationType::Abduction; +} + +ESGNovaSensorLocation FSGCoreEnumCast::ToESGNovaSensorLocation(const FENovaSensorLocationType Enum) +{ + switch (Enum) + { + case FENovaSensorLocationType::Abduction: + return ESGNovaSensorLocation::Abduction; + case FENovaSensorLocationType::Flexion: + return ESGNovaSensorLocation::Flexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGNovaSensorLocation::None; +} + +FSGCoreEnumCast::FEThumbMovementType FSGCoreEnumCast::ToEThumbMovement(const ESGThumbMovement Enum) +{ + switch (Enum) + { + case ESGThumbMovement::CmcTwist: + return FEThumbMovementType::CmcTwist; + case ESGThumbMovement::CmcFlexion: + return FEThumbMovementType::CmcFlexion; + case ESGThumbMovement::CmcAbduction: + return FEThumbMovementType::CmcAbduction; + case ESGThumbMovement::McpFlexion: + return FEThumbMovementType::McpFlexion; + case ESGThumbMovement::IpFlexion: + return FEThumbMovementType::IpFlexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEThumbMovementType::CmcTwist; +} + +ESGThumbMovement FSGCoreEnumCast::ToESGThumbMovement(const FEThumbMovementType Enum) +{ + switch (Enum) + { + case FEThumbMovementType::CmcTwist: + return ESGThumbMovement::CmcTwist; + case FEThumbMovementType::CmcFlexion: + return ESGThumbMovement::CmcFlexion; + case FEThumbMovementType::CmcAbduction: + return ESGThumbMovement::CmcAbduction; + case FEThumbMovementType::McpFlexion: + return ESGThumbMovement::McpFlexion; + case FEThumbMovementType::IpFlexion: + return ESGThumbMovement::IpFlexion; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGThumbMovement::None; +} + +FSGCoreEnumCast::FENova2VibroMotorType FSGCoreEnumCast::ToENova2VibroMotor(const ESGNova2VibroMotor Enum) +{ + switch (Enum) + { + case ESGNova2VibroMotor::Unknown: + return FENova2VibroMotorType::Unknown; + case ESGNova2VibroMotor::ThumbFingertip: + return FENova2VibroMotorType::ThumbFingertip; + case ESGNova2VibroMotor::IndexFingertip: + return FENova2VibroMotorType::IndexFingertip; + case ESGNova2VibroMotor::PalmIndexSide: + return FENova2VibroMotorType::PalmIndexSide; + case ESGNova2VibroMotor::PalmPinkySide: + return FENova2VibroMotorType::PalmPinkySide; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FENova2VibroMotorType::Unknown; +} + +ESGNova2VibroMotor FSGCoreEnumCast::ToESGNova2VibroMotor(const FENova2VibroMotorType Enum) +{ + switch (Enum) + { + case FENova2VibroMotorType::Unknown: + return ESGNova2VibroMotor::Unknown; + case FENova2VibroMotorType::ThumbFingertip: + return ESGNova2VibroMotor::ThumbFingertip; + case FENova2VibroMotorType::IndexFingertip: + return ESGNova2VibroMotor::IndexFingertip; + case FENova2VibroMotorType::PalmIndexSide: + return ESGNova2VibroMotor::PalmIndexSide; + case FENova2VibroMotorType::PalmPinkySide: + return ESGNova2VibroMotor::PalmPinkySide; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGNova2VibroMotor::None; +} + +FSGCoreEnumCast::FENovaVibroMotorType FSGCoreEnumCast::ToENovaVibroMotor(const ESGNovaVibroMotor Enum) +{ + switch (Enum) + { + case ESGNovaVibroMotor::Unknown: + return FENovaVibroMotorType::Unknown; + case ESGNovaVibroMotor::BackOfHand: + return FENovaVibroMotorType::BackOfHand; + case ESGNovaVibroMotor::ThumbTip: + return FENovaVibroMotorType::ThumbTip; + case ESGNovaVibroMotor::IndexFingertip: + return FENovaVibroMotorType::IndexFingertip; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FENovaVibroMotorType::Unknown; +} + +ESGNovaVibroMotor FSGCoreEnumCast::ToESGNovaVibroMotor(const FENovaVibroMotorType Enum) +{ + switch (Enum) + { + case FENovaVibroMotorType::Unknown: + return ESGNovaVibroMotor::Unknown; + case FENovaVibroMotorType::BackOfHand: + return ESGNovaVibroMotor::BackOfHand; + case FENovaVibroMotorType::ThumbTip: + return ESGNovaVibroMotor::ThumbTip; + case FENovaVibroMotorType::IndexFingertip: + return ESGNovaVibroMotor::IndexFingertip; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGNovaVibroMotor::None; +} + +FSGCoreEnumCast::FEWaveformType FSGCoreEnumCast::ToEWaveformType(const ESGWaveformType Enum) +{ + switch (Enum) + { + case ESGWaveformType::Unknown: + return FEWaveformType::Unknown; + case ESGWaveformType::Sine: + return FEWaveformType::Sine; + case ESGWaveformType::Square: + return FEWaveformType::Square; + case ESGWaveformType::SawDown: + return FEWaveformType::SawUp; + case ESGWaveformType::SawUp: + return FEWaveformType::SawDown; + case ESGWaveformType::Triangle: + return FEWaveformType::Triangle; + case ESGWaveformType::Noise: + return FEWaveformType::Noise; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + // Keep the compiler satisfied! + return FEWaveformType::Unknown; +} + +ESGWaveformType FSGCoreEnumCast::ToESGWaveformType(const FEWaveformType Enum) +{ + switch (Enum) + { + case FEWaveformType::Unknown: + return ESGWaveformType::Unknown; + case FEWaveformType::Sine: + return ESGWaveformType::Sine; + case FEWaveformType::Square: + return ESGWaveformType::Square; + case FEWaveformType::SawUp: + return ESGWaveformType::SawDown; + case FEWaveformType::SawDown: + return ESGWaveformType::SawUp; + case FEWaveformType::Triangle: + return ESGWaveformType::Triangle; + case FEWaveformType::Noise: + return ESGWaveformType::Noise; + default: + ensureAlwaysMsgf(false, TEXT("Unhandled enum cast item!")); + break; + } + + return ESGWaveformType::None; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.h new file mode 100644 index 0000000..6e710dc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCoreEnumCast.h @@ -0,0 +1,127 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + + +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGBuildHacks/SGInclude_Core_Fingers.h" +#include "SGBuildHacks/SGInclude_Core_HapticChannelInfo.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_Library.h" +#include "SGBuildHacks/SGInclude_Core_NormalizationState.h" +#include "SGBuildHacks/SGInclude_Core_Nova2Glove.h" +#include "SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_NovaGlove.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveThumperCommand.h" +#include "SGBuildHacks/SGInclude_Core_SGDevice.h" +#include "SGBuildHacks/SGInclude_Core_Tracking.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGTypes/SGCoreTypes.h" + +class SENSEGLOVECOREIMPL_API FSGCoreEnumCast +{ +public: + typedef SGCore::EBackendType FEBackendType; + typedef SGCore::SGDevice::EConnectionType FEConnectionType; + typedef SGCore::EDeviceType FEDeviceType; + typedef SGCore::EFinger FEFingerType; + typedef SGCore::EHapticChannelType FEHapticChannelType; + typedef SGCore::EHapticGloveCalibrationState FEHapticGloveCalibrationStateType; + typedef SGCore::EHapticLocation FEHapticLocationType; + typedef SGCore::Kinematics::EFingerMovement FEFingerMovementType; + typedef SGCore::Nova::ENormalizationState FENormalizationStateType; + typedef SGCore::Nova::Nova2GloveSensorData::ESensorLocation FENova2SensorLocationType; + typedef SGCore::Nova::NovaGloveSensorData::ESensorLocation FENovaSensorLocationType; + typedef SGCore::EPositionalTrackingHardware FEPositionalTrackingHardwareType; + typedef SGCore::Haptics::ESenseGloveThumperCommand FESenseGloveThumperCommandType; + typedef SGCore::Kinematics::EThumbMovement FEThumbMovementType; + typedef SGCore::Nova::ENova2VibroMotor FENova2VibroMotorType; + typedef SGCore::Nova::ENovaVibroMotor FENovaVibroMotorType; + typedef SGCore::EWaveformType FEWaveformType; + +public: + static FEBackendType ToEBackendType(ESGBackendType Enum); + static ESGBackendType ToESGBackendType(FEBackendType Enum); + + static FEConnectionType ToEConnectionType(ESGConnectionType Enum); + static ESGConnectionType ToESGConnectionType(FEConnectionType Enum); + + static FEDeviceType ToEDeviceType(ESGDeviceType Enum); + static ESGDeviceType ToESGDeviceType(FEDeviceType Enum); + + static FEFingerType ToEFinger(ESGFinger Enum); + static ESGFinger ToESGFinger(FEFingerType Enum); + + static FEFingerMovementType ToEFingerMovement(ESGFingerMovement Enum); + static ESGFingerMovement ToESGFingerMovement(FEFingerMovementType Enum); + + static FEHapticChannelType ToEHapticChannelType(ESGHapticChannelType Enum); + static ESGHapticChannelType ToESGHapticChannelType(FEHapticChannelType Enum); + + static FEHapticGloveCalibrationStateType ToEHapticGloveCalibrationState(ESGHapticGloveCalibrationState Enum); + static ESGHapticGloveCalibrationState ToESGHapticGloveCalibrationState(FEHapticGloveCalibrationStateType Enum); + + static FEHapticLocationType ToEHapticLocation(ESGHapticLocation Enum); + static ESGHapticLocation ToESGHapticLocation(FEHapticLocationType Enum); + + static FENormalizationStateType ToENormalizationState(ESGNormalizationState Enum); + static ESGNormalizationState ToESGNormalizationState(FENormalizationStateType Enum); + + static FEPositionalTrackingHardwareType ToEPositionalTrackingHardware(ESGPositionalTrackingHardware Enum); + static ESGPositionalTrackingHardware ToESGPositionalTrackingHardware(FEPositionalTrackingHardwareType Enum); + + static FESenseGloveThumperCommandType ToESenseGloveThumperCommand(ESGSenseGloveThumperCommand Enum); + static ESGSenseGloveThumperCommand ToESGSenseGloveThumperCommand(FESenseGloveThumperCommandType Enum); + + static FENova2SensorLocationType ToESensorLocation(ESGNova2SensorLocation Enum); + static ESGNova2SensorLocation ToESGNova2SensorLocation(FENova2SensorLocationType Enum); + + static FENovaSensorLocationType ToESensorLocation(ESGNovaSensorLocation Enum); + static ESGNovaSensorLocation ToESGNovaSensorLocation(FENovaSensorLocationType Enum); + + static FEThumbMovementType ToEThumbMovement(ESGThumbMovement Enum); + static ESGThumbMovement ToESGThumbMovement(FEThumbMovementType Enum); + + static FENova2VibroMotorType ToENova2VibroMotor(ESGNova2VibroMotor Enum); + static ESGNova2VibroMotor ToESGNova2VibroMotor(FENova2VibroMotorType Enum); + + static FENovaVibroMotorType ToENovaVibroMotor(ESGNovaVibroMotor Enum); + static ESGNovaVibroMotor ToESGNovaVibroMotor(FENovaVibroMotorType Enum); + + static FEWaveformType ToEWaveformType(ESGWaveformType Enum); + static ESGWaveformType ToESGWaveformType(FEWaveformType Enum); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCustomWaveformImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCustomWaveformImpl.cpp new file mode 100644 index 0000000..d2ba2fb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGCustomWaveformImpl.cpp @@ -0,0 +1,276 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGCustomWaveformImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGCoreImpl/SGCoreEnumCast.h" + +struct FSGCustomWaveformImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FCustomWaveformType CustomWaveform; + + /************************ + * Owner object + ************************/ + + FSGCustomWaveformImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGCustomWaveformImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FString FSGCustomWaveformImpl::ToString(const ESGWaveformType Type) +{ + const FString String{FCustomWaveformType::ToString(FSGCoreEnumCast::ToEWaveformType(Type)).c_str()}; + return String; +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl(const float Amplitude, const float Duration) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->CustomWaveform = FCustomWaveformType{Amplitude, Duration}; +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl(const float Amplitude, const float Duration, const float Frequency) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->CustomWaveform = FCustomWaveformType{Amplitude, Duration, Frequency}; +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl(const FCustomWaveformType& CustomWaveform) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->CustomWaveform = CustomWaveform; +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl(const FSGCustomWaveformImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGCustomWaveformImpl::FSGCustomWaveformImpl(FSGCustomWaveformImpl&& Rhs) SG_NOEXCEPT = default; + +FSGCustomWaveformImpl::~FSGCustomWaveformImpl() = default; + +FSGCustomWaveformImpl& FSGCustomWaveformImpl::operator=(const FSGCustomWaveformImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGCustomWaveformImpl& FSGCustomWaveformImpl::operator=(FSGCustomWaveformImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGCustomWaveformImpl::FCustomWaveformType& FSGCustomWaveformImpl::ToCustomWaveform() const +{ + return Pimpl->CustomWaveform; +} + +FSGCustomWaveformImpl::FCustomWaveformType& FSGCustomWaveformImpl::ToCustomWaveform() +{ + return Pimpl->CustomWaveform; +} + +float FSGCustomWaveformImpl::GetAmplitude() const +{ + return Pimpl->CustomWaveform.GetAmplitude(); +} + +void FSGCustomWaveformImpl::SetAmplitude(const float Amplitude) +{ + Pimpl->CustomWaveform.SetAmplitude(Amplitude); +} + +ESGWaveformType FSGCustomWaveformImpl::GetWaveType() const +{ + return FSGCoreEnumCast::ToESGWaveformType(Pimpl->CustomWaveform.GetWaveType()); +} + +void FSGCustomWaveformImpl::SetWaveType(const ESGWaveformType Type) +{ + Pimpl->CustomWaveform.SetWaveType(FSGCoreEnumCast::ToEWaveformType(Type)); +} + +bool FSGCustomWaveformImpl::IsInfinite() const +{ + return Pimpl->CustomWaveform.IsInfinite(); +} + +void FSGCustomWaveformImpl::SetInfinite(const bool bInfinite) +{ + return Pimpl->CustomWaveform.SetInfinite(bInfinite); +} + +int32 FSGCustomWaveformImpl::GetRepeatAmount() const +{ + return Pimpl->CustomWaveform.GetRepeatAmount(); +} + +void FSGCustomWaveformImpl::SetRepeatAmount(const int32 Amount) +{ + Pimpl->CustomWaveform.SetRepeatAmount(Amount); +} + +float FSGCustomWaveformImpl::GetAttackTime() const +{ + return Pimpl->CustomWaveform.GetAttackTime(); +} + +void FSGCustomWaveformImpl::SetAttackTime(const float Time) +{ + Pimpl->CustomWaveform.SetAttackTime(Time); +} + +float FSGCustomWaveformImpl::GetSustainTime() const +{ + return Pimpl->CustomWaveform.GetSustainTime(); +} + +void FSGCustomWaveformImpl::SetSustainTime(const float Time) +{ + Pimpl->CustomWaveform.SetSustainTime(Time); +} + +float FSGCustomWaveformImpl::GetDecayTime() const +{ + return Pimpl->CustomWaveform.GetDecayTime(); +} + +void FSGCustomWaveformImpl::SetDecayTime(const float Time) +{ + Pimpl->CustomWaveform.SetDecayTime(Time); +} + +float FSGCustomWaveformImpl::GetFrequencyStart() const +{ + return Pimpl->CustomWaveform.GetFrequencyStart(); +} + +void FSGCustomWaveformImpl::SetFrequencyStart(const float Frequency) +{ + Pimpl->CustomWaveform.SetFrequencyStart(Frequency); +} + +float FSGCustomWaveformImpl::GetFrequencyEnd() const +{ + return Pimpl->CustomWaveform.GetFrequencyEnd(); +} + +void FSGCustomWaveformImpl::SetFrequencyEnd(const float Frequency) +{ + Pimpl->CustomWaveform.SetFrequencyEnd(Frequency); +} + +float FSGCustomWaveformImpl::GetFrequencySwitchTime() const +{ + return Pimpl->CustomWaveform.GetFrequencySwitchTime(); +} + +void FSGCustomWaveformImpl::SetFrequencySwitchTime(const float Time) +{ + Pimpl->CustomWaveform.SetFrequencySwitchTime(Time); +} + +float FSGCustomWaveformImpl::GetFrequencySwitchFactor() const +{ + return Pimpl->CustomWaveform.GetFrequencySwitchFactor(); +} + +void FSGCustomWaveformImpl::SetFrequencySwitchFactor(const float Factor) +{ + Pimpl->CustomWaveform.SetFrequencySwitchFactor(Factor); +} + +float FSGCustomWaveformImpl::GetEffectTime() const +{ + return Pimpl->CustomWaveform.GetEffectTime(); +} + +float FSGCustomWaveformImpl::GetTotalEffectTime() const +{ + return Pimpl->CustomWaveform.GetTotalEffectTime(); +} + +bool FSGCustomWaveformImpl::FrequencyJumps() const +{ + return Pimpl->CustomWaveform.FrequencyJumps(); +} + +bool FSGCustomWaveformImpl::Equals(const FSGCustomWaveformImpl& CustomWaveformImpl) const +{ + return Pimpl->CustomWaveform.Equals(CustomWaveformImpl.ToCustomWaveform()); +} + +FString FSGCustomWaveformImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->CustomWaveform.ToString().c_str())}; + return String; +} + +FSGCustomWaveformImpl::FImpl::FImpl(FSGCustomWaveformImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGCustomWaveformImpl::FImpl::~FImpl() = default; + +void FSGCustomWaveformImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp new file mode 100644 index 0000000..5f64e35 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceImpl.cpp @@ -0,0 +1,409 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGDeviceImpl.h" + +#include + +#include "Containers/StringConv.h" +#include "Misc/AssertionMacros.h" + +#include "SGBuildHacks/SGInclude_Core_BetaDevice.h" +#include "SGBuildHacks/SGInclude_Core_SGDevice.h" +#include "SGBuildHacks/SGInclude_Core_HapticChannelInfo.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_Nova2Glove.h" +#include "SGBuildHacks/SGInclude_Core_NovaGlove.h" +#include "SGBuildHacks/SGInclude_Core_SenseGlove.h" +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGHapticChannelInfoImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "Templates/Casts.h" + +struct FSGDeviceImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSGDevicePtrType SGDevice; + + /************************ + * Owner object + ************************/ + + FSGDeviceImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGDeviceImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +void FSGDeviceImpl::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + FSGDeviceType::ParseFirmware(TCHAR_TO_UTF8(*RawFirmware), OutMainVersion, OutSubVersion); +} + +bool FSGDeviceImpl::FirmwareNewerThan(const int32 MyFirmwareMain, const int32 MyFirmwareSub, + const int32 ReferenceMain, const int32 ReferenceSub, const bool bInclusive) +{ + return FSGDeviceType::FirmwareNewerThan(MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +bool FSGDeviceImpl::FirmwareOlderThan(const int32 MyFirmwareMain, const int32 MyFirmwareSub, + const int32 ReferenceMain, const int32 ReferenceSub, const bool bInclusive) +{ + return FSGDeviceType::FirmwareOlderThan(MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +FString FSGDeviceImpl::ToString(const ESGDeviceType DeviceType) +{ + const FString String{UTF8_TO_TCHAR(FSGDeviceType::ToString(FSGCoreEnumCast::ToEDeviceType(DeviceType)).c_str())}; + return String; +} + +FSGDeviceImpl::FSGDeviceImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGDeviceImpl::FSGDeviceImpl(const FSGDevicePtrType SGDevice) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + ensureAlwaysMsgf(SGDevice.get(), TEXT("Invalid SGDevice!")); + Pimpl->SGDevice = SGDevice; +} + +FSGDeviceImpl::FSGDeviceImpl(const FSGDeviceImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGDeviceImpl::FSGDeviceImpl(FSGDeviceImpl&& Rhs) SG_NOEXCEPT = default; + +FSGDeviceImpl::~FSGDeviceImpl() = default; + +FSGDeviceImpl& FSGDeviceImpl::operator=(const FSGDeviceImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGDeviceImpl& FSGDeviceImpl::operator=(FSGDeviceImpl&& Rhs) SG_NOEXCEPT = default; + +FSGDeviceImpl::FSGDevicePtrType FSGDeviceImpl::ToSGDevicePtr() const +{ + return Pimpl->SGDevice; +} + +FSGDeviceImpl::FSGDevicePtrType FSGDeviceImpl::ToSGDevicePtrChecked() const +{ + ensureAlwaysMsgf(Pimpl->SGDevice.get(), TEXT("Invalid Pimpl->SGDevice!")); + return Pimpl->SGDevice; +} + +TSharedRef FSGDeviceImpl::ToSGDeviceImplRef() +{ + return SharedThis(this); +} + +TSharedRef FSGDeviceImpl::ToBetaDeviceImplRef() +{ + FSGBetaDeviceImpl* BetaDevice{dynamic_cast(this)}; + ensureAlwaysMsgf(BetaDevice, TEXT("Invalid BetaDevice!")); + return SharedThis(BetaDevice); +} + +TSharedRef FSGDeviceImpl::ToHapticGloveImplRef() +{ + FSGHapticGloveImpl* HapticGlove{dynamic_cast(this)}; + ensureAlwaysMsgf(HapticGlove, TEXT("Invalid HapticGlove!")); + return SharedThis(HapticGlove); +} + +TSharedRef FSGDeviceImpl::ToNova2GloveImplRef() +{ + FSGNova2GloveImpl* Nova2Glove{dynamic_cast(this)}; + ensureAlwaysMsgf(Nova2Glove, TEXT("Invalid Nova2Glove!")); + return SharedThis(Nova2Glove); +} + +TSharedRef FSGDeviceImpl::ToNovaGloveImplRef() +{ + FSGNovaGloveImpl* NovaGlove{dynamic_cast(this)}; + ensureAlwaysMsgf(NovaGlove, TEXT("Invalid NovaGlove!")); + return SharedThis(NovaGlove); +} + +TSharedRef FSGDeviceImpl::ToSenseGloveImplRef() +{ + FSGSenseGloveImpl* SenseGlove{dynamic_cast(this)}; + ensureAlwaysMsgf(SenseGlove, TEXT("Invalid SenseGlove!")); + return SharedThis(SenseGlove); +} + +bool FSGDeviceImpl::IsABetaDevice() const +{ + const FSGBetaDeviceImpl::FBetaDevicePtrType BetaDevice{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return BetaDevice != nullptr; +} + +bool FSGDeviceImpl::IsAHapticGlove() const +{ + const FSGHapticGloveImpl::FHapticGlovePtrType HapticGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return HapticGlove != nullptr; +} + +bool FSGDeviceImpl::IsANova2Glove() const +{ + const FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return Nova2Glove != nullptr; +} + +bool FSGDeviceImpl::IsANovaGlove() const +{ + const FSGNovaGloveImpl::FNovaGlovePtrType NovaGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return NovaGlove != nullptr; +} + +bool FSGDeviceImpl::IsASenseGlove() const +{ + const FSGSenseGloveImpl::FSenseGlovePtrType SenseGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + return SenseGlove != nullptr; +} + +TSharedPtr FSGDeviceImpl::AsBetaDevice() const +{ + const FSGBetaDeviceImpl::FBetaDevicePtrType BetaDevice{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + ensureAlwaysMsgf(BetaDevice, TEXT("Invalid BetaDevice!")); + return MakeShared(BetaDevice); +} + +TSharedPtr FSGDeviceImpl::AsHapticGlove() const +{ + const FSGHapticGloveImpl::FHapticGlovePtrType HapticGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + ensureAlwaysMsgf(HapticGlove, TEXT("Invalid HapticGlove!")); + return MakeShared(HapticGlove); +} + +TSharedPtr FSGDeviceImpl::AsNova2Glove() const +{ + const FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + ensureAlwaysMsgf(Nova2Glove, TEXT("Invalid Nova2Glove!")); + return MakeShared(Nova2Glove); +} + +TSharedPtr FSGDeviceImpl::AsNovaGlove() const +{ + const FSGNovaGloveImpl::FNovaGlovePtrType NovaGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + ensureAlwaysMsgf(NovaGlove, TEXT("Invalid NovaGlove!")); + return MakeShared(NovaGlove); +} + +TSharedPtr FSGDeviceImpl::AsSenseGlove() const +{ + const FSGSenseGloveImpl::FSenseGlovePtrType SenseGlove{ + std::dynamic_pointer_cast(ToSGDevicePtr()) + }; + ensureAlwaysMsgf(SenseGlove, TEXT("Invalid SenseGlove!")); + return MakeShared(SenseGlove); +} + +ESGDeviceType FSGDeviceImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToSGDevicePtrChecked()->GetDeviceType()); +} + +FString FSGDeviceImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToSGDevicePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGDeviceImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToSGDevicePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGDeviceImpl::GetFirmwareVersion() const +{ + return ToSGDevicePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGDeviceImpl::GetSubFirmwareVersion() const +{ + return ToSGDevicePtrChecked()->GetSubFirmwareVersion(); +} + +FString FSGDeviceImpl::GetFirmwareString() const +{ + const FString String{UTF8_TO_TCHAR(ToSGDevicePtrChecked()->GetFirmwareString().c_str())}; + return String; +} + +bool FSGDeviceImpl::FirmwareNewerThan(const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return ToSGDevicePtrChecked()->FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool FSGDeviceImpl::FirmwareOlderThan(const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return ToSGDevicePtrChecked()->FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} + +FString FSGDeviceImpl::GetAddress() const +{ + const FString String(UTF8_TO_TCHAR(ToSGDevicePtrChecked()->GetAddress().c_str())); + return String; +} + +bool FSGDeviceImpl::IsConnected() const +{ + return ToSGDevicePtrChecked()->IsConnected(); +} + +ESGConnectionType FSGDeviceImpl::GetConnectionType() const +{ + return FSGCoreEnumCast::ToESGConnectionType(ToSGDevicePtrChecked()->GetConnectionType()); +} + +int32 FSGDeviceImpl::PacketsPerSecondReceived() const +{ + return ToSGDevicePtrChecked()->PacketsPerSecondReceived(); +} + +int32 FSGDeviceImpl::PacketsPerSecondSent() const +{ + return ToSGDevicePtrChecked()->PacketsPerSecondSent(); +} + +int32 FSGDeviceImpl::GetDeviceIndex() const +{ + return ToSGDevicePtrChecked()->GetDeviceIndex(); +} + +void FSGDeviceImpl::SetDeviceIndex(const int32 NewIndex) +{ + ToSGDevicePtrChecked()->SetDeviceIndex(NewIndex); +} + +bool FSGDeviceImpl::IsWireless() const +{ + return ToSGDevicePtrChecked()->IsWireless(); +} + +bool FSGDeviceImpl::HasBattery() const +{ + return ToSGDevicePtrChecked()->HasBattery(); +} + +bool FSGDeviceImpl::IsCharging() +{ + return ToSGDevicePtrChecked()->IsCharging(); +} + +bool FSGDeviceImpl::GetBatteryLevel(float& OutLevel) +{ + return ToSGDevicePtrChecked()->GetBatteryLevel(OutLevel); +} + +void FSGDeviceImpl::SetHapticChannels(const FSGHapticChannelInfoImpl& Channels) +{ + ToSGDevicePtrChecked()->SetHapticChannels(Channels.ToHapticChannelInfo()); +} + +int32 FSGDeviceImpl::GetHapticChannelCount() const +{ + return ToSGDevicePtrChecked()->GetHapticChannelCount(); +} + +int32 FSGDeviceImpl::GetHapticChannelCount(const ESGHapticChannelType ChannelType) const +{ + return ToSGDevicePtrChecked()->GetHapticChannelCount(FSGCoreEnumCast::ToEHapticChannelType(ChannelType)); +} + +FString FSGDeviceImpl::ToString() const +{ + const FString String(UTF8_TO_TCHAR(ToSGDevicePtrChecked()->ToString().c_str())); + return String; +} + +FSGDeviceImpl::FImpl::FImpl(FSGDeviceImpl* InOwner) + : SGDevice(std::make_shared()), + Owner(InOwner) +{ +} + +FSGDeviceImpl::FImpl::~FImpl() = default; + +void FSGDeviceImpl::FImplDeleter::operator()(const FSGDeviceImpl::FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceListImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceListImpl.cpp new file mode 100644 index 0000000..766e290 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceListImpl.cpp @@ -0,0 +1,209 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGDeviceListImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_BetaDevice.h" +#include "SGBuildHacks/SGInclude_Core_DeviceList.h" +#include "SGBuildHacks/SGInclude_Core_NovaGlove.h" +#include "SGBuildHacks/SGInclude_Core_SenseGlove.h" +#include "SGBuildHacks/SGInclude_Core_SGDevice.h" +#include "SGCoreImpl/SGBetaDeviceImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGNova2GloveImpl.h" +#include "SGCoreImpl/SGNovaGloveImpl.h" +#include "SGCoreImpl/SGSenseGloveImpl.h" +#include "SGLog/SGLog.h" + +int32 FSGDeviceListImpl::ActiveDevices() +{ + return FDeviceListType::ActiveDevices(); +} + +bool FSGDeviceListImpl::SenseCommRunning() +{ + return FDeviceListType::SenseComRunning(); +} + +void FSGDeviceListImpl::Dispose() +{ + FDeviceListType::Dispose(); +} + +void FSGDeviceListImpl::Reinitialize() +{ + FDeviceListType::Reinitialize(); +} + +TArray> FSGDeviceListImpl::GetDevices() +{ + const FSGDeviceImpl::FSGDevicePtrVectorType Devices = FDeviceListType::GetDevices(); + TArray> DeviceImpls; + + for (const FSGDeviceImpl::FSGDevicePtrType& Device: Devices) + { + switch (FSGCoreEnumCast::ToESGDeviceType(Device->GetDeviceType())) + { + case ESGDeviceType::BetaDevice: + { + FSGBetaDeviceImpl::FBetaDevicePtrType BetaDevice = + std::dynamic_pointer_cast(Device); + if (ensureAlwaysMsgf(BetaDevice, TEXT("Invalid BetaDevice!"))) + { + TSharedRef BetaDeviceImpl{ + MakeShared(BetaDevice) + }; + DeviceImpls.Push(MoveTemp(BetaDeviceImpl)); + } + } + break; + + case ESGDeviceType::Nova2: + { + FSGNova2GloveImpl::FNova2GlovePtrType Nova2Glove = + std::dynamic_pointer_cast(Device); + if (ensureAlwaysMsgf(Nova2Glove, TEXT("Invalid Nova2Glove device!"))) + { + TSharedRef Nova2GloveImpl{MakeShared(Nova2Glove)}; + DeviceImpls.Push(MoveTemp(Nova2GloveImpl)); + } + } + break; + + case ESGDeviceType::Nova: + { + FSGNovaGloveImpl::FNovaGlovePtrType NovaGlove = + std::dynamic_pointer_cast(Device); + if (ensureAlwaysMsgf(NovaGlove, TEXT("Invalid NovaGlove device!"))) + { + TSharedRef NovaGloveImpl{MakeShared(NovaGlove)}; + DeviceImpls.Push(MoveTemp(NovaGloveImpl)); + } + } + break; + + case ESGDeviceType::SenseGlove: + { + FSGSenseGloveImpl::FSenseGlovePtrType SenseGlove{ + std::dynamic_pointer_cast(Device)}; + if (ensureAlwaysMsgf(SenseGlove, TEXT("Invalid SenseGlove device!"))) + { + TSharedRef SenseGloveImpl{ + MakeShared(SenseGlove) + }; + DeviceImpls.Push(MoveTemp(SenseGloveImpl)); + } + } + break; + + default: + SGLOG_WARNING( + FString::Printf(TEXT("Unknown SenseGlove device '%s'!"), UTF8_TO_TCHAR(typeid(Device).name())), + FString::Printf(TEXT("Device ID: '%s'!"), UTF8_TO_TCHAR(Device->GetDeviceId().c_str())), + FString::Printf(TEXT("Hardware Version: '%s'!"), UTF8_TO_TCHAR(Device->GetHardwareVersion().c_str())), + FString::Printf(TEXT("Firmware Version: '%d'!"), Device->GetFirmwareVersion()), + FString::Printf(TEXT("Sub Firmware Version: '%d'!"), Device->GetSubFirmwareVersion()), + FString::Printf(TEXT("Firmware String: '%s'!"), UTF8_TO_TCHAR(Device->GetFirmwareString().c_str())) + ); + + break;; + } + } + + return DeviceImpls; +} + +bool FSGDeviceListImpl::GetSensorDataString(const int32 IpcIndex, const FString& IpcAddress, FString& OutString) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + std::string OutSensorData; + const bool bReturn = FDeviceListType::GetSensorDataString(IpcIndex, MoveTemp(IpcAddressString), OutSensorData); + OutString = UTF8_TO_TCHAR(OutSensorData.c_str()); + return bReturn; +} + +bool FSGDeviceListImpl::SendHaptics( + const int32 IpcIndex, const FString& IpcAddress, const int32 ChannelIndex, const FString& Commands) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + std::string CommandsString(TCHAR_TO_UTF8(*Commands)); + return FDeviceListType::SendHaptics(IpcIndex, MoveTemp(IpcAddressString), ChannelIndex, MoveTemp(CommandsString)); +} + +FString FSGDeviceListImpl::GetDeviceStringAt(const int32 IpcIndex, const FString& IpcAddress, const int32 Index) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + const FString String( + UTF8_TO_TCHAR(FDeviceListType::GetDeviceStringAt(IpcIndex, MoveTemp(IpcAddressString), Index).c_str())); + return String; +} + +FString FSGDeviceListImpl::GetAddress(const int32 IpcIndex, const FString& IpcAddress) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + const FString Address(UTF8_TO_TCHAR(FDeviceListType::GetAddress(IpcIndex, MoveTemp(IpcAddressString)).c_str())); + return Address; +} + +ESGConnectionType FSGDeviceListImpl::GetConnectionType(const int32 IpcIndex, const FString& IpcAddress) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + const ESGConnectionType Type( + FSGCoreEnumCast::ToESGConnectionType( + FDeviceListType::GetConnectionType(IpcIndex, MoveTemp(IpcAddressString)))); + return Type; +} + +bool FSGDeviceListImpl::IsConnected(const int32 IpcIndex, const FString& IpcAddress) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + return FDeviceListType::IsConnected(IpcIndex, MoveTemp(IpcAddressString)); +} + +int32 FSGDeviceListImpl::PacketsPerSecondReceived(const int32 IpcIndex, const FString& IpcAddress) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + return FDeviceListType::PacketsPerSecondReceived(IpcIndex, MoveTemp(IpcAddressString)); +} + +int32 FSGDeviceListImpl::PacketsPerSecondSent(const int32 IpcIndex, const FString& IpcAddress) +{ + std::string IpcAddressString(TCHAR_TO_UTF8(*IpcAddress)); + return FDeviceListType::PacketsPerSecondSent(IpcIndex, MoveTemp(IpcAddressString)); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceModelImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceModelImpl.cpp new file mode 100644 index 0000000..84214d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGDeviceModelImpl.cpp @@ -0,0 +1,186 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGDeviceModelImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_DeviceModel.h" + +struct FSGDeviceModelImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FDeviceModelType DeviceModel; + + /************************ + * Owner object + ************************/ + + FSGDeviceModelImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGDeviceModelImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TArray FSGDeviceModelImpl::ParseFunctions(int32 Value, int32 Size) +{ + /// NOTE + /// std::vector is a non conforming container. Since it packs bools to be stored in one bit, + /// it cannot provide a bool reference. Thus FSGArrayUtils::FromStdVector() cannot be used. + + static TArray ParsedFunctionsArray; + + std::vector ParsedFunctionsVector{FDeviceModelType::ParseFunctions(Value, Size)}; + for (const bool bValue: ParsedFunctionsVector) + { + ParsedFunctionsArray.Add(bValue); + } + + return ParsedFunctionsArray; +} + +void FSGDeviceModelImpl::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + std::string RawFirmwareString(TCHAR_TO_UTF8(*RawFirmware)); + FDeviceModelType::ParseFirmware(MoveTemp(RawFirmwareString), OutMainVersion, OutSubVersion); +} + +FSGDeviceModelImpl::FSGDeviceModelImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGDeviceModelImpl::FSGDeviceModelImpl( + const FString& Id, const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::string IdString(TCHAR_TO_UTF8(*Id)); + std::string HardwareVersionString(TCHAR_TO_UTF8(*HardwareVersion)); + Pimpl->DeviceModel = FDeviceModelType(MoveTemp(IdString), MoveTemp(HardwareVersionString), + FirmwareVersion, SubFirmwareVersion); +} + +FSGDeviceModelImpl::FSGDeviceModelImpl(const FDeviceModelType& DeviceModel) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->DeviceModel = DeviceModel; +} + +FSGDeviceModelImpl::FSGDeviceModelImpl(const FSGDeviceModelImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGDeviceModelImpl::FSGDeviceModelImpl(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT = default; + +FSGDeviceModelImpl::~FSGDeviceModelImpl() = default; + +FSGDeviceModelImpl& FSGDeviceModelImpl::operator=(const FSGDeviceModelImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGDeviceModelImpl& FSGDeviceModelImpl::operator=(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGDeviceModelImpl::FDeviceModelType& FSGDeviceModelImpl::ToDeviceModel() const +{ + return Pimpl->DeviceModel; +} + +FString FSGDeviceModelImpl::GetDeviceId() const +{ + const FString DeviceId(UTF8_TO_TCHAR(Pimpl->DeviceModel.GetDeviceId().c_str())); + return DeviceId; +} + +FString FSGDeviceModelImpl::GetHardwareVersion() const +{ + const FString HardwareVersion(UTF8_TO_TCHAR(Pimpl->DeviceModel.GetHardwareVersion().c_str())); + return HardwareVersion; +} + +int32 FSGDeviceModelImpl::GetFirmwareVersion() const +{ + return Pimpl->DeviceModel.GetFirmwareVersion(); +} + +int32 FSGDeviceModelImpl::GetSubFirmwareVersion() const +{ + return Pimpl->DeviceModel.GetSubFirmwareVersion(); +} + +bool FSGDeviceModelImpl::FirmwareNewerThan( + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return Pimpl->DeviceModel.FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool FSGDeviceModelImpl::FirmwareOlderThan( + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return Pimpl->DeviceModel.FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} + +FSGDeviceModelImpl::FImpl::FImpl(FSGDeviceModelImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGDeviceModelImpl::FImpl::~FImpl() = default; + +void FSGDeviceModelImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp new file mode 100644 index 0000000..02609e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGExportedFunctions.cpp @@ -0,0 +1,6246 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGExportedFunctions.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidApplication.h" +#include "Android/AndroidJava.h" +#endif /* PLATFORM_ANDROID */ + +#include "Templates/UnrealTemplate.h" + +#if PLATFORM_ANDROID +#include "SGBuildHacks/SGInclude_Core_Android.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGCoreImpl/SGAnatomyImpl.h" +#include "SGCoreImpl/SGDeviceListImpl.h" +#include "SGCoreImpl/SGHandLayerImpl.h" +#include "SGCoreImpl/SGJointKinematicsImpl.h" +#include "SGCoreImpl/SGLibraryImpl.h" +#include "SGCoreImpl/SGSenseComImpl.h" +#include "SGCoreImpl/SGSenseGloveVarsImpl.h" +#include "SGCoreImpl/SGTrackingImpl.h" +#include "SGInterop/SGIC_ESGBackendType.h" +#include "SGInterop/SGIC_ESGConnectionType.h" +#include "SGInterop/SGIC_ESGDeviceType.h" +#include "SGInterop/SGIC_ESGFinger.h" +#include "SGInterop/SGIC_ESGFingerMovement.h" +#include "SGInterop/SGIC_ESGFingerSolver.h" +#include "SGInterop/SGIC_ESGHapticChannelType.h" +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" +#include "SGInterop/SGIC_ESGHapticLocation.h" +#include "SGInterop/SGIC_ESGListFormat.h" +#include "SGInterop/SGIC_ESGNormalizationState.h" +#include "SGInterop/SGIC_ESGNova2SensorLocation.h" +#include "SGInterop/SGIC_ESGNova2VibroMotor.h" +#include "SGInterop/SGIC_ESGNovaCVar.h" +#include "SGInterop/SGIC_ESGNovaData.h" +#include "SGInterop/SGIC_ESGNovaSensorLocation.h" +#include "SGInterop/SGIC_ESGNovaVibroMotor.h" +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" +#include "SGInterop/SGIC_ESGSenseGloveCVar.h" +#include "SGInterop/SGIC_ESGSenseGloveSVar.h" +#include "SGInterop/SGIC_ESGSenseGloveThumperCommand.h" +#include "SGInterop/SGIC_ESGSensorFormat.h" +#include "SGInterop/SGIC_ESGThumbMovement.h" +#include "SGInterop/SGIC_ESGThumbSolver.h" +#include "SGInterop/SGIC_ESGWaveformType.h" +#include "SGInterop/SGIC_FQuat.h" +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" +#include "SGInterop/SGIC_FSGBetaDeviceImpl.h" +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" +#include "SGInterop/SGIC_FSGDeviceImpl.h" +#include "SGInterop/SGIC_FSGDeviceModelImpl.h" +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" +#include "SGInterop/SGIC_FSGHandPoseImpl.h" +#include "SGInterop/SGIC_FSGHapticChannelInfoImpl.h" +#include "SGInterop/SGIC_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_FSGInterpolationSetImpl.h" +#include "SGInterop/SGIC_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" +#include "SGInterop/SGIC_FSGSenseGlovePoseImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h" +#include "SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h" +#include "SGInterop/SGIC_FSGSensorNormalizationImpl.h" +#include "SGInterop/SGIC_FSGThresholdCommandImpl.h" +#include "SGInterop/SGIC_FString.h" +#include "SGInterop/SGIC_FVector.h" + +#if PLATFORM_ANDROID +#include "SGInterop/SGIC_jclass.h" +#include "SGInterop/SGIC_jmethodID.h" +#include "SGInterop/SGIC_JNIEnv_Ptr.h" +#endif /* PLATFORM_ANDROID */ + +#include "SGInterop/SGIC_TArray_bool.h" +#include "SGInterop/SGIC_TArray_float.h" +#include "SGInterop/SGIC_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_TArray_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_TArray_FSGSenseGloveImpl.h" +#include "SGInterop/SGIC_TArray_FString.h" +#include "SGInterop/SGIC_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_int32.h" +#include "SGInterop/SGIC_TArray_TArray_float.h" +#include "SGInterop/SGIC_TArray_TArray_FQuat.h" +#include "SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h" +#include "SGInterop/SGIC_TArray_TArray_FVector.h" +#include "SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h" +#include "SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h" +#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h" + +/******************************************************************************* + * Exceptional function calls + ******************************************************************************/ + +#if PLATFORM_ANDROID +int32 SGCoreImpl_Android_Initialize( + void* InEnv, + void* InClass, + void* InActiveDevicesMethodID, + void* InGetDeviceStringMethodID, + void* InGetSensorStringMethodID, + void* InWriteHapticsMethodID, + void* StoragePath) +{ + return SGCore::Android::Initialize( + StaticCast(InEnv)->Ptr, + StaticCast(InClass)->Class, + StaticCast(InActiveDevicesMethodID)->MethodID, + StaticCast(InGetDeviceStringMethodID)->MethodID, + StaticCast(InGetSensorStringMethodID)->MethodID, + StaticCast(InWriteHapticsMethodID)->MethodID, + std::string{TCHAR_TO_UTF8(*StaticCast(StoragePath)->String)}); +} +#endif /* PLATFORM_ANDROID */ + +/******************************************************************************* + * SGAnatomyImpl.h + ******************************************************************************/ + +float SGCoreImpl_FSGAnatomyImpl_GetTotalFingerFlexion() +{ + return FSGAnatomyImpl::GetTotalFingerFlexion(); +} + +float SGCoreImpl_FSGAnatomyImpl_GetTotalFingerExtension() +{ + return FSGAnatomyImpl::GetTotalFingerExtension(); +} + +float SGCoreImpl_FSGAnatomyImpl_GetTotalThumbFlexion() +{ + return FSGAnatomyImpl::GetTotalThumbFlexion(); +} + +float SGCoreImpl_FSGAnatomyImpl_GetTotalThumbExtension() +{ + return FSGAnatomyImpl::GetTotalThumbExtension(); +} + +float SGCoreImpl_FSGAnatomyImpl_GetFingerJointLimit( + const bool bRightHanded, + const int32 Joint, + const int32 Movement, + const bool bMax) +{ + return FSGAnatomyImpl::GetFingerJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float SGCoreImpl_FSGAnatomyImpl_GetThumbJointLimit( + const bool bRightHanded, + const int32 Joint, + const int32 Movement, + const bool bMax) +{ + return FSGAnatomyImpl::GetThumbJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float SGCoreImpl_FSGAnatomyImpl_ClampJointAngle( + const float Value, + const int32 Finger, + const bool bRightHand, + const int32 Joint, + const int32 Movement) +{ + return FSGAnatomyImpl::ClampJointAngle(Value, Finger, bRightHand, Joint, Movement); +} + +float SGCoreImpl_FSGAnatomyImpl_NormalizeFingerFlexion( + const float FlexionInDegrees) +{ + return FSGAnatomyImpl::NormalizeFingerFlexion(FlexionInDegrees); +} + +float SGCoreImpl_FSGAnatomyImpl_NormalizeThumbFlexion( + const float FlexionInDegrees) +{ + return FSGAnatomyImpl::NormalizeThumbFlexion(FlexionInDegrees); +} + +void SGCoreImpl_FSGAnatomyImpl_GetDefaultHandAngles( + void* OutAngles, + const bool bRightHanded) +{ + StaticCast(OutAngles)->Array = FSGAnatomyImpl::GetDefaultHandAngles( + bRightHanded); +} + +void SGCoreImpl_FSGAnatomyImpl_GetFlatHandAngles( + void* OutAngles, + const bool bRightHanded) +{ + StaticCast(OutAngles)->Array = FSGAnatomyImpl::GetFlatHandAngles( + bRightHanded); +} + +void SGCoreImpl_FSGAnatomyImpl_GetThumbsUpHandAngles( + void* OutAngles, + const bool bRightHanded) +{ + StaticCast(OutAngles)->Array = FSGAnatomyImpl::GetThumbsUpHandAngles( + bRightHanded); +} + +void SGCoreImpl_FSGAnatomyImpl_GetFistHandAngles( + void* OutAngles, + const bool bRightHanded) +{ + StaticCast(OutAngles)->Array = FSGAnatomyImpl::GetFistHandAngles( + bRightHanded); +} + +/******************************************************************************* + * SGBasicHandModelImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGBasicHandModelImpl_Default( + void* OutBasicHandModelImpl, + const bool bRightHanded) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + FSGBasicHandModelImpl::Default(bRightHanded); +} + +void SGCoreImpl_FSGBasicHandModelImpl_Deserialize( + void* OutBasicHandModelImpl, + void* SerializedString) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + FSGBasicHandModelImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetBaseFingerLengths( + void* OutLengths) +{ + StaticCast(OutLengths)->Array = FSGBasicHandModelImpl::GetBaseFingerLengths(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointPositions( + void* OutPositions) +{ + StaticCast(OutPositions)->Array = FSGBasicHandModelImpl::GetBaseJointPositions(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointAngles( + void* OutRotations) +{ + StaticCast(OutRotations)->Array = FSGBasicHandModelImpl::GetBaseJointAngles(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ctor( + void* OutBasicHandModelImpl) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = FSGBasicHandModelImpl(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + void* OutBasicHandModelImpl, + const bool bRightHanded, + void* Lengths, + void* StartPositions) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + FSGBasicHandModelImpl( + bRightHanded, + StaticCast(Lengths)->Array, + StaticCast(StartPositions)->Array); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + void* OutBasicHandModelImpl, + const bool bRightHanded, + void* Lengths, + void* StartPositions, + void* StartRotations) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + FSGBasicHandModelImpl( + bRightHanded, + StaticCast(Lengths)->Array, + StaticCast(StartPositions)->Array, + StaticCast(StartRotations)->Array); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ctor_copy( + void* OutBasicHandModelImpl, + void* Rhs) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + FSGBasicHandModelImpl(StaticCast(Rhs)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ctor_copy_assignment( + void* OutBasicHandModelImpl, + void* Rhs) +{ + StaticCast(OutBasicHandModelImpl)->BasicHandModelImpl = + StaticCast(Rhs)->BasicHandModelImpl; +} + +bool SGCoreImpl_FSGBasicHandModelImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->BasicHandModelImpl.IsRight(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths( + void* Instance, + void* OutLengths) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetFingerLengths(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths_Finger( + void* Instance, + void* OutLengths, + void* Finger) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetFingerLengths( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_ESGFinger( + void* Instance, + void* Finger, + void* Lengths) +{ + StaticCast(Instance)->BasicHandModelImpl.SetFingerLengths( + StaticCast(Finger)->Finger, + StaticCast(Lengths)->Array); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_uint8Finger( + void* Instance, + const uint8 Finger, + void* Lengths) +{ + StaticCast(Instance)->BasicHandModelImpl.SetFingerLengths( + Finger, + StaticCast(Lengths)->Array); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios( + void* Instance, + void* OutRatios) +{ + StaticCast(OutRatios)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetFingerRatios(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios_Finger( + void* Instance, + void* OutRatios, + void* Finger) +{ + StaticCast(OutRatios)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetFingerRatios( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetStartJointPositions( + void* Instance, + void* OutPositions) +{ + StaticCast(OutPositions)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetStartJointPositions(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_ESGFinger( + void* Instance, + void* Finger, + void* Position) +{ + StaticCast(Instance)->BasicHandModelImpl.SetStartJointPosition( + StaticCast(Finger)->Finger, + StaticCast(Position)->Vector); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_uin8Finger( + void* Instance, + const uint8 Finger, + void* Position) +{ + StaticCast(Instance)->BasicHandModelImpl.SetStartJointPosition( + Finger, + StaticCast(Position)->Vector); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetStartJointRotations( + void* Instance, + void* OutRotations) +{ + StaticCast(OutRotations)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetStartJointRotations(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetJointPosition( + void* Instance, + void* OutPosition, + void* Finger) +{ + StaticCast(OutPosition)->Vector = + StaticCast(Instance)->BasicHandModelImpl.GetJointPosition( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetJointPosition( + void* Instance, + void* NewPosition, + void* Finger) +{ + StaticCast(Instance)->BasicHandModelImpl.SetJointPosition( + StaticCast(NewPosition)->Vector, + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation( + void* Instance, + void* OutRotation, + void* Finger) +{ + StaticCast(OutRotation)->Quat = + StaticCast(Instance)->BasicHandModelImpl.GetJointRotation( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation( + void* Instance, + void* NewRotation, + void* Finger) +{ + StaticCast(Instance)->BasicHandModelImpl.SetJointRotation( + StaticCast(NewRotation)->Quat, + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_GetTotalLengths( + void* Instance, + void* OutLengths) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->BasicHandModelImpl.GetTotalLengths(); +} + +float SGCoreImpl_FSGBasicHandModelImpl_GetTotalLength( + void* Instance, + void* Finger) +{ + return StaticCast(Instance)->BasicHandModelImpl.GetTotalLength( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGBasicHandModelImpl_Get3DLengths( + void* Instance, + void* OutLengths, + void* Finger) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->BasicHandModelImpl.Get3DLengths( + StaticCast(Finger)->Finger); +} + +bool SGCoreImpl_FSGBasicHandModelImpl_Equals( + void* Instance, + void* BasicHandModelImpl) +{ + return StaticCast(Instance)->BasicHandModelImpl.Equals( + StaticCast(BasicHandModelImpl)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->BasicHandModelImpl.ToString(); +} + +void SGCoreImpl_FSGBasicHandModelImpl_ToString_bLengthsOnly( + void* Instance, + void* OutString, + const bool bLengthsOnly) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->BasicHandModelImpl.ToString(bLengthsOnly); +} + +void SGCoreImpl_FSGBasicHandModelImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->BasicHandModelImpl.Serialize(); +} + +/******************************************************************************* + * SGBetaDeviceImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGBetaDeviceImpl_Parse( + void* OutBetaDevice, + void* String) +{ + StaticCast(OutBetaDevice)->Ptr = + FSGBetaDeviceImpl::Parse(StaticCast(String)->String); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor( + void* OutBetaDeviceImpl) +{ + StaticCast(OutBetaDeviceImpl)->BetaDeviceImpl = FSGBetaDeviceImpl(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + void* OutBetaDeviceImpl, + void* ConstantsString, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + StaticCast(OutBetaDeviceImpl)->BetaDeviceImpl = + FSGBetaDeviceImpl{ + StaticCast(ConstantsString)->String, + StaticCast(DeviceId)->String, + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion + }; +} + +void +SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_MakeShared( + void* OutSharedPtr, + void* ConstantsString, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared( + StaticCast(ConstantsString)->String, + StaticCast(DeviceId)->String, + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy( + void* OutBetaDeviceImpl, + void* Rhs) +{ + StaticCast(OutBetaDeviceImpl)->BetaDeviceImpl = + FSGBetaDeviceImpl(StaticCast(Rhs)->BetaDeviceImpl); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->BetaDeviceImpl); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_assignment( + void* OutBetaDeviceImpl, + void* Rhs) +{ + StaticCast(OutBetaDeviceImpl)->BetaDeviceImpl = + StaticCast(Rhs)->BetaDeviceImpl; +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGBetaDeviceImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGBetaDeviceImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetConstantsString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->GetConstantsString(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetSensorData( + void* Instance, + void* OutData) +{ + StaticCast(OutData)->String = + StaticCast(Instance)->Ptr->GetSensorData(); +} + +void SGCoreImpl_FSGBetaDeviceImpl_GetLastCommand( + void* Instance, + void* OutCommand) +{ + StaticCast(OutCommand)->String = + StaticCast(Instance)->Ptr->GetLastCommand(); +} + +bool SGCoreImpl_FSGBetaDeviceImpl_SendHaptics( + void* Instance, + void* Command) +{ + return StaticCast(Instance)->Ptr->SendHaptics( + StaticCast(Command)->String); +} + +void SGCoreImpl_FSGBetaDeviceImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGCustomWaveformImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGCustomWaveformImpl_ToString_Type( + void* OutString, + void* Type) +{ + StaticCast(OutString)->String = FSGCustomWaveformImpl::ToString( + StaticCast(Type)->Type); +} + +void SGCoreImpl_FSGCustomWaveformImpl_ctor( + void* OutCustomWaveformImpl) +{ + StaticCast(OutCustomWaveformImpl)->CustomWaveformImpl = + FSGCustomWaveformImpl{}; +} + +void SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration( + void* OutCustomWaveformImpl, + const float Amplitude, + const float Duration) +{ + StaticCast(OutCustomWaveformImpl)->CustomWaveformImpl = + FSGCustomWaveformImpl{Amplitude, Duration}; +} + +void SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration_Frequency( + void* OutCustomWaveformImpl, + const float Amplitude, + const float Duration, + const float Frequency) +{ + StaticCast(OutCustomWaveformImpl)->CustomWaveformImpl = + FSGCustomWaveformImpl{Amplitude, Duration, Frequency}; +} + +void SGCoreImpl_FSGCustomWaveformImpl_ctor_copy( + void* OutCustomWaveformImpl, + void* Rhs) +{ + StaticCast(OutCustomWaveformImpl)->CustomWaveformImpl = + FSGCustomWaveformImpl(StaticCast(Rhs)->CustomWaveformImpl); +} + +void SGCoreImpl_FSGCustomWaveformImpl_ctor_copy_assignment( + void* OutCustomWaveformImpl, + void* Rhs) +{ + StaticCast(OutCustomWaveformImpl)->CustomWaveformImpl = + StaticCast(Rhs)->CustomWaveformImpl; +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetAmplitude( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetAmplitude(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetAmplitude( + void* Instance, + const float Amplitude) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetAmplitude(Amplitude); +} + +void SGCoreImpl_FSGCustomWaveformImpl_GetWaveType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->CustomWaveformImpl.GetWaveType(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetWaveType( + void* Instance, + void* Type) +{ + StaticCast(Instance)->CustomWaveformImpl.SetWaveType( + StaticCast(Type)->Type); +} + +bool SGCoreImpl_FSGCustomWaveformImpl_IsInfinite( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.IsInfinite(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetInfinite( + void* Instance, + const bool bInfinite) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetInfinite(bInfinite); +} + +int32 SGCoreImpl_FSGCustomWaveformImpl_GetRepeatAmount( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetRepeatAmount(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetRepeatAmount( + void* Instance, + const int32 Amount) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetRepeatAmount(Amount); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetAttackTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetAttackTime(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetAttackTime( + void* Instance, + const float Time) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetAttackTime(Time); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetSustainTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetSustainTime(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetSustainTime( + void* Instance, + const float Time) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetSustainTime(Time); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetDecayTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetDecayTime(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetDecayTime( + void* Instance, + const float Time) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetDecayTime(Time); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyStart( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetFrequencyStart(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyStart( + void* Instance, + const float Frequency) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetFrequencyStart(Frequency); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyEnd( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetFrequencyEnd(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyEnd( + void* Instance, + const float Frequency) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetFrequencyEnd(Frequency); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetFrequencySwitchTime(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchTime( + void* Instance, + const float Time) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetFrequencySwitchTime(Time); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchFactor( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetFrequencySwitchFactor(); +} + +void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchFactor( + void* Instance, + const float Factor) +{ + return StaticCast(Instance)->CustomWaveformImpl.SetFrequencySwitchFactor(Factor); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetEffectTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetEffectTime(); +} + +float SGCoreImpl_FSGCustomWaveformImpl_GetTotalEffectTime( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.GetTotalEffectTime(); +} + +bool SGCoreImpl_FSGCustomWaveformImpl_FrequencyJumps( + void* Instance) +{ + return StaticCast(Instance)->CustomWaveformImpl.FrequencyJumps(); +} + +bool SGCoreImpl_FSGCustomWaveformImpl_Equals( + void* Instance, + void* CustomWaveformImpl) +{ + return StaticCast(Instance)->CustomWaveformImpl.Equals( + StaticCast(CustomWaveformImpl)->CustomWaveformImpl); +} + +void SGCoreImpl_FSGCustomWaveformImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->CustomWaveformImpl.ToString(); +} + +/******************************************************************************* + * SGDeviceImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGDeviceImpl_ParseFirmware( + void* RawFirmware, int32* OutMainVersion, int32* OutSubVersion) +{ + FSGDeviceImpl::ParseFirmware( + StaticCast(RawFirmware)->String, + *OutMainVersion, + *OutSubVersion); +} + +bool SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const int32 ReferenceMain, + const int32 ReferenceSub, + const bool bInclusive) +{ + return FSGDeviceImpl::FirmwareNewerThan( + MyFirmwareMain, + MyFirmwareSub, + ReferenceMain, + ReferenceSub, + bInclusive); +} + +bool SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const int32 ReferenceMain, + const int32 ReferenceSub, + const bool bInclusive) +{ + return FSGDeviceImpl::FirmwareOlderThan( + MyFirmwareMain, + MyFirmwareSub, + ReferenceMain, + ReferenceSub, + bInclusive); +} + +void SGCoreImpl_FSGDeviceImpl_ToString_DeviceType( + void* DeviceType, + void* OutString) +{ + StaticCast(OutString)->String = + FSGDeviceImpl::ToString( + StaticCast(DeviceType)->Type); +} + +void SGCoreImpl_FSGDeviceImpl_ctor( + void* OutSGDeviceImpl) +{ + StaticCast(OutSGDeviceImpl)->SGDeviceImpl = FSGDeviceImpl(); +} + +void SGCoreImpl_FSGDeviceImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGDeviceImpl_ctor_copy( + void* OutSGDeviceImpl, + void* Rhs) +{ + StaticCast(OutSGDeviceImpl)->SGDeviceImpl = + FSGDeviceImpl(StaticCast(Rhs)->SGDeviceImpl); +} + +void SGCoreImpl_FSGDeviceImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->SGDeviceImpl); +} + +void SGCoreImpl_FSGDeviceImpl_ctor_copy_assignment( + void* OutSGDeviceImpl, + void* Rhs) +{ + StaticCast(OutSGDeviceImpl)->SGDeviceImpl = + StaticCast(Rhs)->SGDeviceImpl; +} + +void SGCoreImpl_FSGDeviceImpl_ToSGDeviceImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToSGDeviceImplRef(); +} + +void SGCoreImpl_FSGDeviceImpl_ToBetaDeviceImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToBetaDeviceImplRef(); +} + +void SGCoreImpl_FSGDeviceImpl_ToHapticGloveImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToHapticGloveImplRef(); +} + +void SGCoreImpl_FSGDeviceImpl_ToNova2GloveImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToNova2GloveImplRef(); +} + +void SGCoreImpl_FSGDeviceImpl_ToNovaGloveImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToNovaGloveImplRef(); +} + +void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->ToSenseGloveImplRef(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsABetaDevice(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsAHapticGlove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsAHapticGlove(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsANova2Glove(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsANovaGlove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsANovaGlove(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsASenseGlove( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsASenseGlove(); +} + +void SGCoreImpl_FSGDeviceImpl_AsBetaDevice( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->AsBetaDevice(); +} + +void SGCoreImpl_FSGDeviceImpl_AsHapticGlove( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->AsHapticGlove(); +} + +void SGCoreImpl_FSGDeviceImpl_AsNova2Glove( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->AsNova2Glove(); +} + +void SGCoreImpl_FSGDeviceImpl_AsNovaGlove( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->AsNovaGlove(); +} + +void SGCoreImpl_FSGDeviceImpl_AsSenseGlove( + void* Instance, + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + StaticCast(Instance)->Ptr->AsSenseGlove(); +} + +void SGCoreImpl_FSGDeviceImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGDeviceImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGDeviceImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGDeviceImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGDeviceImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +void SGCoreImpl_FSGDeviceImpl_GetFirmwareString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->GetFirmwareString(); +} + +bool SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + void* Instance, + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->Ptr->FirmwareNewerThan( + MyFirmwareMain, + MyFirmwareSub, + bInclusive); +} + +bool SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + void* Instance, + const int32 MyFirmwareMain, + const int32 MyFirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->Ptr->FirmwareOlderThan( + MyFirmwareMain, + MyFirmwareSub, + bInclusive); +} + +void SGCoreImpl_FSGDeviceImpl_GetAddress( + void* Instance, + void* Address) +{ + StaticCast(Address)->String = + StaticCast(Instance)->Ptr->GetAddress(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsConnected( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsConnected(); +} + +void SGCoreImpl_FSGDeviceImpl_GetConnectionType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetConnectionType(); +} + +int32 SGCoreImpl_FSGDeviceImpl_PacketsPerSecondReceived( + void* Instance) +{ + return StaticCast(Instance)->Ptr->PacketsPerSecondReceived(); +} + +int32 SGCoreImpl_FSGDeviceImpl_PacketsPerSecondSent( + void* Instance) +{ + return StaticCast(Instance)->Ptr->PacketsPerSecondSent(); +} + +int32 SGCoreImpl_FSGDeviceImpl_GetDeviceIndex( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetDeviceIndex(); +} + +void SGCoreImpl_FSGDeviceImpl_SetDeviceIndex( + void* Instance, + const int32 NewIndex) +{ + return StaticCast(Instance)->Ptr->SetDeviceIndex(NewIndex); +} + +bool SGCoreImpl_FSGDeviceImpl_IsWireless( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsWireless(); +} + +bool SGCoreImpl_FSGDeviceImpl_HasBattery( + void* Instance) +{ + return StaticCast(Instance)->Ptr->HasBattery(); +} + +bool SGCoreImpl_FSGDeviceImpl_IsCharging( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsCharging(); +} + +bool SGCoreImpl_FSGDeviceImpl_GetBatteryLevel( + void* Instance, + float* OutLevel) +{ + return StaticCast(Instance)->Ptr->GetBatteryLevel( + *OutLevel); +} + +void SGCoreImpl_FSGDeviceImpl_SetHapticChannels( + void* Instance, + void* Channels) +{ + StaticCast(Instance)->Ptr->SetHapticChannels( + StaticCast(Channels)->HapticChannelInfoImpl); +} + +int32 SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetHapticChannelCount(); +} + +int32 SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount_ChannelType( + void* Instance, + void* ChannelType) +{ + return StaticCast(Instance)->Ptr->GetHapticChannelCount( + StaticCast(ChannelType)->Type); +} + +void SGCoreImpl_FSGDeviceImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGDeviceListImpl.h + ******************************************************************************/ + +int32 SGCoreImpl_FSGDeviceListImpl_ActiveDevices() +{ + return FSGDeviceListImpl::ActiveDevices(); +} + +bool SGCoreImpl_FSGDeviceListImpl_SenseCommRunning() +{ + return FSGDeviceListImpl::SenseCommRunning(); +} + +void SGCoreImpl_FSGDeviceListImpl_Dispose() +{ + FSGDeviceListImpl::Dispose(); +} + +void SGCoreImpl_FSGDeviceListImpl_Reinitialize() +{ + FSGDeviceListImpl::Reinitialize(); +} + +void SGCoreImpl_FSGDeviceListImpl_GetDevices( + void* OutDevices) +{ + StaticCast(OutDevices)->Array = + FSGDeviceListImpl::GetDevices(); +} + +bool SGCoreImpl_FSGDeviceListImpl_GetSensorDataString( + const int32 IpcIndex, + void* IpcAddress, + void* OutString) +{ + return FSGDeviceListImpl::GetSensorDataString( + IpcIndex, + StaticCast(IpcAddress)->String, + StaticCast(OutString)->String); +} + +bool SGCoreImpl_FSGDeviceListImpl_SendHaptics( + const int32 IpcIndex, + void* IpcAddress, + const int32 ChannelIndex, + void* Commands) +{ + return FSGDeviceListImpl::SendHaptics( + IpcIndex, + StaticCast(IpcAddress)->String, + ChannelIndex, + StaticCast(Commands)->String); +} + +void SGCoreImpl_FSGDeviceListImpl_GetDeviceStringAt( + void* OutString, + const int32 IpcIndex, + void* IpcAddress, + const int32 Index) +{ + StaticCast(OutString)->String = FSGDeviceListImpl::GetDeviceStringAt( + IpcIndex, + StaticCast(IpcAddress)->String, Index); +} + +void SGCoreImpl_FSGDeviceListImpl_GetAddress( + void* OutAddress, const int32 IpcIndex, + void* IpcAddress) +{ + StaticCast(OutAddress)->String = FSGDeviceListImpl::GetAddress( + IpcIndex, + StaticCast(IpcAddress)->String); +} + +void SGCoreImpl_FSGDeviceListImpl_GetConnectionType( + void* OutType, + const int32 IpcIndex, + void* IpcAddress) +{ + StaticCast(OutType)->Type = + FSGDeviceListImpl::GetConnectionType( + IpcIndex, + StaticCast(IpcAddress)->String); +} + +bool SGCoreImpl_FSGDeviceListImpl_IsConnected( + const int32 IpcIndex, + void* IpcAddress) +{ + return FSGDeviceListImpl::IsConnected(IpcIndex, StaticCast(IpcAddress)->String); +} + +int32 SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondReceived( + const int32 IpcIndex, + void* IpcAddress) +{ + return FSGDeviceListImpl::PacketsPerSecondReceived(IpcIndex, StaticCast(IpcAddress)->String); +} + +int32 SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondSent( + const int32 IpcIndex, + void* IpcAddress) +{ + return FSGDeviceListImpl::PacketsPerSecondSent(IpcIndex, StaticCast(IpcAddress)->String); +} + +/******************************************************************************* + * SGDeviceModelImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGDeviceModelImpl_ParseFunctions( + void* OutParseFunctions, + const int32 Value, + const int32 Size) +{ + StaticCast(OutParseFunctions)->Array = FSGDeviceModelImpl::ParseFunctions(Value, Size); +} + +void SGCoreImpl_FSGDeviceModelImpl_ParseFirmware( + void* RawFirmware, + int32* OutMainVersion, + int32* OutSubVersion) +{ + FSGDeviceModelImpl::ParseFirmware( + StaticCast(RawFirmware)->String, + *OutMainVersion, + *OutSubVersion); +} + +void SGCoreImpl_FSGDeviceModelImpl_ctor( + void* OutDeviceModelImpl) +{ + StaticCast(OutDeviceModelImpl)->DeviceModelImpl = FSGDeviceModelImpl(); +} + +void SGCoreImpl_FSGDeviceModelImpl_ctor_Id_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + void* OutDeviceModelImpl, + void* Id, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + StaticCast(OutDeviceModelImpl)->DeviceModelImpl = + FSGDeviceModelImpl( + StaticCast(Id)->String, + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion); +} + +void SGCoreImpl_FSGDeviceModelImpl_ctor_copy( + void* OutDeviceModelImpl, + void* Rhs) +{ + StaticCast(OutDeviceModelImpl)->DeviceModelImpl = + FSGDeviceModelImpl(StaticCast(Rhs)->DeviceModelImpl); +} + +void SGCoreImpl_FSGDeviceModelImpl_ctor_copy_assignment( + void* OutDeviceModelImpl, + void* Rhs) +{ + StaticCast(OutDeviceModelImpl)->DeviceModelImpl = + StaticCast(Rhs)->DeviceModelImpl; +} + +void SGCoreImpl_FSGDeviceModelImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->DeviceModelImpl.GetDeviceId(); +} + +void SGCoreImpl_FSGDeviceModelImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->DeviceModelImpl.GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGDeviceModelImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->DeviceModelImpl.GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGDeviceModelImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->DeviceModelImpl.GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGDeviceModelImpl_FirmwareNewerThan( + void* Instance, + const int32 FirmwareMain, + const int32 FirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->DeviceModelImpl.FirmwareNewerThan( + FirmwareMain, + FirmwareSub, + bInclusive); +} + +bool SGCoreImpl_FSGDeviceModelImpl_FirmwareOlderThan( + void* Instance, + const int32 FirmwareMain, + const int32 FirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->DeviceModelImpl.FirmwareOlderThan( + FirmwareMain, + FirmwareSub, + bInclusive); +} + +/******************************************************************************* + * SGHandInterpolatorImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGHandInterpolatorImpl_Deserialize( + void* OutHandInterpolatorImpl, + void* SerializedString, + const bool bRightHanded) +{ + StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = + FSGHandInterpolatorImpl::Deserialize( + StaticCast(SerializedString)->String, + bRightHanded); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_ctor( + void* OutHandInterpolatorImpl) +{ + StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = + FSGHandInterpolatorImpl(); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_ctor_bRightHanded( + void* OutHandInterpolatorImpl, + const bool bRightHanded) +{ + StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = + FSGHandInterpolatorImpl(bRightHanded); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_ctor_copy( + void* OutHandInterpolatorImpl, + void* Rhs) +{ + StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = + FSGHandInterpolatorImpl(StaticCast(Rhs)->HandInterpolatorImpl); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_ctor_copy_assignment( + void* OutHandInterpolatorImpl, + void* Rhs) +{ + StaticCast(OutHandInterpolatorImpl)->HandInterpolatorImpl = + StaticCast(Rhs)->HandInterpolatorImpl; +} + +float SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGFingerMovement_Value_bApplyLimits( + void* Instance, + void* Movement, + const float Value, + const bool bApplyLimits) +{ + return StaticCast(Instance)->HandInterpolatorImpl.CalculateAngle( + StaticCast(Movement)->Movement, + Value, + bApplyLimits); +} + +float SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGThumbMovement_Value_bApplyLimits( + void* Instance, + void* Movement, + const float Value, + const bool bApplyLimits) +{ + return StaticCast(Instance)->HandInterpolatorImpl.CalculateAngle( + StaticCast(Movement)->Movement, + Value, + bApplyLimits); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_InterpolateHandAngles( + void* Instance, + void* OutAngles, + void* Flexions, + void* Abductions, + const float CmcTwist) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->HandInterpolatorImpl.InterpolateHandAngles( + StaticCast(Flexions)->Array, + StaticCast(Abductions)->Array, + CmcTwist); +} + +bool SGCoreImpl_FSGHandInterpolatorImpl_Equals( + void* Instance, + void* HandInterpolatorImpl) +{ + return StaticCast(Instance)->HandInterpolatorImpl.Equals( + StaticCast(HandInterpolatorImpl)->HandInterpolatorImpl); +} + +void SGCoreImpl_FSGHandInterpolatorImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->HandInterpolatorImpl.Serialize(); +} + +/******************************************************************************* + * SGHandLayerImpl.h + ******************************************************************************/ + +bool SGCoreImpl_FSGHandLayerImpl_DeviceConnected( + const bool bRightHanded) +{ + return FSGHandLayerImpl::DeviceConnected( + bRightHanded); +} + +void SGCoreImpl_FSGHandLayerImpl_GetDeviceType( + void* OutDeviceType, + const bool bRightHanded) +{ + StaticCast(OutDeviceType)->Type = + FSGHandLayerImpl::GetDeviceType( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_GetFirstGloveHandedness() +{ + return FSGHandLayerImpl::GetFirstGloveHandedness(); +} + +int32 SGCoreImpl_FSGHandLayerImpl_GlovesConnected() +{ + return FSGHandLayerImpl::GlovesConnected(); +} + +bool SGCoreImpl_FSGHandLayerImpl_GetGloveInstance( + const bool bRightHanded, + void* OutGlove) +{ + return FSGHandLayerImpl::GetGloveInstance( + bRightHanded, + StaticCast(OutGlove)->Ptr); +} + +void SGCoreImpl_FSGHandLayerImpl_GetCalibrationState( + void* OutHapticGloveCalibrationState, + const bool bRightHanded) +{ + StaticCast(OutHapticGloveCalibrationState)->State = + FSGHandLayerImpl::GetCalibrationState(bRightHanded); +} + +void SGCoreImpl_FSGHandLayerImpl_GetCalibrationInstructions( + void* OutString, + const bool bRightHanded) +{ + StaticCast(OutString)->String = + FSGHandLayerImpl::GetCalibrationInstructions( + bRightHanded); +} + +void SGCoreImpl_FSGHandLayerImpl_ResetCalibration( + const bool bRightHanded) +{ + FSGHandLayerImpl::ResetCalibration( + bRightHanded); +} + +void SGCoreImpl_FSGHandLayerImpl_EndCalibration( + const bool bRightHanded) +{ + FSGHandLayerImpl::EndCalibration( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_GetHandPose( + const bool bRightHanded, + void* OutHandPose) +{ + return FSGHandLayerImpl::GetHandPose( + bRightHanded, + StaticCast(OutHandPose)->HandPoseImpl); +} + +void SGCoreImpl_FSGHandLayerImpl_GetWristLocation( + const bool bRightHanded, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation) +{ + FSGHandLayerImpl::GetWristLocation( + bRightHanded, + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void SGCoreImpl_FSGHandLayerImpl_StopAllHaptics( + const bool bRightHanded) +{ + FSGHandLayerImpl::StopAllHaptics( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( + const bool bRightHanded) +{ + return FSGHandLayerImpl::SendHaptics( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform( + const bool bRightHanded, + void* AtLocation) +{ + return FSGHandLayerImpl::SupportsCustomWaveform( + bRightHanded, + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform( + const bool bRightHanded, + void* OutWaveform, + void* Location) +{ + return FSGHandLayerImpl::SendCustomWaveform( + bRightHanded, + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, + const int32 Finger, + const float Level01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_ForceFeedbackLevel( + bRightHanded, + Finger, + Level01, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, + void* Levels01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_ForceFeedbackLevels( + bRightHanded, + StaticCast(Levels01)->Array, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels( + const bool bRightHanded, + void* Levels01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_VibroLevels( + bRightHanded, + StaticCast(Levels01)->Array, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( + const bool bRightHanded, + const int32 Finger, + const float Level01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_VibroLevel( + bRightHanded, + Finger, + Level01, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( + const bool bRightHanded, + void* AtLocation, + const float Level01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_VibroLevel( + bRightHanded, + StaticCast(AtLocation)->Location, + Level01, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze( + const bool bRightHanded) +{ + return FSGHandLayerImpl::SupportsWristSqueeze( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_WristSqueeze( + const bool bRightHanded, + const float SqueezeLevel01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_WristSqueeze( + bRightHanded, + SqueezeLevel01, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_SupportsFlexionLocks( + const bool bRightHanded) +{ + return FSGHandLayerImpl::SupportsFlexionLocks( + bRightHanded); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_FlexionLock( + const bool bRightHanded, + const int32 Finger, + const float Flexion01, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_FlexionLock( + bRightHanded, + Finger, + Flexion01, + bSendImmediate); +} + +bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ClearFlexionLock( + const bool bRightHanded, + const int32 Finger, + const bool bSendImmediate) +{ + return FSGHandLayerImpl::QueueCommand_ClearFlexionLock( + bRightHanded, + Finger, + bSendImmediate); +} + +/******************************************************************************* + * SGHandPoseImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGHandPoseImpl_Deserialize( + void* OutHandPoseImpl, + void* SerializedString) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::Deserialize(StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + void* HandAngles, + const bool bRightHanded, + void* HandDimensions) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::FromHandAngles( + StaticCast(HandAngles)->Array, + bRightHanded, + StaticCast(HandDimensions)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded( + void* OutHandPoseImpl, + void* HandAngles, + const bool bRightHanded) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::FromHandAngles( + StaticCast(HandAngles)->Array, + bRightHanded); +} + +void SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + const bool bRightHanded, + void* HandDimensions) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::DefaultIdle( + bRightHanded, + StaticCast(HandDimensions)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded( + void* OutHandPoseImpl, + const bool bRightHanded) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::DefaultIdle( + bRightHanded); +} + +void SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + const bool bRightHanded, + void* HandDimensions) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::FlatHand( + bRightHanded, + StaticCast(HandDimensions)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded( + void* OutHandPoseImpl, + const bool bRightHanded) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::FlatHand( + bRightHanded); +} + +void SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + const bool bRightHanded, + void* HandDimensions) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::ThumbsUp( + bRightHanded, + StaticCast(HandDimensions)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded( + void* OutHandPoseImpl, + const bool bRightHanded) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::ThumbsUp( + bRightHanded); +} + +void SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + const bool bRightHanded, + void* HandDimensions) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::Fist( + bRightHanded, + StaticCast(HandDimensions)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded( + void* OutHandPoseImpl, + const bool bRightHanded) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl::Fist( + bRightHanded); +} + +void SGCoreImpl_FSGHandPoseImpl_ctor( + void* OutHandPoseImpl) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = FSGHandPoseImpl(); +} + +void SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + void* OutHandPoseImpl, + const bool bRightHanded, + void* JointPositions, + void* JointRotations, + void* HandAngles) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl( + bRightHanded, + StaticCast(JointPositions)->Array, + StaticCast(JointRotations)->Array, + StaticCast(HandAngles)->Array); +} + +void SGCoreImpl_FSGHandPoseImpl_ctor_copy( + void* OutHandPoseImpl, + void* Rhs) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + FSGHandPoseImpl(StaticCast(Rhs)->HandPoseImpl); +} + +void SGCoreImpl_FSGHandPoseImpl_ctor_copy_assignment( + void* OutHandPoseImpl, + void* Rhs) +{ + StaticCast(OutHandPoseImpl)->HandPoseImpl = + StaticCast(Rhs)->HandPoseImpl; +} + +bool SGCoreImpl_FSGHandPoseImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->HandPoseImpl.IsRight(); +} + +void SGCoreImpl_FSGHandPoseImpl_GetJointPositions( + void* Instance, + void* OutPositions) +{ + StaticCast(OutPositions)->Array = + StaticCast(Instance)->HandPoseImpl.GetJointPositions(); +} + +void SGCoreImpl_FSGHandPoseImpl_GetJointRotations( + void* Instance, + void* OutRotations) +{ + StaticCast(OutRotations)->Array = + StaticCast(Instance)->HandPoseImpl.GetJointRotations(); +} + +void SGCoreImpl_FSGHandPoseImpl_GetHandAngles( + void* Instance, + void* OutAngles) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->HandPoseImpl.GetHandAngles(); +} + +bool SGCoreImpl_FSGHandPoseImpl_Equals( + void* Instance, + void* HandPoseImpl) +{ + return StaticCast(Instance)->HandPoseImpl.Equals( + StaticCast(HandPoseImpl)->HandPoseImpl); +} + +float SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_Finger_bClamp01( + void* Instance, + void* Finger, + const bool bClamp01) +{ + return StaticCast(Instance)->HandPoseImpl.GetNormalizedFlexion( + StaticCast(Finger)->Finger, + bClamp01); +} + +void SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_bClamp01( + void* Instance, + void* OutFlexion, + const bool bClamp01) +{ + StaticCast(OutFlexion)->Array = + StaticCast(Instance)->HandPoseImpl.GetNormalizedFlexion( + bClamp01); +} + +void SGCoreImpl_FSGHandPoseImpl_ToString( + void* Instance, + void* OutString, + const bool bShortFormat) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->HandPoseImpl.ToString(bShortFormat); +} + +void SGCoreImpl_FSGHandPoseImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->HandPoseImpl.Serialize(); +} + +/******************************************************************************* + * SGHapticChannelInfoImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGHapticChannelInfoImpl_GenerateAddress( + void* OutString, + const int32 DeviceIndex, + const int32 ChannelIndex) +{ + StaticCast(OutString)->String = + FSGHapticChannelInfoImpl::GenerateAddress(DeviceIndex, ChannelIndex); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_Parse( + void* OutHapticChannelInfoImpl, + void* IpcString) +{ + StaticCast(OutHapticChannelInfoImpl)->HapticChannelInfoImpl = + FSGHapticChannelInfoImpl::Parse(StaticCast(IpcString)->String); +} + +int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamingType() +{ + return FSGHapticChannelInfoImpl::GetStreamingType(); +} + +int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetType() +{ + return FSGHapticChannelInfoImpl::GetFireAndForgetType(); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_ctor( + void* OutHapticChannelInfoImpl) +{ + StaticCast(OutHapticChannelInfoImpl)->HapticChannelInfoImpl = + FSGHapticChannelInfoImpl(); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_StreamIndex_FireAndForgetIndex( + void* OutHapticChannelInfoImpl, + void* StreamIndex, + void* FireAndForgetIndex) +{ + StaticCast(OutHapticChannelInfoImpl)->HapticChannelInfoImpl = + FSGHapticChannelInfoImpl( + StaticCast(StreamIndex)->Array, + StaticCast(FireAndForgetIndex)->Array); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_copy( + void* OutHapticChannelInfoImpl, + void* Rhs) +{ + StaticCast(OutHapticChannelInfoImpl)->HapticChannelInfoImpl = + FSGHapticChannelInfoImpl(StaticCast(Rhs)->HapticChannelInfoImpl); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_copy_assignment( + void* OutHapticChannelInfoImpl, + void* Rhs) +{ + StaticCast(OutHapticChannelInfoImpl)->HapticChannelInfoImpl = + StaticCast(Rhs)->HapticChannelInfoImpl; +} + +int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamChannelCount( + void* Instance) +{ + return StaticCast(Instance)->HapticChannelInfoImpl.GetStreamChannelCount(); +} + +int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetChannelCount( + void* Instance) +{ + return + StaticCast(Instance)->HapticChannelInfoImpl.GetFireAndForgetChannelCount(); +} + +int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetTotalChannelCount( + void* Instance) +{ + return StaticCast(Instance)->HapticChannelInfoImpl.GetTotalChannelCount(); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_GetAddress_Unguarded( + void* Instance, + void* OutString, + void* Type, + const int32 TypeIndex) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->HapticChannelInfoImpl.GetAddress_Unguarded( + StaticCast(Type)->Type, + TypeIndex); + +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_GetIpcParams_Unguarded( + void* Instance, + void* Type, + const int32 TypeIndex, + int32* OutIndex, + void* OutAddressString) +{ + StaticCast(Instance)->HapticChannelInfoImpl.GetIpcParams_Unguarded( + StaticCast(Type)->Type, + TypeIndex, + *OutIndex, + StaticCast(OutAddressString)->String); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_RegenerateAddresses( + void* Instance, + const int32 ForDeviceIndex) +{ + StaticCast(Instance)->HapticChannelInfoImpl.RegenerateAddresses( + ForDeviceIndex); +} + +void SGCoreImpl_FSGHapticChannelInfoImpl_GetAllAddresses( + void* Instance, + void* OutArray) +{ + StaticCast(OutArray)->Array = + StaticCast(Instance)->HapticChannelInfoImpl.GetAllAddresses(); +} + +/******************************************************************************* + * SGHapticGloveImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGHapticGloveImpl_GetHapticGloves( + void* OutGloves, + const bool bConnectedOnly) +{ + StaticCast(OutGloves)->Array = + FSGHapticGloveImpl::GetHapticGloves(bConnectedOnly); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetGlove_OutGlove( + void* OutGlove) +{ + return FSGHapticGloveImpl::GetGlove( + StaticCast(OutGlove)->Ptr); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetGlove_bRightHanded_OutGlove( + const bool bRightHanded, + void* OutGlove) +{ + return FSGHapticGloveImpl::GetGlove( + bRightHanded, + StaticCast(OutGlove)->Ptr); +} + +void SGCoreImpl_FSGHapticGloveImpl_ToString_State( + void* OutString, + void* State) +{ + StaticCast(OutString)->String = + FSGHapticGloveImpl::ToString( + StaticCast(State)->State); +} + +void SGCoreImpl_FSGHapticGloveImpl_ToString_Location( + void* OutString, + void* Location) +{ + StaticCast(OutString)->String = + FSGHapticGloveImpl::ToString( + StaticCast(Location)->Location); +} + +void SGCoreImpl_FSGHapticGloveImpl_ctor( + void* OutHapticGloveImpl) +{ + StaticCast(OutHapticGloveImpl)->HapticGloveImpl = FSGHapticGloveImpl(); +} + +void SGCoreImpl_FSGHapticGloveImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGHapticGloveImpl_ctor_copy( + void* OutHapticGloveImpl, + void* Rhs) +{ + StaticCast(OutHapticGloveImpl)->HapticGloveImpl = + FSGHapticGloveImpl(StaticCast(Rhs)->HapticGloveImpl); +} + +void SGCoreImpl_FSGHapticGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->HapticGloveImpl); +} + +void SGCoreImpl_FSGHapticGloveImpl_ctor_copy_assignment( + void* OutHapticGloveImpl, + void* Rhs) +{ + StaticCast(OutHapticGloveImpl)->HapticGloveImpl = + StaticCast(Rhs)->HapticGloveImpl; +} + +void SGCoreImpl_FSGHapticGloveImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGHapticGloveImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGHapticGloveImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGHapticGloveImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsRight(); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetImuRotation( + void* Instance, + void* OutImu) +{ + return StaticCast(Instance)->Ptr->GetImuRotation( + StaticCast(OutImu)->Quat); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandGeometry_OutHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose) +{ + return StaticCast(Instance)->Ptr->GetHandPose( + StaticCast(HandGeometry)->BasicHandModelImpl, + StaticCast(OutHandPose)->HandPoseImpl); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetHandPose_OutHandPose( + void* Instance, + void* OutHandPose) +{ + return StaticCast(Instance)->Ptr->GetHandPose( + StaticCast(OutHandPose)->HandPoseImpl); +} + +bool SGCoreImpl_FSGHapticGloveImpl_GetHandAngles_OutHandAngles( + void* Instance, + void* OutHandAngles) +{ + return StaticCast(Instance)->Ptr->GetHandAngles( + StaticCast(OutHandAngles)->Array); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetHandGeometry( + void* Instance, + void* OutBasicHandModel) +{ + StaticCast(OutBasicHandModel)->BasicHandModelImpl = + StaticCast(Instance)->Ptr->GetHandGeometry(); +} + +void SGCoreImpl_FSGHapticGloveImpl_SetHandGeometry( + void* Instance, + void* HandGeometry) +{ + StaticCast(Instance)->Ptr->SetHandGeometry( + StaticCast(HandGeometry)->BasicHandModelImpl); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState) +{ + StaticCast(OutHapticGloveCalibrationState)->State = + StaticCast(Instance)->Ptr->GetCalibrationState(); +} + +void SGCoreImpl_FSGHapticGloveImpl_EndCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->EndCalibration(); +} + +void SGCoreImpl_FSGHapticGloveImpl_ResetCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->ResetCalibration(); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetCalibrationInstruction( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->GetCalibrationInstruction(); +} + +void SGCoreImpl_FSGHapticGloveImpl_StopHaptics( + void* Instance) +{ + return StaticCast(Instance)->Ptr->StopHaptics(); +} + +void SGCoreImpl_FSGHapticGloveImpl_StopVibrations( + void* Instance) +{ + return StaticCast(Instance)->Ptr->StopVibrations(); +} + +bool SGCoreImpl_FSGHapticGloveImpl_SendHaptics( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendHaptics(); +} + +bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation) +{ + return StaticCast(Instance)->Ptr->SupportsCustomWaveform( + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); +} + +bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevels( + StaticCast(Levels01)->Array); +} + +bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevel( + void* Instance, + const int32 Finger, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevel( + Finger, + Level01); +} + +bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels( + void* Instance, + void* Levels01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Levels01)->Array); +} + +bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation) +{ + StaticCast(Instance)->Ptr->GetWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void SGCoreImpl_FSGHapticGloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation) +{ + StaticCast(Instance)->Ptr->GetGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGHapticGloveImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGInterpolationSetImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGInterpolationSetImpl_Deserialize( + void* OutInterpolationSetImpl, + void* SerializedString) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + FSGInterpolationSetImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ctor( + void* OutInterpolationSetImpl) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + FSGInterpolationSetImpl(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2( + void* OutInterpolationSetImpl, + const float From1, + const float From2, + const float To1, + const float To2) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + FSGInterpolationSetImpl( + From1, + From2, + To1, + To2); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2_Min_Max( + void* OutInterpolationSetImpl, + const float From1, + const float From2, + const float To1, + const float To2, + const float Min, + const float Max) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + FSGInterpolationSetImpl( + From1, + From2, + To1, + To2, + Min, + Max); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ctor_copy( + void* OutInterpolationSetImpl, + void* Rhs) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + FSGInterpolationSetImpl(StaticCast(Rhs)->InterpolationSetImpl); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ctor_copy_assignment( + void* OutInterpolationSetImpl, + void* Rhs) +{ + StaticCast(OutInterpolationSetImpl)->InterpolationSetImpl = + StaticCast(Rhs)->InterpolationSetImpl; +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetX0( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetX0(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetX0( + void* Instance, + const float X0) +{ + return StaticCast(Instance)->InterpolationSetImpl.SetX0(X0); +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetX1( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetX1(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetX1( + void* Instance, + const float X1) +{ + return StaticCast(Instance)->InterpolationSetImpl.SetX1(X1); +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetY0( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetY0(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetY0( + void* Instance, + const float Y0) +{ + return StaticCast(Instance)->InterpolationSetImpl.SetY0(Y0); +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetY1( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetY1(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetY1( + void* Instance, + const float Y1) +{ + return StaticCast(Instance)->InterpolationSetImpl.SetY1(Y1); +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetMin( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetMin(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetMin( + void* Instance, + const float Min) +{ + StaticCast(Instance)->InterpolationSetImpl.SetMin(Min); +} + +float SGCoreImpl_FSGInterpolationSetImpl_GetMax( + void* Instance) +{ + return StaticCast(Instance)->InterpolationSetImpl.GetMax(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_SetMax( + void* Instance, + const float Max) +{ + StaticCast(Instance)->InterpolationSetImpl.SetMax(Max); +} + +float SGCoreImpl_FSGInterpolationSetImpl_Get( + void* Instance, + const float Value, + const bool bLimit, + const bool bNormalizeAngle) +{ + return StaticCast(Instance)->InterpolationSetImpl.Get( + Value, + bLimit, + bNormalizeAngle); +} + +bool SGCoreImpl_FSGInterpolationSetImpl_Equals( + void* Instance, + void* InterpolationSetImpl) +{ + return StaticCast(Instance)->InterpolationSetImpl.Equals( + StaticCast(InterpolationSetImpl)->InterpolationSetImpl); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->InterpolationSetImpl.ToString(); +} + +void SGCoreImpl_FSGInterpolationSetImpl_ToString_bLimits( + void* Instance, + void* OutString, + const bool bLimits) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->InterpolationSetImpl.ToString(bLimits); +} + +void SGCoreImpl_FSGInterpolationSetImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->InterpolationSetImpl.Serialize(); +} + +/******************************************************************************* + * SGJointKinematicsImpl.h + ******************************************************************************/ + +bool +SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_StartPosition_StartRotation_JointLengths_JointAngles_OutNewPositions_OutNewRotations( + void* StartPosition, + void* StartRotation, + void* JointLengths, + void* JointAngles, + void* OutNewPositions, + void* OutNewRotations) +{ + return FSGJointKinematicsImpl::ForwardKinematics( + StaticCast(StartPosition)->Vector, + StaticCast(StartRotation)->Quat, + StaticCast(JointLengths)->Array, + StaticCast(JointAngles)->Array, + StaticCast(OutNewPositions)->Array, + StaticCast(OutNewRotations)->Array); +} + +bool SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_Profile_Finger_JointAngles_OutNewPositions_OutNewRotations( + void* Profile, + void* Finger, + void* JointAngles, + void* OutNewPositions, + void* OutNewRotations) +{ + return FSGJointKinematicsImpl::ForwardKinematics( + StaticCast(Profile)->BasicHandModelImpl, + StaticCast(Finger)->Finger, + StaticCast(JointAngles)->Array, + StaticCast(OutNewPositions)->Array, + StaticCast(OutNewRotations)->Array); +} + +/******************************************************************************* + * SGLibraryImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGLibraryImpl_Version( + void* OutVersion) +{ + StaticCast(OutVersion)->String = FSGLibraryImpl::Version(); +} + +void SGCoreImpl_FSGLibraryImpl_GetBackendType( + void* OutType) +{ + StaticCast(OutType)->Type = FSGLibraryImpl::GetBackendType(); +} + +void SGCoreImpl_FSGLibraryImpl_BackendVersion( + void* OutVersion) +{ + StaticCast(OutVersion)->String = FSGLibraryImpl::BackendVersion(); +} + +void SGCoreImpl_FSGLibraryImpl_SGConnectVersion( + void* OutVersion) +{ + StaticCast(OutVersion)->String = FSGLibraryImpl::SGConnectVersion(); +} + +/******************************************************************************* + * SGNova2GloveImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGNova2GloveImpl_Parse( + void* OutNova2GloveImpl, + void* ConstantsString) +{ + StaticCast(OutNova2GloveImpl)->Ptr = + FSGNova2GloveImpl::Parse(StaticCast(ConstantsString)->String); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetNova2Gloves( + void* OutGloves) +{ + StaticCast(OutGloves)->Array = + FSGNova2GloveImpl::GetNova2Gloves(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_OutGlove( + void* OutGlove) +{ + return FSGNova2GloveImpl::GetNova2Glove( + StaticCast(OutGlove)->Nova2GloveImpl); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_bRightHanded_OutGlove( + const bool bRightHanded, + void* OutGlove) +{ + return FSGNova2GloveImpl::GetNova2Glove( + bRightHanded, + StaticCast(OutGlove)->Nova2GloveImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* HardwareVersion, + void* OutGlovePosition, + void* OutGloveRotation) +{ + FSGNova2GloveImpl::CalculateGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(HardwareVersion)->String, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGNova2GloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* HardwareVersion, + void* OutWristPosition, + void* OutWristRotation) +{ + FSGNova2GloveImpl::CalculateWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(HardwareVersion)->String, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +ANSICHAR SGCoreImpl_FSGNova2GloveImpl_GetStreamByte() +{ + return FSGNova2GloveImpl::GetStreamByte(); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetNova2SensorRanges( + void* OutNova2SensorRanges) +{ + StaticCast(OutNova2SensorRanges)->Array = + FSGNova2GloveImpl::GetNova2SensorRanges(); +} + +void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData( + void* OutNormalizedValues, + void* SensorData) +{ + StaticCast(OutNormalizedValues)->Array = + FSGNova2GloveImpl::ToNormalizedValues( + StaticCast(SensorData)->Nova2GloveSensorDataImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + void* OutNormalizedValues, + void* SensorData, + void* OutSensorNormalizer) +{ + StaticCast(OutNormalizedValues)->Array = + FSGNova2GloveImpl::ToNormalizedValues( + StaticCast(SensorData)->Nova2GloveSensorDataImpl, + StaticCast(OutSensorNormalizer)->SensorNormalizationImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_CalculateHandAngles( + void* OutHandAngles, + void* NormalizedValues, + void* Interpolator, + const bool bInfluenceIndex) +{ + StaticCast(OutHandAngles)->Array = + FSGNova2GloveImpl::CalculateHandAngles( + StaticCast(NormalizedValues)->Array, + StaticCast(Interpolator)->HandInterpolatorImpl, + bInfluenceIndex); +} + +void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedAngles( + void* OutNormalizedAngles, + void* NormalizedData, + void* GloveInfo) +{ + StaticCast(OutNormalizedAngles)->Array = + FSGNova2GloveImpl::ToNormalizedAngles( + StaticCast(NormalizedData)->Array, + StaticCast(GloveInfo)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor( + void* OutNova2GloveImpl) +{ + StaticCast(OutNova2GloveImpl)->Nova2GloveImpl = FSGNova2GloveImpl{}; +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo( + void* OutNova2GloveImpl, + void* DeviceInfo) +{ + StaticCast(OutNova2GloveImpl)->Nova2GloveImpl = + FSGNova2GloveImpl{ + StaticCast(DeviceInfo)->NovaGloveInfoImpl}; +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo_MakeShared( + void* OutSharedPtr, + void* DeviceInfo) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared( + StaticCast(DeviceInfo)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_copy( + void* OutNova2GloveImpl, + void* Rhs) +{ + StaticCast(OutNova2GloveImpl)->Nova2GloveImpl = + FSGNova2GloveImpl(StaticCast(Rhs)->Nova2GloveImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->Nova2GloveImpl); +} + +void SGCoreImpl_FSGNova2GloveImpl_ctor_copy_assignment( + void* OutNova2GloveImpl, + void* Rhs) +{ + StaticCast(OutNova2GloveImpl)->Nova2GloveImpl = + StaticCast(Rhs)->Nova2GloveImpl; +} + +void SGCoreImpl_FSGNova2GloveImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGNova2GloveImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGNova2GloveImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_HasBattery( + void* Instance) +{ + return StaticCast(Instance)->Ptr->HasBattery(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_IsCharging( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsCharging(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetBatteryLevel( + void* Instance, + float* OutBatteryLevel) +{ + return StaticCast(Instance)->Ptr->GetBatteryLevel( + *OutBatteryLevel); +} + +bool SGCoreImpl_FSGNova2GloveImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsRight(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetImuRotation( + void* Instance, + void* OutImu) +{ + return StaticCast(Instance)->Ptr->GetImuRotation( + StaticCast(OutImu)->Quat); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose) +{ + return StaticCast(Instance)->Ptr->GetHandPose( + StaticCast(HandGeometry)->BasicHandModelImpl, + StaticCast(OutHandPose)->HandPoseImpl); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles) +{ + return StaticCast(Instance)->Ptr->GetHandAngles( + StaticCast(OutHandAngles)->Array); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState) +{ + StaticCast(OutHapticGloveCalibrationState)->State = + StaticCast(Instance)->Ptr->GetCalibrationState(); +} + +void SGCoreImpl_FSGNova2GloveImpl_EndCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->EndCalibration(); +} + +void SGCoreImpl_FSGNova2GloveImpl_ResetCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->ResetCalibration(); +} + +void SGCoreImpl_FSGNova2GloveImpl_StopHaptics( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopHaptics(); +} + +void SGCoreImpl_FSGNova2GloveImpl_StopVibrations( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopVibrations(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SendHaptics( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendHaptics(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation) +{ + return StaticCast(Instance)->Ptr->SupportsCustomWaveform( + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevels( + StaticCast(Levels01)->Array); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevel( + void* Instance, + const int32 Finger, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevel( + Finger, + Level01); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + +bool SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel( + void* Instance, + const float SqueezeLevel01) +{ + return StaticCast(Instance)->Ptr->QueueSqueezeLevel( + SqueezeLevel01); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation) +{ + StaticCast(Instance)->Ptr->GetGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation) +{ + StaticCast(Instance)->Ptr->GetWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void SGCoreImpl_FSGNova2GloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo) +{ + StaticCast(OutGloveInfo)->NovaGloveInfoImpl = + StaticCast(Instance)->Ptr->GetGloveInfo(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_DoesIndexInfluenceOthers( + void* Instance) +{ + return StaticCast(Instance)->Ptr->DoesIndexInfluenceOthers(); +} + +void SGCoreImpl_FSGNova2GloveImpl_SetIndexInfluencesOthers( + void* Instance, + const bool bInfluenceOthers) +{ + StaticCast(Instance)->Ptr->SetIndexInfluencesOthers( + bInfluenceOthers); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SupportsOnBoardNormalization( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SupportsOnBoardNormalization(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetSensorData( + void* Instance, + void* OutSensorData) +{ + return StaticCast(Instance)->Ptr->GetSensorData( + StaticCast(OutSensorData)->Nova2GloveSensorDataImpl); +} + +bool SGCoreImpl_FSGNova2GloveImpl_GetNormalizedInput( + void* Instance, + void* OutNormalizedValues) +{ + return StaticCast(Instance)->Ptr->GetNormalizedInput( + StaticCast(OutNormalizedValues)->Array); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SendRawData( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendRawData(); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SendNormalizedData( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendNormalizedData(); +} + +void SGCoreImpl_FSGNova2GloveImpl_ToNovaMotor( + void* Instance, + void* OutNova2Motor, + void* Location) +{ + StaticCast(OutNova2Motor)->Motor = + StaticCast(Instance)->Ptr->ToNovaMotor( + StaticCast(Location)->Location); +} + +int32 SGCoreImpl_FSGNova2GloveImpl_ChannelIndex( + void* Instance, + void* Motor) +{ + return StaticCast(Instance)->Ptr->ChannelIndex( + StaticCast(Motor)->Motor); +} + +void SGCoreImpl_FSGNova2GloveImpl_ValidateWaveform( + void* Instance, + void* OutWaveform, + void* Motor) +{ + return StaticCast(Instance)->Ptr->ValidateWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Motor)->Motor); +} + +bool SGCoreImpl_FSGNova2GloveImpl_SendCustomWaveform_Nova2( + void* Instance, + void* OutWaveform, + void* Motor, + const bool bValidateWaveform) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform_Nova2( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Motor)->Motor, + bValidateWaveform); +} + +void SGCoreImpl_FSGNova2GloveImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGNova2GloveSensorDataImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_Parse( + void* OutNova2GloveSensorDataImpl, + void* RawData, + void* GloveInfo) +{ + StaticCast(OutNova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl = + FSGNova2GloveSensorDataImpl::Parse( + StaticCast(RawData)->String, + StaticCast(GloveInfo)->NovaGloveInfoImpl); +} + +void +SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + void* OutNova2GloveSensorDataImpl, + void* NormalizationState, + void* Values, + const int32 ParsedValues, + void* ImuRotation, + const bool bImuParsed, + const float BatteryLevel, + const bool bCharging) +{ + StaticCast(OutNova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl = + FSGNova2GloveSensorDataImpl( + StaticCast(NormalizationState)->State, + StaticCast(Values)->Array, + ParsedValues, + StaticCast(ImuRotation)->Quat, + bImuParsed, + BatteryLevel, + bCharging); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor( + void* OutNova2GloveSensorDataImpl) +{ + StaticCast(OutNova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl = + FSGNova2GloveSensorDataImpl(); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_copy( + void* OutNova2GloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutNova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl = + FSGNova2GloveSensorDataImpl(StaticCast(Rhs)->Nova2GloveSensorDataImpl); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_copy_assignment( + void* OutNova2GloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutNova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl = + StaticCast(Rhs)->Nova2GloveSensorDataImpl; +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorState( + void* Instance, + void* OutNormalizationState) +{ + StaticCast(OutNormalizationState)->State = + StaticCast(Instance)->Nova2GloveSensorDataImpl.GetSensorState(); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValues( + void* Instance, + void* OutValues) +{ + StaticCast(OutValues)->Array = + StaticCast(Instance)->Nova2GloveSensorDataImpl.GetSensorValues(); +} + +float SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValue( + void* Instance, + void* Finger, + void* Location) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.GetSensorValue( + StaticCast(Finger)->Finger, + StaticCast(Location)->Location); +} + +int32 SGCoreImpl_FSGNova2GloveSensorDataImpl_GetParsedValues( + void* Instance) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.GetParsedValues(); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = + StaticCast(Instance)->Nova2GloveSensorDataImpl.GetImuRotation(); +} + +bool SGCoreImpl_FSGNova2GloveSensorDataImpl_IsImuParsed( + void* Instance) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.IsImuParsed(); +} + +float SGCoreImpl_FSGNova2GloveSensorDataImpl_GetBatteryLevel( + void* Instance) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.GetBatteryLevel(); +} + +bool SGCoreImpl_FSGNova2GloveSensorDataImpl_IsCharging( + void* Instance) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.IsCharging(); +} + +bool SGCoreImpl_FSGNova2GloveSensorDataImpl_Equals( + void* Instance, + void* Nova2GloveSensorDataImpl) +{ + return StaticCast(Instance)->Nova2GloveSensorDataImpl.Equals( + StaticCast(Nova2GloveSensorDataImpl)->Nova2GloveSensorDataImpl); +} + +void SGCoreImpl_FSGNova2GloveSensorDataImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Nova2GloveSensorDataImpl.ToString(); +} + +/******************************************************************************* + * SGNovaGloveImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGNovaGloveImpl_Parse( + void* OutNovaGloveImpl, + void* ConstantsString) +{ + StaticCast(OutNovaGloveImpl)->Ptr = + FSGNovaGloveImpl::Parse(StaticCast(ConstantsString)->String); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetNovaGloves( + void* OutGloves) +{ + StaticCast(OutGloves)->Array = + FSGNovaGloveImpl::GetNovaGloves(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_OutGlove( + void* OutGlove) +{ + return FSGNovaGloveImpl::GetNovaGlove( + StaticCast(OutGlove)->NovaGloveImpl); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_bRightHanded_OutGlove( + const bool bRightHanded, + void* OutGlove) +{ + return FSGNovaGloveImpl::GetNovaGlove( + bRightHanded, + StaticCast(OutGlove)->NovaGloveImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* OutGlovePosition, + void* OutGloveRotation) +{ + FSGNovaGloveImpl::CalculateGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGNovaGloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* OutWristPosition, + void* OutWristRotation) +{ + FSGNovaGloveImpl::CalculateWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetHapticsByte() +{ + return FSGNovaGloveImpl::GetHapticsByte(); +} + +ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetThresholdsByte() +{ + return FSGNovaGloveImpl::GetThresholdsByte(); +} + +ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetIgnoreThresholdsByte() +{ + return FSGNovaGloveImpl::GetIgnoreThresholdsByte(); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetNovaSensorRanges( + void* OutNovaSensorRanges) +{ + StaticCast(OutNovaSensorRanges)->Array = + FSGNovaGloveImpl::GetNovaSensorRanges(); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData( + void* OutNormalizedValues, + void* SensorData) +{ + StaticCast(OutNormalizedValues)->Array = + FSGNovaGloveImpl::ToNormalizedValues( + StaticCast(SensorData)->NovaGloveSensorDataImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + void* OutNormalizedValues, + void* SensorData, + void* OutSensorNormalizer) +{ + StaticCast(OutNormalizedValues)->Array = + FSGNovaGloveImpl::ToNormalizedValues( + StaticCast(SensorData)->NovaGloveSensorDataImpl, + StaticCast(OutSensorNormalizer)->SensorNormalizationImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_CalculateHandAngles( + void* OutHandAngles, + void* NormalizedValues, + void* Interpolator) +{ + StaticCast(OutHandAngles)->Array = + FSGNovaGloveImpl::CalculateHandAngles( + StaticCast(NormalizedValues)->Array, + StaticCast(Interpolator)->HandInterpolatorImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsFlexion( + void* OutString, + void* Thresholds) +{ + StaticCast(OutString)->String = + FSGNovaGloveImpl::ToNovaCommandAsFlexion( + StaticCast(Thresholds)->ThresholdCommandImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsRaw( + void* OutString, + void* Thresholds, + void* Interpolator) +{ + StaticCast(OutString)->String = + FSGNovaGloveImpl::ToNovaCommandAsRaw( + StaticCast(Thresholds)->ThresholdCommandImpl, + StaticCast(Interpolator)->SensorNormalizationImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor( + void* OutNovaGloveImpl) +{ + StaticCast(OutNovaGloveImpl)->NovaGloveImpl = FSGNovaGloveImpl{}; +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo( + void* OutNovaGloveImpl, + void* DeviceInfo) +{ + StaticCast(OutNovaGloveImpl)->NovaGloveImpl = + FSGNovaGloveImpl{ + StaticCast(DeviceInfo)->NovaGloveInfoImpl}; +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo_MakeShared( + void* OutSharedPtr, + void* DeviceInfo) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared( + StaticCast(DeviceInfo)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_copy( + void* OutNovaGloveImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveImpl)->NovaGloveImpl = + FSGNovaGloveImpl(StaticCast(Rhs)->NovaGloveImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->NovaGloveImpl); +} + +void SGCoreImpl_FSGNovaGloveImpl_ctor_copy_assignment( + void* OutNovaGloveImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveImpl)->NovaGloveImpl = + StaticCast(Rhs)->NovaGloveImpl; +} + +void SGCoreImpl_FSGNovaGloveImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGNovaGloveImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGNovaGloveImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +void SGCoreImpl_FSGNovaGloveImpl_SetDeviceIndex( + void* Instance, + const int32 Index) +{ + StaticCast(Instance)->Ptr->SetDeviceIndex(Index); +} + +bool SGCoreImpl_FSGNovaGloveImpl_HasBattery( + void* Instance) +{ + return StaticCast(Instance)->Ptr->HasBattery(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_IsCharging( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsCharging(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetBatteryLevel( + void* Instance, + float* OutBatteryLevel) +{ + return StaticCast(Instance)->Ptr->GetBatteryLevel( + *OutBatteryLevel); +} + +bool SGCoreImpl_FSGNovaGloveImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsRight(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetImuRotation( + void* Instance, + void* OutImu) +{ + return StaticCast(Instance)->Ptr->GetImuRotation( + StaticCast(OutImu)->Quat); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose) +{ + return StaticCast(Instance)->Ptr->GetHandPose( + StaticCast(HandGeometry)->BasicHandModelImpl, + StaticCast(OutHandPose)->HandPoseImpl); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles) +{ + return StaticCast(Instance)->Ptr->GetHandAngles( + StaticCast(OutHandAngles)->Array); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState) +{ + StaticCast(OutHapticGloveCalibrationState)->State = + StaticCast(Instance)->Ptr->GetCalibrationState(); +} + +void SGCoreImpl_FSGNovaGloveImpl_EndCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->EndCalibration(); +} + +void SGCoreImpl_FSGNovaGloveImpl_ResetCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->ResetCalibration(); +} + +void SGCoreImpl_FSGNovaGloveImpl_StopHaptics( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopHaptics(); +} + +void SGCoreImpl_FSGNovaGloveImpl_StopVibrations( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopVibrations(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SendHaptics( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendHaptics(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation) +{ + return StaticCast(Instance)->Ptr->SupportsCustomWaveform( + StaticCast(AtLocation)->Location); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Location)->Location); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevels( + StaticCast(Levels01)->Array); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel( + void* Instance, + const int32 Finger, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevel( + Finger, + Level01); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation) +{ + StaticCast(Instance)->Ptr->GetGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation) +{ + StaticCast(Instance)->Ptr->GetWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void SGCoreImpl_FSGNovaGloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo) +{ + StaticCast(OutGloveInfo)->NovaGloveInfoImpl = + StaticCast(Instance)->Ptr->GetGloveInfo(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SupportsThresholds( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SupportsThresholds(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SupportsCustomWaveforms( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SupportsCustomWaveforms(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SupportsOnBoardNormalization( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SupportsOnBoardNormalization(); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetSensorData( + void* Instance, + void* OutSensorData) +{ + return StaticCast(Instance)->Ptr->GetSensorData( + StaticCast(OutSensorData)->NovaGloveSensorDataImpl); +} + +bool SGCoreImpl_FSGNovaGloveImpl_GetNormalizedInput( + void* Instance, + void* OutNormalizedValues) +{ + return StaticCast(Instance)->Ptr->GetNormalizedInput( + StaticCast(OutNormalizedValues)->Array); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand( + void* Instance, + void* OutString, + void* ForceFeedbackLevels, + void* BuzzLevels, + const float WristLevel) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToNovaCommand( + StaticCast(ForceFeedbackLevels)->Array, + StaticCast(BuzzLevels)->Array, + WristLevel); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude( + void* Instance, + const int32 Finger, + const float Amplitude) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + Finger, + Amplitude); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueWristLevel( + void* Instance, + const float Amplitude) +{ + return StaticCast(Instance)->Ptr->QueueWristLevel( + Amplitude); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToNovaMotor( + void* Instance, + void* OutNovaMotor, + void* Location) +{ + StaticCast(OutNovaMotor)->Motor = + StaticCast(Instance)->Ptr->ToNovaMotor( + StaticCast(Location)->Location); +} + +int32 SGCoreImpl_FSGNovaGloveImpl_ChannelIndex( + void* Instance, + void* Motor) +{ + return StaticCast(Instance)->Ptr->ChannelIndex( + StaticCast(Motor)->Motor); +} + +void SGCoreImpl_FSGNovaGloveImpl_ValidateWaveform( + void* Instance, + void* OutWaveform, + void* Motor) +{ + return StaticCast(Instance)->Ptr->ValidateWaveform( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Motor)->Motor); +} + +bool SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform_Nova( + void* Instance, + void* OutWaveform, + void* Motor, + const bool bValidateWaveform) +{ + return StaticCast(Instance)->Ptr->SendCustomWaveform_Nova( + StaticCast(OutWaveform)->CustomWaveformImpl, + StaticCast(Motor)->Motor, + bValidateWaveform); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueThresholdCommand_Flexion( + void* Instance, + const int32 Finger, + const float FlexionThreshold) +{ + return StaticCast(Instance)->Ptr->QueueThresholdCommand_Flexion( + Finger, + FlexionThreshold); +} + +bool SGCoreImpl_FSGNovaGloveImpl_QueueClearThreshold( + void* Instance, + const int32 Finger) +{ + return StaticCast(Instance)->Ptr->QueueClearThreshold( + Finger); +} + +void SGCoreImpl_FSGNovaGloveImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGNovaGloveInfoImpl.h + ******************************************************************************/ + +bool SGCoreImpl_FSGNovaGloveInfoImpl_Parse( + void* ConstantsString, + void* OutGloveInfo) +{ + return FSGNovaGloveInfoImpl::Parse( + StaticCast(ConstantsString)->String, + StaticCast(OutGloveInfo)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_Deserialize( + void* OutNovaGloveInfoImpl, + void* SerializedString) +{ + StaticCast(OutNovaGloveInfoImpl)->NovaGloveInfoImpl = + FSGNovaGloveInfoImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_ctor( + void* OutNovaGloveInfoImpl) +{ + StaticCast(OutNovaGloveInfoImpl)->NovaGloveInfoImpl = FSGNovaGloveInfoImpl(); +} + +void +SGCoreImpl_FSGNovaGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_ImuCorrection_NumberOfSensors( + void* OutNovaGloveInfoImpl, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion, + const bool bRightHanded, + void* ImuCorrection, + const int32 NumberOfSensors) +{ + StaticCast(OutNovaGloveInfoImpl)->NovaGloveInfoImpl = + FSGNovaGloveInfoImpl( + StaticCast(DeviceId)->String, + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion, + bRightHanded, + StaticCast(ImuCorrection)->Quat, + NumberOfSensors); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_ctor_copy( + void* OutNovaGloveInfoImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveInfoImpl)->NovaGloveInfoImpl = + FSGNovaGloveInfoImpl(StaticCast(Rhs)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_ctor_copy_assignment( + void* OutNovaGloveInfoImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveInfoImpl)->NovaGloveInfoImpl = + StaticCast(Rhs)->NovaGloveInfoImpl; +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->NovaGloveInfoImpl.GetDeviceId(); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->NovaGloveInfoImpl.GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGNovaGloveInfoImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.IsRight(); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_GetImuCorrection( + void* Instance, + void* OutCorrection) +{ + StaticCast(OutCorrection)->Quat = + StaticCast(Instance)->NovaGloveInfoImpl.GetImuCorrection(); +} + +int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetNumberOfSensors( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.GetNumberOfSensors(); +} + +bool SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareNewerThan( + void* Instance, + const int32 FirmwareMain, + const int32 FirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.FirmwareNewerThan( + FirmwareMain, + FirmwareSub, + bInclusive); +} + +bool SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareOlderThan( + void* Instance, + const int32 FirmwareMain, + const int32 FirmwareSub, + const bool bInclusive) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.FirmwareOlderThan( + FirmwareMain, + FirmwareSub, + bInclusive); +} + +bool SGCoreImpl_FSGNovaGloveInfoImpl_Equals( + void* Instance, + void* NovaGloveInfoImpl) +{ + return StaticCast(Instance)->NovaGloveInfoImpl.Equals( + StaticCast(NovaGloveInfoImpl)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->NovaGloveInfoImpl.ToString(); +} + +void SGCoreImpl_FSGNovaGloveInfoImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->NovaGloveInfoImpl.Serialize(); +} + +/******************************************************************************* + * SGNovaGloveSensorDataImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_Empty( + void* OutNovaGloveSensorDataImpl) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl::Empty(); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_Parse( + void* OutNovaGloveSensorDataImpl, + void* RawData, + void* GloveInfo) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl::Parse( + StaticCast(RawData)->String, + StaticCast(GloveInfo)->NovaGloveInfoImpl); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_Deserialize( + void* OutNovaGloveSensorDataImpl, + void* SerializedString) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor( + void* OutNovaGloveSensorDataImpl) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl(); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + void* OutNovaGloveSensorDataImpl, + void* Values, + const int32 ParsedValues, + void* ImuRotation, + const bool bImuParsed, + const float BatteryLevel, + const bool bCharging) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl( + StaticCast(Values)->Array, + ParsedValues, + StaticCast(ImuRotation)->Quat, + bImuParsed, + BatteryLevel, + bCharging); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_copy( + void* OutNovaGloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + FSGNovaGloveSensorDataImpl(StaticCast(Rhs)->NovaGloveSensorDataImpl); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_copy_assignment( + void* OutNovaGloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutNovaGloveSensorDataImpl)->NovaGloveSensorDataImpl = + StaticCast(Rhs)->NovaGloveSensorDataImpl; +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValues( + void* Instance, + void* OutValues) +{ + StaticCast(OutValues)->Array = + StaticCast(Instance)->NovaGloveSensorDataImpl.GetSensorValues(); +} + +float SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValue( + void* Instance, + void* Finger, + void* Location) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.GetSensorValue( + StaticCast(Finger)->Finger, + StaticCast(Location)->Location); +} + +int32 SGCoreImpl_FSGNovaGloveSensorDataImpl_GetParsedValues( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.GetParsedValues(); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = + StaticCast(Instance)->NovaGloveSensorDataImpl.GetImuRotation(); +} + +bool SGCoreImpl_FSGNovaGloveSensorDataImpl_IsImuParsed( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.IsImuParsed(); +} + +float SGCoreImpl_FSGNovaGloveSensorDataImpl_GetBatteryLevel( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.GetBatteryLevel(); +} + +bool SGCoreImpl_FSGNovaGloveSensorDataImpl_IsCharging( + void* Instance) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.IsCharging(); +} + +bool SGCoreImpl_FSGNovaGloveSensorDataImpl_Equals( + void* Instance, + void* NovaGloveSensorDataImpl) +{ + return StaticCast(Instance)->NovaGloveSensorDataImpl.Equals( + StaticCast(NovaGloveSensorDataImpl)->NovaGloveSensorDataImpl); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->NovaGloveSensorDataImpl.ToString(); +} + +void SGCoreImpl_FSGNovaGloveSensorDataImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->NovaGloveSensorDataImpl.Serialize(); +} + +/******************************************************************************* + * SGSenseComImpl.h + ******************************************************************************/ + +bool SGCoreImpl_FSGSenseComImpl_RegisterExe() +{ + return FSGSenseComImpl::RegisterExe(); +} + +bool SGCoreImpl_FSGSenseComImpl_RegisterExe_ExePath(void* ExePath) +{ + return FSGSenseComImpl::RegisterExe(StaticCast(ExePath)->String); +} + +bool SGCoreImpl_FSGSenseComImpl_GetExePath(void* OutExePath) +{ + return FSGSenseComImpl::GetExePath(StaticCast(OutExePath)->String); +} + +bool SGCoreImpl_FSGSenseComImpl_ScanningActive() +{ + return FSGSenseComImpl::ScanningActive(); +} + +bool SGCoreImpl_FSGSenseComImpl_GetCurrentExeDirectory(void* OutDirectory) +{ + return FSGSenseComImpl::GetCurrentExeDirectory(StaticCast(OutDirectory)->String); +} + +bool SGCoreImpl_FSGSenseComImpl_StartupSenseCom() +{ + return FSGSenseComImpl::StartupSenseCom(); +} + +/******************************************************************************* + * SGSenseGloveImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSenseGloveImpl_Parse( + void* OutSenseGloveImpl, + void* ConstantsString) +{ + StaticCast(OutSenseGloveImpl)->Ptr = + FSGSenseGloveImpl::Parse(StaticCast(ConstantsString)->String); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetSenseGloves( + void* OutGloves) +{ + StaticCast(OutGloves)->Array = + FSGSenseGloveImpl::GetSenseGloves(); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_OutGlove( + void* OutGlove) +{ + return FSGSenseGloveImpl::GetSenseGlove( + StaticCast(OutGlove)->SenseGloveImpl); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_bRightHanded_OutGlove( + const bool bRightHanded, + void* OutGlove) +{ + return FSGSenseGloveImpl::GetSenseGlove( + bRightHanded, + StaticCast(OutGlove)->SenseGloveImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* MountedOn, + void* OutGlovePosition, + void* OutGloveRotation) +{ + FSGSenseGloveImpl::CalculateGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(MountedOn)->Finger, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + const bool bRightHanded, + void* MountedOn, + void* GloveWristPositionOffset, + void* GloveWristRotationOffset, + void* OutWristPosition, + void* OutWristRotation) +{ + FSGSenseGloveImpl::CalculateWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + bRightHanded, + StaticCast(MountedOn)->Finger, + StaticCast(GloveWristPositionOffset)->Vector, + StaticCast(GloveWristRotationOffset)->Quat, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +ANSICHAR SGCoreImpl_FSGSenseGloveImpl_GetHapticsByte() +{ + return FSGSenseGloveImpl::GetHapticsByte(); +} + +ANSICHAR SGCoreImpl_FSGSenseGloveImpl_GetThumperByte() +{ + return FSGSenseGloveImpl::GetThumperByte(); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetDefaultThimbleOffset( + void* OutOffset) +{ + StaticCast(OutOffset)->Vector = + FSGSenseGloveImpl::GetDefaultThimbleOffset(); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_SensorData_GloveModel( + void* OutPose, + void* SensorData, + void* GloveModel) +{ + StaticCast(OutPose)->SenseGlovePoseImpl = + FSGSenseGloveImpl::CalculateGlovePose( + StaticCast(SensorData)->SenseGloveSensorDataImpl, + StaticCast(GloveModel)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_GloveAngles_GloveModel( + void* OutPose, + void* GloveAngles, + void* GloveModel) +{ + StaticCast(OutPose)->SenseGlovePoseImpl = + FSGSenseGloveImpl::CalculateGlovePose( + StaticCast(GloveAngles)->Array, + StaticCast(GloveModel)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_NormalizeValues( + void* SumAngles, + void* Normalizer, + void* OutFlexions, + void* OutAbductions) +{ + FSGSenseGloveImpl::NormalizeValues( + StaticCast(SumAngles)->Array, + StaticCast(Normalizer)->SenseGloveSensorNormalizerImpl, + StaticCast(OutFlexions)->Array, + StaticCast(OutAbductions)->Array); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateHandAngles( + void* GlovePose, + void* Normalizer, + void* NormalizedToAngles, + void* OutHandAngles) +{ + FSGSenseGloveImpl::CalculateHandAngles( + StaticCast(GlovePose)->SenseGlovePoseImpl, + StaticCast(Normalizer)->SenseGloveSensorNormalizerImpl, + StaticCast(NormalizedToAngles)->HandInterpolatorImpl, + StaticCast(OutHandAngles)->Array); +} + +void SGCoreImpl_FSGSenseGloveImpl_CalculateHandPose( + void* GlovePose, + void* HandModel, + void* Normalizer, + void* NormalizedToAngles, + void* OutHandPose) +{ + FSGSenseGloveImpl::CalculateHandPose( + StaticCast(GlovePose)->SenseGlovePoseImpl, + StaticCast(HandModel)->BasicHandModelImpl, + StaticCast(Normalizer)->SenseGloveSensorNormalizerImpl, + StaticCast(NormalizedToAngles)->HandInterpolatorImpl, + StaticCast(OutHandPose)->HandPoseImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor( + void* OutSenseGloveImpl) +{ + StaticCast(OutSenseGloveImpl)->SenseGloveImpl = FSGSenseGloveImpl{}; +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared( + void* OutSharedPtr) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(); +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_Model( + void* OutSenseGloveImpl, + void* Model) +{ + StaticCast(OutSenseGloveImpl)->SenseGloveImpl = + FSGSenseGloveImpl{ + StaticCast(Model)->SenseGloveInfoImpl}; +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_Model_MakeShared( + void* OutSharedPtr, + void* Model) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared( + StaticCast(Model)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_copy( + void* OutSenseGloveImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveImpl)->SenseGloveImpl = + FSGSenseGloveImpl(StaticCast(Rhs)->SenseGloveImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs) +{ + StaticCast(OutSharedPtr)->Ptr = + MakeShared(StaticCast(Rhs)->SenseGloveImpl); +} + +void SGCoreImpl_FSGSenseGloveImpl_ctor_copy_assignment( + void* OutSenseGloveImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveImpl)->SenseGloveImpl = + StaticCast(Rhs)->SenseGloveImpl; +} + +void SGCoreImpl_FSGSenseGloveImpl_GetDeviceType( + void* Instance, + void* OutType) +{ + StaticCast(OutType)->Type = + StaticCast(Instance)->Ptr->GetDeviceType(); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->Ptr->GetDeviceId(); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->Ptr->GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGSenseGloveImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGSenseGloveImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->Ptr->GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGSenseGloveImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->Ptr->IsRight(); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetImuRotation( + void* Instance, + void* OutImu) +{ + return StaticCast(Instance)->Ptr->GetImuRotation( + StaticCast(OutImu)->Quat); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose) +{ + return StaticCast(Instance)->Ptr->GetHandPose( + StaticCast(HandGeometry)->BasicHandModelImpl, + StaticCast(OutHandPose)->HandPoseImpl); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles) +{ + return StaticCast(Instance)->Ptr->GetHandAngles( + StaticCast(OutHandAngles)->Array); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState) +{ + StaticCast(OutHapticGloveCalibrationState)->State = + StaticCast(Instance)->Ptr->GetCalibrationState(); +} + +void SGCoreImpl_FSGSenseGloveImpl_EndCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->EndCalibration(); +} + +void SGCoreImpl_FSGSenseGloveImpl_ResetCalibration( + void* Instance) +{ + StaticCast(Instance)->Ptr->ResetCalibration(); +} + +void SGCoreImpl_FSGSenseGloveImpl_StopHaptics( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopHaptics(); +} + +void SGCoreImpl_FSGSenseGloveImpl_StopVibrations( + void* Instance) +{ + StaticCast(Instance)->Ptr->StopVibrations(); +} + +bool SGCoreImpl_FSGSenseGloveImpl_SendHaptics( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SendHaptics(); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevels( + StaticCast(Levels01)->Array); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel( + void* Instance, + const int32 Finger, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueForceFeedbackLevel( + Finger, + Level01); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevels( + StaticCast(Amplitudes)->Array); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + void* Instance, + void* Location, + const float Level01) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + StaticCast(Location)->Location, + Level01); +} + +void +SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation) +{ + StaticCast(Instance)->Ptr->GetGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void +SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_MountedOn_OutGlovePosition_OutGloveRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* MountedOn, + void* OutGlovePosition, + void* OutGloveRotation) +{ + StaticCast(Instance)->Ptr->GetGloveLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(MountedOn)->Finger, + StaticCast(OutGlovePosition)->Vector, + StaticCast(OutGloveRotation)->Quat); +} + +void +SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutWristPosition_OutWristRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation) +{ + StaticCast(Instance)->Ptr->GetWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void +SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_GloveWristPositionOffset_GloveWristRotationOffset_OutWristPosition_OutWristRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* GloveWristPositionOffset, + void* GloveWristRotationOffset, + void* OutWristPosition, + void* OutWristRotation) +{ + StaticCast(Instance)->Ptr->GetWristLocation( + StaticCast(ReferencePosition)->Vector, + StaticCast(ReferenceRotation)->Quat, + StaticCast(TrackingHardware)->Hardware, + StaticCast(GloveWristPositionOffset)->Vector, + StaticCast(GloveWristRotationOffset)->Quat, + StaticCast(OutWristPosition)->Vector, + StaticCast(OutWristRotation)->Quat); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo) +{ + StaticCast(OutGloveInfo)->SenseGloveInfoImpl = + StaticCast(Instance)->Ptr->GetGloveInfo(); +} + +void SGCoreImpl_FSGSenseGloveImpl_GetFingerThimbleOffsets( + void* Instance, + void* OutFingerThimbleOffsets) +{ + StaticCast(OutFingerThimbleOffsets)->Array = + StaticCast(Instance)->Ptr->GetFingerThimbleOffsets(); +} + +void SGCoreImpl_FSGSenseGloveImpl_SetFingerThimbleOffset( + void* Instance, + const int32 Finger, + void* Offset) +{ + StaticCast(Instance)->Ptr->SetFingerThimbleOffset( + Finger, + StaticCast(Offset)->Vector); +} + +bool SGCoreImpl_FSGSenseGloveImpl_SupportsWristActuator( + void* Instance) +{ + return StaticCast(Instance)->Ptr->SupportsWristActuator(); +} + + +bool SGCoreImpl_FSGSenseGloveImpl_GetSensorData( + void* Instance, + void* OutSensorData) +{ + return StaticCast(Instance)->Ptr->GetSensorData( + StaticCast(OutSensorData)->NovaGloveSensorDataImpl); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_OutGlovePose( + void* Instance, + void* OutGlovePose) +{ + return StaticCast(Instance)->Ptr->GetGlovePose( + StaticCast(OutGlovePose)->SenseGlovePoseImpl); +} + +bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_SensorData_OutGlovePose( + void* Instance, + void* SensorData, + void* OutGlovePose) +{ + return StaticCast(Instance)->Ptr->GetGlovePose( + StaticCast(SensorData)->SenseGloveSensorDataImpl, + StaticCast(OutGlovePose)->SenseGlovePoseImpl); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude( + void* Instance, + const int32 Finger, + const float Amplitude) +{ + return StaticCast(Instance)->Ptr->QueueVibroLevel( + Finger, + Amplitude); +} + +bool SGCoreImpl_FSGSenseGloveImpl_QueueThumperCommand( + void* Instance, + void* Command) +{ + return StaticCast(Instance)->Ptr->QueueThumperCommand( + StaticCast(Command)->Command); +} + +void SGCoreImpl_FSGSenseGloveImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->Ptr->ToString(); +} + +/******************************************************************************* + * SGSenseGloveInfoImpl.h + ******************************************************************************/ + +bool SGCoreImpl_FSGSenseGloveInfoImpl_Parse( + void* ConstantsString, + void* OutGloveInfo, + const bool bUpdateOldModels) +{ + return FSGSenseGloveInfoImpl::Parse( + StaticCast(ConstantsString)->String, + StaticCast(OutGloveInfo)->SenseGloveInfoImpl, + bUpdateOldModels); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_Deserialize( + void* OutSenseGloveInfoImpl, + void* SerializedString) +{ + StaticCast(OutSenseGloveInfoImpl)->SenseGloveInfoImpl = + FSGSenseGloveInfoImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ctor( + void* OutSenseGloveInfoImpl) +{ + StaticCast(OutSenseGloveInfoImpl)->SenseGloveInfoImpl = FSGSenseGloveInfoImpl(); +} + +void +SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + void* OutSenseGloveInfoImpl, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion, + const bool bRightHanded, + const int32 NumberOfSensors, + void* ImuCorrection, + void* StartPositions, + void* StartRotations, + void* GloveLengths, + void* Functions) +{ + StaticCast(OutSenseGloveInfoImpl)->SenseGloveInfoImpl = + FSGSenseGloveInfoImpl( + StaticCast(DeviceId)->String, + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion, + bRightHanded, + NumberOfSensors, + StaticCast(ImuCorrection)->Quat, + StaticCast(StartPositions)->Array, + StaticCast(StartRotations)->Array, + StaticCast(GloveLengths)->Array, + StaticCast(Functions)->Array); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ctor_copy( + void* OutSenseGloveInfoImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveInfoImpl)->SenseGloveInfoImpl = + FSGSenseGloveInfoImpl(StaticCast(Rhs)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ctor_copy_assignment( + void* OutSenseGloveInfoImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveInfoImpl)->SenseGloveInfoImpl = + StaticCast(Rhs)->SenseGloveInfoImpl; +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetDeviceId( + void* Instance, + void* OutId) +{ + StaticCast(OutId)->String = + StaticCast(Instance)->SenseGloveInfoImpl.GetDeviceId(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetHardwareVersion( + void* Instance, + void* OutVersion) +{ + StaticCast(OutVersion)->String = + StaticCast(Instance)->SenseGloveInfoImpl.GetHardwareVersion(); +} + +int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveInfoImpl.GetFirmwareVersion(); +} + +int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetSubFirmwareVersion( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveInfoImpl.GetSubFirmwareVersion(); +} + +bool SGCoreImpl_FSGSenseGloveInfoImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveInfoImpl.IsRight(); +} + +int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetNumberOfSensors( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveInfoImpl.GetNumberOfSensors(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetImuCorrection( + void* Instance, + void* OutCorrection) +{ + StaticCast(OutCorrection)->Quat = + StaticCast(Instance)->SenseGloveInfoImpl.GetImuCorrection(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPositions( + void* Instance, + void* OutPositions) +{ + StaticCast(OutPositions)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.GetStartPositions(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotations( + void* Instance, + void* OutRotations) +{ + StaticCast(OutRotations)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.GetStartRotations(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths( + void* Instance, + void* OutLengths) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.GetGloveLengths(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetFunctions( + void* Instance, + void* OutFunctions) +{ + StaticCast(OutFunctions)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.GetFunctions(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPosition( + void* Instance, + void* OutPosition, + void* Finger) +{ + StaticCast(OutPosition)->Vector = + StaticCast(Instance)->SenseGloveInfoImpl.GetStartPosition( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotation( + void* Instance, + void* OutRotation, + void* Finger) +{ + StaticCast(OutRotation)->Quat = + StaticCast(Instance)->SenseGloveInfoImpl.GetStartRotation( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths_Finger( + void* Instance, + void* OutLengths, + void* Finger) +{ + StaticCast(OutLengths)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.GetGloveLengths( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ToGloveAngles( + void* Instance, + void* OutAngles, + void* SensorAngles) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->SenseGloveInfoImpl.ToGloveAngles( + StaticCast(SensorAngles)->Array); +} + +bool SGCoreImpl_FSGSenseGloveInfoImpl_Equals( + void* Instance, + void* SenseGloveInfoImpl) +{ + return StaticCast(Instance)->SenseGloveInfoImpl.Equals( + StaticCast(SenseGloveInfoImpl)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ToString_bShortNotation( + void* Instance, + void* OutString, + const bool bShortNotation) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGloveInfoImpl.ToString(bShortNotation); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGloveInfoImpl.ToString(); +} + +void SGCoreImpl_FSGSenseGloveInfoImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGloveInfoImpl.Serialize(); +} + +/******************************************************************************* + * SGSenseGlovePoseImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSenseGlovePoseImpl_IdlePose( + void* OutSenseGlovePoseImpl, + void* GloveInfo) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = + FSGSenseGlovePoseImpl::IdlePose( + StaticCast(GloveInfo)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_Deserialize( + void* OutSenseGlovePoseImpl, + void* SerializedString) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = + FSGSenseGlovePoseImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_ctor( + void* OutSenseGlovePoseImpl) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = FSGSenseGlovePoseImpl(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + void* OutSenseGlovePoseImpl, + const bool bRightHanded, + void* JointPositions, + void* JointRotations, + void* GloveAngles) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = + FSGSenseGlovePoseImpl( + bRightHanded, + StaticCast(JointPositions)->Array, + StaticCast(JointRotations)->Array, + StaticCast(GloveAngles)->Array); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_ctor_copy( + void* OutSenseGlovePoseImpl, + void* Rhs) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = + FSGSenseGlovePoseImpl(StaticCast(Rhs)->SenseGlovePoseImpl); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_ctor_copy_assignment( + void* OutSenseGlovePoseImpl, + void* Rhs) +{ + StaticCast(OutSenseGlovePoseImpl)->SenseGlovePoseImpl = + StaticCast(Rhs)->SenseGlovePoseImpl; +} + +bool SGCoreImpl_FSGSenseGlovePoseImpl_IsRight( + void* Instance) +{ + return StaticCast(Instance)->SenseGlovePoseImpl.IsRight(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetJointPositions( + void* Instance, + void* OutPositions) +{ + StaticCast(OutPositions)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetJointPositions(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetJointRotations( + void* Instance, + void* OutRotations) +{ + StaticCast(OutRotations)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetJointRotations(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetGloveAngles( + void* Instance, + void* OutAngles) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetGloveAngles(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetThimblePositions( + void* Instance, + void* OutPositions) +{ + StaticCast(OutPositions)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetThimblePositions(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations( + void* Instance, + void* OutRotations) +{ + StaticCast(OutRotations)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetThimbleRotations(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_GetTotalGloveAngles( + void* Instance, + void* OutAngles) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.GetTotalGloveAngles(); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_CalculateFingertips( + void* Instance, + void* OutFingertips, + void* FingerOffsets) +{ + StaticCast(OutFingertips)->Array = + StaticCast(Instance)->SenseGlovePoseImpl.CalculateFingertips( + StaticCast(FingerOffsets)->Array); +} + +bool SGCoreImpl_FSGSenseGlovePoseImpl_Equals( + void* Instance, + void* SenseGlovePoseImpl) +{ + return StaticCast(Instance)->SenseGlovePoseImpl.Equals( + StaticCast(SenseGlovePoseImpl)->SenseGlovePoseImpl); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_ToString( + void* Instance, + void* OutString, + const bool bShortFormat) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGlovePoseImpl.ToString(bShortFormat); +} + +void SGCoreImpl_FSGSenseGlovePoseImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGlovePoseImpl.Serialize(); +} + +/******************************************************************************* + * SGSenseGloveSensorDataImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_Empty( + void* OutSenseGloveSensorDataImpl) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl::Empty(); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_Parse( + void* OutSenseGloveSensorDataImpl, + void* RawData, + void* GloveInfo) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl::Parse( + StaticCast(RawData)->String, + StaticCast(GloveInfo)->SenseGloveInfoImpl); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_Deserialize( + void* OutSenseGloveSensorDataImpl, + void* SerializedString) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl::Deserialize( + StaticCast(SerializedString)->String); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor( + void* OutSenseGloveSensorDataImpl) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl(); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + void* OutSenseGloveSensorDataImpl, + void* SensorAngles, + void* ImuRotation, + const int32 ParsedValues, + const bool bImuParsed) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl( + StaticCast(SensorAngles)->Array, + StaticCast(ImuRotation)->Quat, + ParsedValues, + bImuParsed); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_copy( + void* OutSenseGloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + FSGSenseGloveSensorDataImpl(StaticCast(Rhs)->SenseGloveSensorDataImpl); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_copy_assignment( + void* OutSenseGloveSensorDataImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveSensorDataImpl)->SenseGloveSensorDataImpl = + StaticCast(Rhs)->SenseGloveSensorDataImpl; +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles( + void* Instance, + void* OutAngles) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->SenseGloveSensorDataImpl.GetSensorAngles(); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles_Finger( + void* Instance, + void* OutAngles, + void* Finger) +{ + StaticCast(OutAngles)->Array = + StaticCast(Instance)->SenseGloveSensorDataImpl.GetSensorAngles( + StaticCast(Finger)->Finger); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetAngleSequence( + void* Instance, + void* OutSequence) +{ + StaticCast(OutSequence)->Array = + StaticCast(Instance)->SenseGloveSensorDataImpl.GetAngleSequence(); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = + StaticCast(Instance)->SenseGloveSensorDataImpl.GetImuRotation(); +} + +int32 SGCoreImpl_FSGSenseGloveSensorDataImpl_GetParsedValues( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveSensorDataImpl.GetParsedValues(); +} + +bool SGCoreImpl_FSGSenseGloveSensorDataImpl_IsImuParsed( + void* Instance) +{ + return StaticCast(Instance)->SenseGloveSensorDataImpl.IsImuParsed(); +} + +bool SGCoreImpl_FSGSenseGloveSensorDataImpl_Equals( + void* Instance, + void* SenseGloveSensorDataImpl) +{ + return StaticCast(Instance)->SenseGloveSensorDataImpl.Equals( + StaticCast(SenseGloveSensorDataImpl)->SenseGloveSensorDataImpl); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGloveSensorDataImpl.ToString(); +} + +void SGCoreImpl_FSGSenseGloveSensorDataImpl_Serialize( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->SenseGloveSensorDataImpl.Serialize(); +} + +/******************************************************************************* + * SGSenseGloveSensorNormalizerImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor( + void* OutSenseGloveSensorNormalizerImpl) +{ + StaticCast(OutSenseGloveSensorNormalizerImpl)-> + SenseGloveSensorNormalizerImpl = + FSGSenseGloveSensorNormalizerImpl(); +} + +void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_bRightHanded( + void* OutSenseGloveSensorNormalizerImpl, + const bool bRightHanded) +{ + StaticCast(OutSenseGloveSensorNormalizerImpl)-> + SenseGloveSensorNormalizerImpl = + FSGSenseGloveSensorNormalizerImpl( + bRightHanded); +} + +void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_copy( + void* OutSenseGloveSensorNormalizerImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveSensorNormalizerImpl)-> + SenseGloveSensorNormalizerImpl = + FSGSenseGloveSensorNormalizerImpl( + StaticCast(Rhs)->SenseGloveSensorNormalizerImpl); +} + +void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_copy_assignment( + void* OutSenseGloveSensorNormalizerImpl, + void* Rhs) +{ + StaticCast(OutSenseGloveSensorNormalizerImpl)-> + SenseGloveSensorNormalizerImpl = + StaticCast(Rhs)->SenseGloveSensorNormalizerImpl; +} + +float SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeFlexion( + void* Instance, + const int32 Finger, + const float SumFlexionAngles) +{ + return StaticCast( + Instance)->SenseGloveSensorNormalizerImpl.NormalizeFlexion( + Finger, SumFlexionAngles); +} + +float SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeAbduction( + void* Instance, + const int32 Finger, + const float SumAbductionAngles) +{ + return StaticCast( + Instance)->SenseGloveSensorNormalizerImpl.NormalizeAbduction( + Finger, SumAbductionAngles); +} + +/******************************************************************************* + * SGSenseGloveVarsImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetStandardConstantsString( + void* OutString, + void* HardwareVersion, + const float FirmwareVersion, + const bool bRightHanded) +{ + StaticCast(OutString)->String = FSGSenseGloveVarsImpl::GetStandardConstantsString( + StaticCast(HardwareVersion)->String, + FirmwareVersion, + bRightHanded); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetSensorString( + void* OutString, + void* HardwareVersion, + const float FirmwareVersion) +{ + StaticCast(OutString)->String = FSGSenseGloveVarsImpl::GetSensorString( + StaticCast(HardwareVersion)->String, + FirmwareVersion); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetStartPositions( + void* OutPositions, + void* HardwareVersion, + const bool bRightHanded) +{ + StaticCast(OutPositions)->Array = FSGSenseGloveVarsImpl::GetStartPositions( + StaticCast(HardwareVersion)->String, + bRightHanded); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetStartRotations( + void* OutRotations, + void* HardwareVersion, + const bool bRightHanded) +{ + StaticCast(OutRotations)->Array = FSGSenseGloveVarsImpl::GetStartRotations( + StaticCast(HardwareVersion)->String, + bRightHanded); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetGloveLengths( + void* OutLengths, + void* HardwareVersion) +{ + StaticCast(OutLengths)->Array = FSGSenseGloveVarsImpl::GetGloveLengths( + StaticCast(HardwareVersion)->String); +} + +int32 SGCoreImpl_FSGSenseGloveVarsImpl_GetSensors( + void* HardwareVersion) +{ + return FSGSenseGloveVarsImpl::GetSensors(StaticCast(HardwareVersion)->String); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetImuCorrection( + void* OutCorrection, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + StaticCast(OutCorrection)->Quat = FSGSenseGloveVarsImpl::GetImuCorrection( + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion); +} + +void SGCoreImpl_FSGSenseGloveVarsImpl_GetFunctions( + void* OutFunctions, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + StaticCast(OutFunctions)->Array = FSGSenseGloveVarsImpl::GetFunctions( + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion); +} + +void +SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded( + void* OutModel, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion, + const bool bRightHanded) +{ + StaticCast(OutModel)->SenseGloveInfoImpl = + FSGSenseGloveVarsImpl::GenerateGloveModel( + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion, + bRightHanded); +} + +void +SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_CustomId( + void* OutModel, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion, + const bool bRightHanded, + void* CustomId) +{ + StaticCast(OutModel)->SenseGloveInfoImpl = + FSGSenseGloveVarsImpl::GenerateGloveModel( + StaticCast(HardwareVersion)->String, + FirmwareVersion, + SubFirmwareVersion, + bRightHanded, + StaticCast(CustomId)->String); +} + +/******************************************************************************* + * SGSensorNormalizationImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGSensorNormalizationImpl_ctor( + void* OutSensorNormalizationImpl) +{ + StaticCast(OutSensorNormalizationImpl)->SensorNormalizationImpl = + FSGSensorNormalizationImpl{}; +} + +void SGCoreImpl_FSGSensorNormalizationImpl_ctor_MovementRanges( + void* OutSensorNormalizationImpl, + void* MovementRanges) +{ + StaticCast(OutSensorNormalizationImpl)->SensorNormalizationImpl = + FSGSensorNormalizationImpl{ + StaticCast(MovementRanges)->Array + }; +} + +void SGCoreImpl_FSGSensorNormalizationImpl_ctor_copy( + void* OutSensorNormalizationImpl, + void* Rhs) +{ + StaticCast(OutSensorNormalizationImpl)->SensorNormalizationImpl = + FSGSensorNormalizationImpl(StaticCast(Rhs)->SensorNormalizationImpl); +} + +void SGCoreImpl_FSGSensorNormalizationImpl_ctor_copy_assignment( + void* OutSensorNormalizationImpl, + void* Rhs) +{ + StaticCast(OutSensorNormalizationImpl)->SensorNormalizationImpl = + StaticCast(Rhs)->SensorNormalizationImpl; +} + +bool SGCoreImpl_FSGSensorNormalizationImpl_CollectsNormalization( + void* Instance) +{ + return StaticCast(Instance)->SensorNormalizationImpl.CollectsNormalization(); +} + +void SGCoreImpl_FSGSensorNormalizationImpl_SetCollectNormalization( + void* Instance, + const bool bCollectNormalization) +{ + StaticCast(Instance)->SensorNormalizationImpl.SetCollectNormalization( + bCollectNormalization); +} + +int32 SGCoreImpl_FSGSensorNormalizationImpl_GetLength( + void* Instance) +{ + return StaticCast(Instance)->SensorNormalizationImpl.GetLength(); +} + +int32 SGCoreImpl_FSGSensorNormalizationImpl_GetMoveCount( + void* Instance) +{ + return StaticCast(Instance)->SensorNormalizationImpl.GetMoveCount(); +} + +bool SGCoreImpl_FSGSensorNormalizationImpl_AllSensorsMoving( + void* Instance) +{ + return StaticCast(Instance)->SensorNormalizationImpl.AllSensorsMoving(); +} + +void SGCoreImpl_FSGSensorNormalizationImpl_ResetNormalization( + void* Instance) +{ + return StaticCast(Instance)->SensorNormalizationImpl.ResetNormalization(); +} + +void SGCoreImpl_FSGSensorNormalizationImpl_UpdateNormalization( + void* Instance, + const float Value, + const int32 Index) +{ + StaticCast(Instance)->SensorNormalizationImpl.UpdateNormalization( + Value, Index); +} + +float SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValue( + void* Instance, + const float Value, + const int32 Index) +{ + return StaticCast(Instance)->SensorNormalizationImpl.NormalizeValue( + Value, Index); +} + +void SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValues( + void* Instance, + void* Values, + void* OutNormalizedValues) +{ + StaticCast(OutNormalizedValues)->Array = + StaticCast(Instance)->SensorNormalizationImpl.NormalizeValues( + StaticCast(Values)->Array); +} + +bool SGCoreImpl_FSGSensorNormalizationImpl_MovedEnough( + void* Instance, + const int32 Index) +{ + return StaticCast(Instance)->SensorNormalizationImpl.MovedEnough( + Index); +} + +float SGCoreImpl_FSGSensorNormalizationImpl_Denormalize( + void* Instance, + const float Value01, + const int32 Index, + const float FallbackValue) +{ + return StaticCast(Instance)->SensorNormalizationImpl.Denormalize( + Value01, + Index, + FallbackValue); +} + +/******************************************************************************* + * SGThresholdCommandImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGThresholdCommandImpl_ctor( + void* OutThresholdCommandImpl) +{ + StaticCast(OutThresholdCommandImpl)->ThresholdCommandImpl = + FSGThresholdCommandImpl{}; +} + +void SGCoreImpl_FSGThresholdCommandImpl_ctor_AffectedFingers_ThresholdValues( + void* OutThresholdCommandImpl, + void* AffectedFingers, + void* ThresholdValues) +{ + StaticCast(OutThresholdCommandImpl)->ThresholdCommandImpl = + FSGThresholdCommandImpl{ + StaticCast(AffectedFingers)->Array, + StaticCast(ThresholdValues)->Array + }; +} + +void SGCoreImpl_FSGThresholdCommandImpl_ctor_copy( + void* OutThresholdCommandImpl, + void* Rhs) +{ + StaticCast(OutThresholdCommandImpl)->ThresholdCommandImpl = + FSGThresholdCommandImpl(StaticCast(Rhs)->ThresholdCommandImpl); +} + +void SGCoreImpl_FSGThresholdCommandImpl_ctor_copy_assignment( + void* OutThresholdCommandImpl, + void* Rhs) +{ + StaticCast(OutThresholdCommandImpl)->ThresholdCommandImpl = + StaticCast(Rhs)->ThresholdCommandImpl; +} + +float SGCoreImpl_FSGThresholdCommandImpl_GetThreshold( + void* Instance, + const int32 Finger) +{ + return StaticCast(Instance)->ThresholdCommandImpl.GetThreshold( + Finger); +} + +void SGCoreImpl_FSGThresholdCommandImpl_SetThreshold( + void* Instance, + const int32 Finger, + const float ThresholdValue) +{ + return StaticCast(Instance)->ThresholdCommandImpl.SetThreshold( + Finger, + ThresholdValue); +} + +void SGCoreImpl_FSGThresholdCommandImpl_GetThresholds( + void* Instance, + void* OutThresholds) +{ + StaticCast(OutThresholds)->Array = + StaticCast(Instance)->ThresholdCommandImpl.GetThresholds(); +} + +void SGCoreImpl_FSGThresholdCommandImpl_SetThresholds( + void* Instance, + void* AffectedFingers, + void* ThresholdValues) +{ + return StaticCast(Instance)->ThresholdCommandImpl.SetThresholds( + StaticCast(AffectedFingers)->Array, + StaticCast(ThresholdValues)->Array); +} + +bool SGCoreImpl_FSGThresholdCommandImpl_GetFingerActive( + void* Instance, + const int32 Finger) +{ + return StaticCast(Instance)->ThresholdCommandImpl.GetFingerActive( + Finger); +} + +void SGCoreImpl_FSGThresholdCommandImpl_GetActiveFingers( + void* Instance, + void* OutActiveFingers) +{ + StaticCast(OutActiveFingers)->Array = + StaticCast(Instance)->ThresholdCommandImpl.GetActiveFingers(); +} + +void SGCoreImpl_FSGThresholdCommandImpl_ClearThreshold( + void* Instance, + const int32 Finger) +{ + return StaticCast(Instance)->ThresholdCommandImpl.ClearThreshold( + Finger); +} + +void SGCoreImpl_FSGThresholdCommandImpl_ClearThresholds( + void* Instance) +{ + return StaticCast(Instance)->ThresholdCommandImpl.ClearThresholds(); +} + +bool SGCoreImpl_FSGThresholdCommandImpl_Equals( + void* Instance, + void* ThresholdCommandImpl) +{ + return StaticCast(Instance)->ThresholdCommandImpl.Equals( + StaticCast(ThresholdCommandImpl)->ThresholdCommandImpl); +} + +void SGCoreImpl_FSGThresholdCommandImpl_ToString( + void* Instance, + void* OutString) +{ + StaticCast(OutString)->String = + StaticCast(Instance)->ThresholdCommandImpl.ToString(); +} + +/******************************************************************************* + * SGTrackingImpl.h + ******************************************************************************/ + +void SGCoreImpl_FSGTrackingImpl_CalculateLocation( + void* TrackedPosition, + void* TrackedRotation, + void* PositionOffset, + void* RotationOffset, + void* OutNewPosition, + void* OutNewRotation) +{ + FSGTrackingImpl::CalculateLocation( + StaticCast(TrackedPosition)->Vector, + StaticCast(TrackedRotation)->Quat, + StaticCast(PositionOffset)->Vector, + StaticCast(RotationOffset)->Quat, + StaticCast(OutNewPosition)->Vector, + StaticCast(OutNewRotation)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGlovePositionOrigin( + void* OutOrigin) +{ + StaticCast(OutOrigin)->Array = + FSGTrackingImpl::GetSenseGloveFingerToGlovePositionOrigin(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGloveRotationOrigin( + void* OutOrigin) +{ + StaticCast(OutOrigin)->Array = FSGTrackingImpl::GetSenseGloveFingerToGloveRotationOrigin(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristPositionOffset( + void* OutOffset) +{ + StaticCast(OutOffset)->Vector = FSGTrackingImpl::GetSenseGloveWristPositionOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristRotationOffset( + void* OutOffset) +{ + StaticCast(OutOffset)->Quat = FSGTrackingImpl::GetSenseGloveWristRotationOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveMountOffset( + const bool bRightHanded, + void* ToFinger, + void* OutIPosition, + void* OutIRotation) +{ + FSGTrackingImpl::GetSenseGloveMountOffset( + bRightHanded, + StaticCast(ToFinger)->Finger, + StaticCast(OutIPosition)->Vector, + StaticCast(OutIRotation)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveTrackerMountOffset( + void* Hardware, + const bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset) +{ + FSGTrackingImpl::GetSenseGloveTrackerMountOffset( + StaticCast(Hardware)->Hardware, + bRightHanded, + StaticCast(OutPositionOffset)->Vector, + StaticCast(OutRotationOffset)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetSenseGloveViveToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetSenseGloveViveToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetSenseGloveOculusTouchToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetSenseGloveOculusTouchToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetNovaToWristPositionOffset( + void* OutOffset) +{ + StaticCast(OutOffset)->Vector = FSGTrackingImpl::GetNovaToWristPositionOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetNovaToWristRotationOffset( + void* OutOffset) +{ + StaticCast(OutOffset)->Quat = FSGTrackingImpl::GetNovaToWristRotationOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaViveToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaViveToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaViveToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaViveToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaQuest2ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaQuest2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaQuest2ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaQuest2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaPico2ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaPico2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaPico2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaPico2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaQuestProToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaQuestProToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaQuestProToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaQuestProToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaViveFocus3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaViveFocus3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNovaQuest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNovaQuest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNovaQuest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset( + const bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset) +{ + FSGTrackingImpl::GetNovaGloveWristOffset( + bRightHanded, + StaticCast(OutPositionOffset)->Vector, + StaticCast(OutRotationOffset)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetNovaGloveTrackerOffset( + void* Hardware, + const bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset) +{ + FSGTrackingImpl::GetNovaGloveTrackerOffset( + StaticCast(Hardware)->Hardware, + bRightHanded, + StaticCast(OutPositionOffset)->Vector, + StaticCast(OutRotationOffset)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristPositionOffset( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2ToWristPositionOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristRotationOffset( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2ToWristRotationOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristPositionOffset( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2ToWristPositionOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristRotationOffset( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2ToWristRotationOffset(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2Quest2ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2Quest2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2Quest2ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2Quest2ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2QuestProToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2QuestProToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2QuestProToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2QuestProToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2ViveTrackerToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2ViveTrackerToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = + FSGTrackingImpl::GetRightNova2ViveWristTrackerToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2ViveWristTrackerToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = + FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetRightNova2Quest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetRightNova2Quest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition( + void* OutPosition) +{ + StaticCast(OutPosition)->Vector = FSGTrackingImpl::GetLeftNova2Quest3ToAttachPosition(); +} + +void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation( + void* OutRotation) +{ + StaticCast(OutRotation)->Quat = FSGTrackingImpl::GetLeftNova2Quest3ToAttachRotation(); +} + +void SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( + const bool bRightHanded, + void* HardwareVersion, + void* OutPositionOffset, + void* OutRotationOffset) +{ + FSGTrackingImpl::GetNova2GloveWristOffset( + bRightHanded, + StaticCast(HardwareVersion)->String, + StaticCast(OutPositionOffset)->Vector, + StaticCast(OutRotationOffset)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_GetNova2GloveTrackerOffset( + void* Hardware, + const bool bRightHanded, + void* HardwareVersion, + void* OutPositionOffset, + void* OutRotationOffset) +{ + FSGTrackingImpl::GetNova2GloveTrackerOffset( + StaticCast(Hardware)->Hardware, + bRightHanded, + StaticCast(HardwareVersion)->String, + StaticCast(OutPositionOffset)->Vector, + StaticCast(OutRotationOffset)->Quat); +} + +void SGCoreImpl_FSGTrackingImpl_ToString( + void* OutString, + void* Hardware) +{ + StaticCast(OutString)->String = FSGTrackingImpl::ToString( + StaticCast(Hardware)->Hardware); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandInterpolatorImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandInterpolatorImpl.cpp new file mode 100644 index 0000000..39d40c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandInterpolatorImpl.cpp @@ -0,0 +1,186 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGHandInterpolatorImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_HandInterpolator.h" +#include "SGBuildHacks/SGInclude_Core_InterpolationSet.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGInterpolationSetImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGAngles.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGHandInterpolatorImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FHandInterpolatorType HandInterpolator; + + /************************ + * Owner object + ************************/ + + FSGHandInterpolatorImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGHandInterpolatorImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGHandInterpolatorImpl FSGHandInterpolatorImpl::Deserialize(const FString& SerializedString, const bool bRightHanded) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGHandInterpolatorImpl GlovePose(FHandInterpolatorType::Deserialize(MoveTemp(Serialized), bRightHanded)); + return GlovePose; +} + +FSGHandInterpolatorImpl::FSGHandInterpolatorImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const bool bRightHanded) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->HandInterpolator = FHandInterpolatorType(bRightHanded); +} + +FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const FHandInterpolatorType& HandInterpolator) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->HandInterpolator = HandInterpolator; +} + +FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(const FSGHandInterpolatorImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGHandInterpolatorImpl::FSGHandInterpolatorImpl(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT = default; + +FSGHandInterpolatorImpl::~FSGHandInterpolatorImpl() = default; + +FSGHandInterpolatorImpl& FSGHandInterpolatorImpl::operator=(const FSGHandInterpolatorImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGHandInterpolatorImpl& FSGHandInterpolatorImpl::operator=(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGHandInterpolatorImpl::FHandInterpolatorType& FSGHandInterpolatorImpl::ToHandInterpolator( + ) const +{ + return Pimpl->HandInterpolator; +} + +float FSGHandInterpolatorImpl::CalculateAngle( + const ESGFingerMovement Movement, const float Value, const bool bApplyLimits) const +{ + return FSGAngles::TransformToUnreal( + Movement, Pimpl->HandInterpolator.CalculateAngle( + FSGCoreEnumCast::ToEFingerMovement(Movement), Value, bApplyLimits)); +} + +float FSGHandInterpolatorImpl::CalculateAngle( + const ESGThumbMovement Movement, const float Value, const bool bApplyLimits) const +{ + return FSGAngles::TransformToUnreal( + Movement, Pimpl->HandInterpolator.CalculateAngle( + FSGCoreEnumCast::ToEThumbMovement(Movement), Value, bApplyLimits)); +} + +TArray> FSGHandInterpolatorImpl::InterpolateHandAngles( + const TArray>& Flexions, const TArray& Abductions, const float CmcTwist) +{ + std::vector> FlexionsVector{ + FSGArrayUtils::ToSenseGloveAngles(Flexions) + }; + std::vector AbductionsVector{ + FSGArrayUtils::ToSenseGloveAngles(Abductions) + }; + const TArray> Angles{ + FSGArrayUtils::FromSenseGloveAngles( + Pimpl->HandInterpolator.InterpolateHandAngles( + MoveTemp(FlexionsVector), MoveTemp(AbductionsVector), CmcTwist)) + }; + return Angles; +} + +bool FSGHandInterpolatorImpl::Equals(const FSGHandInterpolatorImpl& HandInterpolatorImpl) const +{ + return Pimpl->HandInterpolator.Equals(HandInterpolatorImpl.ToHandInterpolator()); +} + +FString FSGHandInterpolatorImpl::Serialize() const +{ + const FString Serialized(UTF8_TO_TCHAR(Pimpl->HandInterpolator.Serialize().c_str())); + return Serialized; +} + +FSGHandInterpolatorImpl::FImpl::FImpl(FSGHandInterpolatorImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGHandInterpolatorImpl::FImpl::~FImpl() = default; + +void FSGHandInterpolatorImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp new file mode 100644 index 0000000..1b80b25 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandLayerImpl.cpp @@ -0,0 +1,221 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGHandLayerImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGBuildHacks/SGInclude_Core_HandLayer.h" +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +bool FSGHandLayerImpl::DeviceConnected(const bool bRightHanded) +{ + return FHandLayerType::DeviceConnected(bRightHanded); +} + +ESGDeviceType FSGHandLayerImpl::GetDeviceType(const bool bRightHanded) +{ + return FSGCoreEnumCast::ToESGDeviceType(FHandLayerType::GetDeviceType(bRightHanded)); +} + +bool FSGHandLayerImpl::GetFirstGloveHandedness() +{ + return FHandLayerType::GetFirstGloveHandedness(); +} + +int32 FSGHandLayerImpl::GlovesConnected() +{ + return FHandLayerType::GlovesConnected(); +} + +bool FSGHandLayerImpl::GetGloveInstance(const bool bRightHanded, TSharedPtr& OutGlove) +{ + FSGHapticGloveImpl::FHapticGlovePtrType Glove; + const bool bResult = FHandLayerType::GetGloveInstance(bRightHanded, Glove); + + if (bResult) + { + OutGlove = MakeShared(MoveTemp(Glove)); + } + + return bResult; +} + +ESGHapticGloveCalibrationState FSGHandLayerImpl::GetCalibrationState(const bool bRightHanded) +{ + return FSGCoreEnumCast::ToESGHapticGloveCalibrationState(FHandLayerType::GetCalibrationState(bRightHanded)); +} + +FString FSGHandLayerImpl::GetCalibrationInstructions(const bool bRightHanded) +{ + const FString Instructions{UTF8_TO_TCHAR(FHandLayerType::GetCalibrationInstructions(bRightHanded).c_str())}; + return Instructions; +} + +void FSGHandLayerImpl::ResetCalibration(const bool bRightHanded) +{ + FHandLayerType::ResetCalibration(bRightHanded); +} + +void FSGHandLayerImpl::EndCalibration(const bool bRightHanded) +{ + FHandLayerType::EndCalibration(bRightHanded); +} + +bool FSGHandLayerImpl::GetHandPose(const bool bRightHanded, FSGHandPoseImpl& OutHandPose) +{ + FSGHandPoseImpl::FHandPoseType HandPose; + + const bool bResult = FHandLayerType::GetHandPose(bRightHanded, HandPose); + OutHandPose = FSGHandPoseImpl{HandPose}; + + return bResult; +} + +void FSGHandLayerImpl::GetWristLocation( + const bool bRightHanded, const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, + FQuat& OutWristRotation) +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + FHandLayerType::GetWristLocation( + bRightHanded, + FSGVect3DImpl{ReferencePosition}.ToVect3D(), FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + WristPosition, WristRotation); + + OutWristPosition = FSGVect3DImpl{WristPosition}.ToFVector(); + OutWristRotation = FSGQuatImpl{WristRotation}.ToFQuat(); +} + +void FSGHandLayerImpl::StopAllHaptics(const bool bRightHanded) +{ + FHandLayerType::StopAllHaptics(bRightHanded); +} + +bool FSGHandLayerImpl::SendHaptics(const bool bRightHanded) +{ + return FHandLayerType::SendHaptics(bRightHanded); +} + +bool FSGHandLayerImpl::SupportsCustomWaveform(const bool bRightHanded, const ESGHapticLocation AtLocation) +{ + return FHandLayerType::SupportsCustomWaveform(bRightHanded, FSGCoreEnumCast::ToEHapticLocation(AtLocation)); +} + +bool FSGHandLayerImpl::SendCustomWaveform( + const bool bRightHanded, FSGCustomWaveformImpl& OutWaveform, const ESGHapticLocation Location) +{ + const bool bResult = FHandLayerType::SendCustomWaveform( + bRightHanded, OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToEHapticLocation(Location)); + return bResult; +} + +bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return FHandLayerType::QueueCommand_ForceFeedbackLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return FHandLayerType::QueueCommand_VibroLevels(bRightHanded, MoveTemp(Levels01Vector), bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_VibroLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_VibroLevel( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_VibroLevel( + bRightHanded, FSGCoreEnumCast::ToEHapticLocation(AtLocation), Level01, bSendImmediate); +} + +bool FSGHandLayerImpl::SupportsWristSqueeze(const bool bRightHanded) +{ + return FHandLayerType::SupportsWristSqueeze(bRightHanded); +} + +bool FSGHandLayerImpl::QueueCommand_WristSqueeze( + const bool bRightHanded, const float SqueezeLevel01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_WristSqueeze(bRightHanded, SqueezeLevel01, bSendImmediate); +} + +bool FSGHandLayerImpl::SupportsFlexionLocks(const bool bRightHanded) +{ + return FHandLayerType::SupportsFlexionLocks(bRightHanded); +} + +bool FSGHandLayerImpl::QueueCommand_FlexionLock( + const bool bRightHanded, const int32 Finger, const float Flexion01, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_FlexionLock(bRightHanded, Finger, Flexion01, bSendImmediate); +} + +bool FSGHandLayerImpl::QueueCommand_ClearFlexionLock( + const bool bRightHanded, const int32 Finger, const bool bSendImmediate) +{ + return FHandLayerType::QueueCommand_ClearFlexionLock(bRightHanded, Finger, bSendImmediate); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandPoseImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandPoseImpl.cpp new file mode 100644 index 0000000..476cf3b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHandPoseImpl.cpp @@ -0,0 +1,272 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGHandPoseImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGAngles.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGHandPoseImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FHandPoseType HandPose; + + /************************ + * Owner object + ************************/ + + FSGHandPoseImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGHandPoseImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGHandPoseImpl FSGHandPoseImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGHandPoseImpl HandPose(FHandPoseType::Deserialize(MoveTemp(Serialized))); + return HandPose; +} + +FSGHandPoseImpl FSGHandPoseImpl::FromHandAngles(const TArray>& HandAngles, const bool bRightHanded, + const FSGBasicHandModelImpl& HandDimensions) +{ + std::vector> HandAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(HandAngles) + }; + return FSGHandPoseImpl(FHandPoseType::FromHandAngles( + MoveTemp(HandAnglesVector), bRightHanded, HandDimensions.ToBasicHandModel())); +} + +FSGHandPoseImpl FSGHandPoseImpl::FromHandAngles(const TArray>& HandAngles, const bool bRightHanded) +{ + std::vector> HandAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(HandAngles) + }; + return FSGHandPoseImpl(FHandPoseType::FromHandAngles(MoveTemp(HandAnglesVector), bRightHanded)); +} + +FSGHandPoseImpl FSGHandPoseImpl::DefaultIdle(const bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions) +{ + return FSGHandPoseImpl(FHandPoseType::DefaultIdle(bRightHanded, HandDimensions.ToBasicHandModel())); +} + +FSGHandPoseImpl FSGHandPoseImpl::DefaultIdle(const bool bRightHanded) +{ + return FSGHandPoseImpl(FHandPoseType::DefaultIdle(bRightHanded)); +} + +FSGHandPoseImpl FSGHandPoseImpl::FlatHand(const bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions) +{ + return FSGHandPoseImpl(FHandPoseType::FlatHand(bRightHanded, HandDimensions.ToBasicHandModel())); +} + +FSGHandPoseImpl FSGHandPoseImpl::FlatHand(const bool bRightHanded) +{ + return FSGHandPoseImpl(FHandPoseType::FlatHand(bRightHanded)); +} + +FSGHandPoseImpl FSGHandPoseImpl::ThumbsUp(const bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions) +{ + return FSGHandPoseImpl(FHandPoseType::ThumbsUp(bRightHanded, HandDimensions.ToBasicHandModel())); +} + +FSGHandPoseImpl FSGHandPoseImpl::ThumbsUp(const bool bRightHanded) +{ + return FSGHandPoseImpl(FHandPoseType::ThumbsUp(bRightHanded)); +} + +FSGHandPoseImpl FSGHandPoseImpl::Fist(const bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions) +{ + return FSGHandPoseImpl(FHandPoseType::Fist(bRightHanded, HandDimensions.ToBasicHandModel())); +} + +FSGHandPoseImpl FSGHandPoseImpl::Fist(const bool bRightHanded) +{ + return FSGHandPoseImpl(FHandPoseType::Fist(bRightHanded)); +} + +FSGHandPoseImpl::FSGHandPoseImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGHandPoseImpl::FSGHandPoseImpl(const bool bRightHanded, const TArray>& JointPositions, + const TArray>& JointRotations, const TArray>& HandAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> JointPositionsVector{ + FSGArrayUtils::ToMillimeters(JointPositions) + }; + + std::vector> JointRotationsVector{ + FSGArrayUtils::ToStdVector(JointRotations) + }; + + std::vector> HandAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(HandAngles) + }; + + Pimpl->HandPose = FHandPoseType( + bRightHanded, MoveTemp(JointPositionsVector), MoveTemp(JointRotationsVector), MoveTemp(HandAnglesVector)); +} + +FSGHandPoseImpl::FSGHandPoseImpl(const FHandPoseType& SenseGloveHandPose) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->HandPose = SenseGloveHandPose; +} + +FSGHandPoseImpl::FSGHandPoseImpl(const FSGHandPoseImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGHandPoseImpl::FSGHandPoseImpl(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT = default; + +FSGHandPoseImpl::~FSGHandPoseImpl() = default; + +FSGHandPoseImpl& FSGHandPoseImpl::operator=(const FSGHandPoseImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGHandPoseImpl& FSGHandPoseImpl::operator=(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGHandPoseImpl::FHandPoseType& FSGHandPoseImpl::ToHandPose() const +{ + return Pimpl->HandPose; +} + +bool FSGHandPoseImpl::IsRight() const +{ + return Pimpl->HandPose.IsRight(); +} + +TArray> FSGHandPoseImpl::GetJointPositions() const +{ + const TArray> JointPositions{ + FSGArrayUtils::FromMillimeters( + Pimpl->HandPose.GetJointPositions()) + }; + return JointPositions; +} + +TArray> FSGHandPoseImpl::GetJointRotations() const +{ + const TArray> JointRotations{ + FSGArrayUtils::FromStdVector( + Pimpl->HandPose.GetJointRotations()) + }; + return JointRotations; +} + +TArray> FSGHandPoseImpl::GetHandAngles() const +{ + const TArray> HandAngles{ + FSGArrayUtils::FromSenseGloveAngles(Pimpl->HandPose.GetHandAngles()) + }; + return HandAngles; +} + +bool FSGHandPoseImpl::Equals(const FSGHandPoseImpl& HandPoseImpl) const +{ + return Pimpl->HandPose.Equals(HandPoseImpl.ToHandPose()); +} + +float FSGHandPoseImpl::GetNormalizedFlexion(ESGFinger Finger, bool bClamp01) const +{ + return Pimpl->HandPose.GetNormalizedFlexion(FSGCoreEnumCast::ToEFinger(Finger), bClamp01); +} + +TArray FSGHandPoseImpl::GetNormalizedFlexion(bool bClamp01) const +{ + const TArray NormalizedFlexion{ + FSGArrayUtils::FromStdVector(Pimpl->HandPose.GetNormalizedFlexion(bClamp01)) + }; + return NormalizedFlexion; +} + +FString FSGHandPoseImpl::ToString(bool bShortFormat) const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->HandPose.ToString(bShortFormat).c_str())); + return String; +} + +FString FSGHandPoseImpl::Serialize() const +{ + const FString Serialized(UTF8_TO_TCHAR(Pimpl->HandPose.Serialize().c_str())); + return Serialized; +} + +FSGHandPoseImpl::FImpl::FImpl(FSGHandPoseImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGHandPoseImpl::FImpl::~FImpl() = default; + +void FSGHandPoseImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticChannelInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticChannelInfoImpl.cpp new file mode 100644 index 0000000..291af92 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticChannelInfoImpl.cpp @@ -0,0 +1,206 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 SenseChannelInfo + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGHapticChannelInfoImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_HapticChannelInfo.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGHapticChannelInfoImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FHapticChannelInfoType HapticChannelInfo; + + /************************ + * Owner object + ************************/ + + FSGHapticChannelInfoImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGHapticChannelInfoImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FString FSGHapticChannelInfoImpl::GenerateAddress(const int32 DeviceIndex, const int32 ChannelIndex) +{ + const FString Address{UTF8_TO_TCHAR(FHapticChannelInfoType::GenerateAddress(DeviceIndex, ChannelIndex).c_str())}; + return Address; +} + +FSGHapticChannelInfoImpl FSGHapticChannelInfoImpl::Parse(const FString& IpcString) +{ + std::string IpcStdString{TCHAR_TO_UTF8(*IpcString)}; + FHapticChannelInfoType HapticChannelInfo{FHapticChannelInfoType::Parse(MoveTemp(IpcStdString))}; + const FSGHapticChannelInfoImpl HapticChannelInfoImpl{MoveTemp(HapticChannelInfo)}; + return HapticChannelInfoImpl; +} + +int32 FSGHapticChannelInfoImpl::GetStreamingType() +{ + return FHapticChannelInfoType::GetStreamingType(); +} + +int32 FSGHapticChannelInfoImpl::GetFireAndForgetType() +{ + return FHapticChannelInfoType::GetFireAndForgetType(); +} + +FSGHapticChannelInfoImpl::FSGHapticChannelInfoImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGHapticChannelInfoImpl::FSGHapticChannelInfoImpl( + const TArray& StreamIndex, const TArray& FireAndForgetIndex) +{ + std::vector StreamIndexVector{ + FSGArrayUtils::ToStdVector(StreamIndex) + }; + std::vector FireAndForgetIndexVector{ + FSGArrayUtils::ToStdVector(FireAndForgetIndex) + }; + + Pimpl->HapticChannelInfo = FHapticChannelInfoType{ + MoveTemp(StreamIndexVector), + MoveTemp(FireAndForgetIndexVector) + }; +} + +FSGHapticChannelInfoImpl::FSGHapticChannelInfoImpl(const FHapticChannelInfoType& HapticChannelInfo) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->HapticChannelInfo = HapticChannelInfo; +} + +FSGHapticChannelInfoImpl::FSGHapticChannelInfoImpl(const FSGHapticChannelInfoImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGHapticChannelInfoImpl::FSGHapticChannelInfoImpl(FSGHapticChannelInfoImpl&& Rhs) SG_NOEXCEPT = default; + +FSGHapticChannelInfoImpl::~FSGHapticChannelInfoImpl() = default; + +FSGHapticChannelInfoImpl& FSGHapticChannelInfoImpl::operator=(const FSGHapticChannelInfoImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGHapticChannelInfoImpl& FSGHapticChannelInfoImpl::operator=(FSGHapticChannelInfoImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGHapticChannelInfoImpl::FHapticChannelInfoType& FSGHapticChannelInfoImpl::ToHapticChannelInfo() const +{ + return Pimpl->HapticChannelInfo; +} + +int32 FSGHapticChannelInfoImpl::GetStreamChannelCount() const +{ + return Pimpl->HapticChannelInfo.GetStreamChannelCount(); +} + +int32 FSGHapticChannelInfoImpl::GetFireAndForgetChannelCount() const +{ + return Pimpl->HapticChannelInfo.GetFireAndForgetChannelCount(); +} + +int32 FSGHapticChannelInfoImpl::GetTotalChannelCount() const +{ + return Pimpl->HapticChannelInfo.GetTotalChannelCount(); +} + +FString FSGHapticChannelInfoImpl::GetAddress_Unguarded(const ESGHapticChannelType Type, const int32 TypeIndex) const +{ + const FString Address{ + UTF8_TO_TCHAR( + Pimpl->HapticChannelInfo.GetAddress_Unguarded( + FSGCoreEnumCast::ToEHapticChannelType(Type), TypeIndex).c_str( + )) + }; + return Address; +} + +void FSGHapticChannelInfoImpl::GetIpcParams_Unguarded( + const ESGHapticChannelType Type, const int32 TypeIndex, int32& OutIndex, FString& OutAddressString) const +{ + std::string OutAddressStdString; + Pimpl->HapticChannelInfo.GetIpcParams_Unguarded( + FSGCoreEnumCast::ToEHapticChannelType(Type), TypeIndex, OutIndex, OutAddressStdString); + OutAddressString = FString{UTF8_TO_TCHAR(OutAddressStdString.c_str())}; +} + +void FSGHapticChannelInfoImpl::RegenerateAddresses(const int32 ForDeviceIndex) +{ + Pimpl->HapticChannelInfo.RegenerateAddresses(ForDeviceIndex); +} + +TArray FSGHapticChannelInfoImpl::GetAllAddresses() const +{ + const TArray AddressesArray{ + FSGArrayUtils::FromStdVector(Pimpl->HapticChannelInfo.GetAllAddresses()) + }; + return AddressesArray; +} + +FSGHapticChannelInfoImpl::FImpl::FImpl(FSGHapticChannelInfoImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGHapticChannelInfoImpl::FImpl::~FImpl() = default; + +void FSGHapticChannelInfoImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp new file mode 100644 index 0000000..a4f470a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGHapticGloveImpl.cpp @@ -0,0 +1,377 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGHapticGloveImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGHapticGloveImpl::FImpl +{ + /************************ + * Owner object + ************************/ + + FSGHapticGloveImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGHapticGloveImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TArray> FSGHapticGloveImpl::GetHapticGloves(const bool bConnectedOnly) +{ + const FHapticGlovePtrVectorType HapticGloves{FHapticGloveType::GetHapticGloves(bConnectedOnly)}; + TArray> HapticGloveImpls; + + for (FHapticGlovePtrType HapticGlove: HapticGloves) + { + TSharedRef HapticGloveImpl{MakeShared(MoveTemp(HapticGlove))}; + HapticGloveImpls.Push(MoveTemp(HapticGloveImpl)); + } + + return HapticGloveImpls; +} + +bool FSGHapticGloveImpl::GetGlove(TSharedPtr& OutGlove) +{ + FHapticGlovePtrType Glove; + const bool bReturn = FHapticGloveType::GetGlove(Glove); + + if (bReturn) + { + OutGlove = MakeShared(MoveTemp(Glove)); + } + + return bReturn; +} + +bool FSGHapticGloveImpl::GetGlove(const bool bRightHanded, TSharedPtr& OutGlove) +{ + FHapticGlovePtrType Glove; + const bool bReturn = FHapticGloveType::GetGlove(bRightHanded, Glove); + + if (bReturn) + { + OutGlove = MakeShared(MoveTemp(Glove)); + } + + return bReturn; +} + +FString FSGHapticGloveImpl::ToString(ESGHapticGloveCalibrationState State) +{ + const FString String{ + UTF8_TO_TCHAR(FHapticGloveType::ToString(FSGCoreEnumCast::ToEHapticGloveCalibrationState(State)).c_str()) + }; + return String; +} + +FString FSGHapticGloveImpl::ToString(ESGHapticLocation Location) +{ + const FString String{ + UTF8_TO_TCHAR(FHapticGloveType::ToString(FSGCoreEnumCast::ToEHapticLocation(Location)).c_str()) + }; + return String; +} + +FSGHapticGloveImpl::FSGHapticGloveImpl() + : FSGDeviceImpl(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGHapticGloveImpl::FSGHapticGloveImpl(const FHapticGlovePtrType HapticGlove) + : FSGDeviceImpl(std::dynamic_pointer_cast(HapticGlove)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGHapticGloveImpl::FSGHapticGloveImpl(const FSGHapticGloveImpl& Rhs) + : FSGDeviceImpl(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGHapticGloveImpl::FSGHapticGloveImpl(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT = default; + +FSGHapticGloveImpl::~FSGHapticGloveImpl() = default; + +FSGHapticGloveImpl& FSGHapticGloveImpl::operator=(const FSGHapticGloveImpl& Rhs) +{ + FSGDeviceImpl::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGHapticGloveImpl& FSGHapticGloveImpl::operator=(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT = default; + +FSGHapticGloveImpl::FHapticGlovePtrType FSGHapticGloveImpl::ToHapticGlovePtr() const +{ + return std::dynamic_pointer_cast(ToSGDevicePtr()); +} + +FSGHapticGloveImpl::FHapticGlovePtrType FSGHapticGloveImpl::ToHapticGlovePtrChecked() const +{ + FHapticGlovePtrType HapticGlove = std::dynamic_pointer_cast(ToSGDevicePtr()); + ensureAlwaysMsgf(HapticGlove.get(), TEXT("Invalid HapticGlove")); + return HapticGlove; +} + +ESGDeviceType FSGHapticGloveImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToHapticGlovePtrChecked()->GetDeviceType()); +} + +FString FSGHapticGloveImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToHapticGlovePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGHapticGloveImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToHapticGlovePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGHapticGloveImpl::GetFirmwareVersion() const +{ + return ToHapticGlovePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGHapticGloveImpl::GetSubFirmwareVersion() const +{ + return ToHapticGlovePtrChecked()->GetSubFirmwareVersion(); +} + +bool FSGHapticGloveImpl::IsRight() const +{ + return ToHapticGlovePtrChecked()->IsRight(); +} + +bool FSGHapticGloveImpl::GetImuRotation(FQuat& OutImu) +{ + FSGQuatImpl::FQuatType Imu; + const bool bResult = ToHapticGlovePtrChecked()->GetImuRotation(Imu); + OutImu = FSGQuatImpl{MoveTemp(Imu)}.ToFQuat(); + return bResult; +} + +bool FSGHapticGloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const +{ + FSGHandPoseImpl::FHandPoseType HandPose; + const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(), HandPose); + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; + return bResult; +} + +bool FSGHapticGloveImpl::GetHandPose(FSGHandPoseImpl& OutHandPose) +{ + FSGHandPoseImpl::FHandPoseType HandPose; + const bool bResult = ToHapticGlovePtrChecked()->GetHandPose(HandPose); + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; + return bResult; +} + +bool FSGHapticGloveImpl::GetHandAngles(TArray>& OutHandAngles) const +{ + std::vector> HandAngles; + const bool bResult = ToHapticGlovePtrChecked()->GetHandAngles(HandAngles); + OutHandAngles = FSGArrayUtils::FromSenseGloveAngles(HandAngles); + return bResult; +} + +FSGBasicHandModelImpl FSGHapticGloveImpl::GetHandGeometry() const +{ + FSGBasicHandModelImpl::FBasicHandModelType Geometry{ToHapticGlovePtrChecked()->GetHandGeometry()}; + return FSGBasicHandModelImpl{MoveTemp(Geometry)}; +} + +void FSGHapticGloveImpl::SetHandGeometry(const FSGBasicHandModelImpl& HandGeometry) +{ + ToHapticGlovePtrChecked()->SetHandGeometry(HandGeometry.ToBasicHandModel()); +} + +ESGHapticGloveCalibrationState FSGHapticGloveImpl::GetCalibrationState() const +{ + return FSGCoreEnumCast::ToESGHapticGloveCalibrationState(ToHapticGlovePtrChecked()->GetCalibrationState()); +} + +void FSGHapticGloveImpl::EndCalibration() +{ + ToHapticGlovePtrChecked()->EndCalibration(); +} + +void FSGHapticGloveImpl::ResetCalibration() +{ + ToHapticGlovePtrChecked()->ResetCalibration(); +} + +FString FSGHapticGloveImpl::GetCalibrationInstruction() const +{ + const FString Instruction{UTF8_TO_TCHAR(ToHapticGlovePtrChecked()->GetCalibrationInstruction().c_str())}; + return Instruction; +} + +void FSGHapticGloveImpl::StopHaptics() +{ + ToHapticGlovePtrChecked()->StopHaptics(); +} + +void FSGHapticGloveImpl::StopVibrations() +{ + ToHapticGlovePtrChecked()->StopVibrations(); +} + +bool FSGHapticGloveImpl::SendHaptics() +{ + return ToHapticGlovePtrChecked()->SendHaptics(); +} + +bool FSGHapticGloveImpl::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +{ + return ToHapticGlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation)); +} + +bool FSGHapticGloveImpl::SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGHapticLocation Location) +{ + return ToHapticGlovePtrChecked()->SendCustomWaveform( + OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToEHapticLocation(Location)); +} + +bool FSGHapticGloveImpl::QueueForceFeedbackLevels(const TArray& Levels01) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToHapticGlovePtrChecked()->QueueForceFeedbackLevels(MoveTemp(Levels01Vector)); +} + +bool FSGHapticGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + return ToHapticGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); +} + +bool FSGHapticGloveImpl::QueueVibroLevels(const TArray& Levels01) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToHapticGlovePtrChecked()->QueueVibroLevels(MoveTemp(Levels01Vector)); +} + +bool FSGHapticGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToHapticGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + +void FSGHapticGloveImpl::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + ToHapticGlovePtrChecked()->GetWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl(ReferenceRotation).ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl(MoveTemp(WristRotation)).ToFQuat(); +} + +void FSGHapticGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + ToHapticGlovePtrChecked()->GetGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl(ReferenceRotation).ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition)); + OutGloveRotation = FSGQuatImpl(MoveTemp(GloveRotation)).ToFQuat(); +} + +FString FSGHapticGloveImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(ToHapticGlovePtrChecked()->ToString().c_str())}; + return String; +} + +FSGHapticGloveImpl::FImpl::FImpl(FSGHapticGloveImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGHapticGloveImpl::FImpl::~FImpl() = default; + +void FSGHapticGloveImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGInterpolationSetImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGInterpolationSetImpl.cpp new file mode 100644 index 0000000..969d984 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGInterpolationSetImpl.cpp @@ -0,0 +1,228 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGInterpolationSetImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_InterpolationSet.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGInterpolationSetImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FInterpolationSetType InterpolationSet; + + /************************ + * Owner object + ************************/ + + FSGInterpolationSetImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGInterpolationSetImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGInterpolationSetImpl FSGInterpolationSetImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGInterpolationSetImpl InterpolationSet(FInterpolationSetType::Deserialize(MoveTemp(Serialized))); + return InterpolationSet; +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl(const float From1, const float From2, const float To1, const float To2) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->InterpolationSet = FInterpolationSetType(From1, From2, To1, To2); +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl(const float From1, const float From2, const float To1, const float To2, + const float Min, const float Max) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->InterpolationSet = FInterpolationSetType(From1, From2, To1, To2, Min, Max); +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl(const FInterpolationSetType& InterpolationSet) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->InterpolationSet = InterpolationSet; +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl(const FSGInterpolationSetImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGInterpolationSetImpl::FSGInterpolationSetImpl(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT = default; + +FSGInterpolationSetImpl::~FSGInterpolationSetImpl() = default; + +FSGInterpolationSetImpl& FSGInterpolationSetImpl::operator=(const FSGInterpolationSetImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGInterpolationSetImpl& FSGInterpolationSetImpl::operator=(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGInterpolationSetImpl::FInterpolationSetType& FSGInterpolationSetImpl::ToInterpolationSet() const +{ + return Pimpl->InterpolationSet; +} + +float FSGInterpolationSetImpl::GetX0() const +{ + return Pimpl->InterpolationSet.GetX0(); +} + +void FSGInterpolationSetImpl::SetX0(const float X0) +{ + Pimpl->InterpolationSet.SetX0(X0); +} + +float FSGInterpolationSetImpl::GetX1() const +{ + return Pimpl->InterpolationSet.GetX1(); +} + +void FSGInterpolationSetImpl::SetX1(const float X1) +{ + Pimpl->InterpolationSet.SetX1(X1); +} + +float FSGInterpolationSetImpl::GetY0() const +{ + return Pimpl->InterpolationSet.GetY0(); +} + +void FSGInterpolationSetImpl::SetY0(const float Y0) +{ + Pimpl->InterpolationSet.SetY0(Y0); +} + +float FSGInterpolationSetImpl::GetY1() const +{ + return Pimpl->InterpolationSet.GetY1(); +} + +void FSGInterpolationSetImpl::SetY1(const float Y1) +{ + Pimpl->InterpolationSet.SetY1(Y1); +} + +float FSGInterpolationSetImpl::GetMin() const +{ + return Pimpl->InterpolationSet.GetMin(); +} + +void FSGInterpolationSetImpl::SetMin(const float Min) +{ + Pimpl->InterpolationSet.SetMin(Min); +} + +float FSGInterpolationSetImpl::GetMax() const +{ + return Pimpl->InterpolationSet.GetMax(); +} + +void FSGInterpolationSetImpl::SetMax(const float Max) +{ + Pimpl->InterpolationSet.SetMax(Max); +} + +float FSGInterpolationSetImpl::Get(const float Value, const bool bLimit, const bool bNormalizeAngle) const +{ + return Pimpl->InterpolationSet.Get(Value, bLimit, bNormalizeAngle); +} + +bool FSGInterpolationSetImpl::Equals(const FSGInterpolationSetImpl& InterpolationSetImpl) const +{ + return Pimpl->InterpolationSet.Equals(InterpolationSetImpl.ToInterpolationSet()); +} + +FString FSGInterpolationSetImpl::ToString() const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->InterpolationSet.ToString().c_str())); + return String; +} + +FString FSGInterpolationSetImpl::ToString(const bool bLimits) const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->InterpolationSet.ToString(bLimits).c_str())); + return String; +} + +FString FSGInterpolationSetImpl::Serialize() const +{ + const FString Serialized(UTF8_TO_TCHAR(Pimpl->InterpolationSet.Serialize().c_str())); + return Serialized; +} + +FSGInterpolationSetImpl::FImpl::FImpl(FSGInterpolationSetImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGInterpolationSetImpl::FImpl::~FImpl() = default; + +void FSGInterpolationSetImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGJointKinematicsImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGJointKinematicsImpl.cpp new file mode 100644 index 0000000..c08dd87 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGJointKinematicsImpl.cpp @@ -0,0 +1,98 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGJointKinematicsImpl.h" + +#include "SGBuildHacks/SGInclude_Core_JointKinematics.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +bool FSGJointKinematicsImpl::ForwardKinematics(const FVector& StartPosition, const FQuat& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + FSGVect3DImpl::FVect3DType StartPositionVect3D( + FSGUnits::CentimetersToMillimeters(StartPosition)); + FSGQuatImpl::FQuatType StartRotationQuat(FSGQuatImpl(StartRotation).ToQuat()); + + std::vector JointLengthsVector{ + FSGArrayUtils::ToMillimeters(JointLengths) + }; + + std::vector JointAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(JointAngles) + }; + + std::vector NewPositions; + std::vector NewRotations; + + const bool bResults = FSGJointKinematicsImpl::FJointKinematicsType::ForwardKinematics( + MoveTemp(StartPositionVect3D), MoveTemp(StartRotationQuat), + MoveTemp(JointLengthsVector), MoveTemp(JointAnglesVector), + NewPositions, NewRotations); + + OutNewPositions = FSGArrayUtils::FromMillimeters(NewPositions);; + OutNewRotations = FSGArrayUtils::FromStdVector(NewRotations);; + + return bResults; +} + +bool FSGJointKinematicsImpl::ForwardKinematics(const FSGBasicHandModelImpl& Profile, const ESGFinger Finger, + const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + std::vector JointAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(JointAngles) + }; + + std::vector NewPositions; + std::vector NewRotations; + + const bool bResults = FSGJointKinematicsImpl::FJointKinematicsType::ForwardKinematics( + Profile.ToBasicHandModel(), FSGCoreEnumCast::ToEFinger(Finger), MoveTemp(JointAnglesVector), + NewPositions, NewRotations); + + OutNewPositions = FSGArrayUtils::FromMillimeters(NewPositions);; + OutNewRotations = FSGArrayUtils::FromStdVector(NewRotations);; + + return bResults; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGLibraryImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGLibraryImpl.cpp new file mode 100644 index 0000000..df14627 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGLibraryImpl.cpp @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGLibraryImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Library.h" +#include "SGCoreImpl/SGCoreEnumCast.h" + +FString FSGLibraryImpl::Version() +{ + const FString Version(UTF8_TO_TCHAR(FLibraryType::Version().c_str())); + return Version; +} + +ESGBackendType FSGLibraryImpl::GetBackendType() +{ + return FSGCoreEnumCast::ToESGBackendType(FLibraryType::GetBackendType()); +} + +FString FSGLibraryImpl::BackendVersion() +{ + const FString Version(UTF8_TO_TCHAR(FLibraryType::BackendVersion().c_str())); + return Version; +} + +FString FSGLibraryImpl::SGConnectVersion() +{ + const FString Version(UTF8_TO_TCHAR(FLibraryType::SGConnectVersion().c_str())); + return Version; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp new file mode 100644 index 0000000..7755155 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveImpl.cpp @@ -0,0 +1,550 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGNova2GloveImpl.h" + +#include +#include + +#include "Containers/StringConv.h" +#include "Misc/AssertionMacros.h" + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGBuildHacks/SGInclude_Core_HandInterpolator.h" +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_Nova2Glove.h" +#include "SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveInfo.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SensorNormalization.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGHandInterpolatorImpl.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGNova2GloveSensorDataImpl.h" +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGSensorNormalizationImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGNova2GloveImpl::FImpl +{ + /************************ + * Owner object + ************************/ + + FSGNova2GloveImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGNova2GloveImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TSharedRef FSGNova2GloveImpl::Parse(const FString& ConstantsString) +{ + std::string ConstantsStdString{TCHAR_TO_UTF8(*ConstantsString)}; + FSGDevicePtrType SGDevicePtr{FNova2GloveType::Parse(MoveTemp(ConstantsStdString))}; + ensureAlwaysMsgf(SGDevicePtr, TEXT("Invalid SGDevice!")); + const TSharedRef Nova2GloveImpl{ + MakeShared(std::dynamic_pointer_cast(MoveTemp(SGDevicePtr))) + }; + return Nova2GloveImpl; +} + +TArray FSGNova2GloveImpl::GetNova2Gloves() +{ + FNova2GloveVectorType Vector{FNova2GloveType::GetNova2Gloves()}; + + const TArray Array{ + FSGArrayUtils::FromStdVector(MoveTemp(Vector)) + }; + + return Array; +} + + +bool FSGNova2GloveImpl::GetNova2Glove(FSGNova2GloveImpl& OutGlove) +{ + FNova2GloveType Glove; + const bool bResult = FNova2GloveType::GetNova2Glove(Glove); + OutGlove = FSGNova2GloveImpl{MoveTemp(Glove)}; + return bResult; +} + +bool FSGNova2GloveImpl::GetNova2Glove(const bool bRightHanded, FSGNova2GloveImpl& OutGlove) +{ + FNova2GloveType Glove; + const bool bResult = FNova2GloveType::GetNova2Glove(bRightHanded, Glove); + OutGlove = FSGNova2GloveImpl{MoveTemp(Glove)}; + return bResult; +} + +void FSGNova2GloveImpl::CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + FNova2GloveType::CalculateGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), bRightHanded, TCHAR_TO_UTF8(*HardwareVersion), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition));; + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGNova2GloveImpl::CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + FNova2GloveType::CalculateWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), bRightHanded, TCHAR_TO_UTF8(*HardwareVersion), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +ANSICHAR FSGNova2GloveImpl::GetStreamByte() +{ + static const ANSICHAR Byte = FNova2GloveType::GetStreamByte(); + return Byte; +} + +const TArray& FSGNova2GloveImpl::GetNova2SensorRanges() +{ + static const TArray Ranges{FSGArrayUtils::FromStdVector(FNova2GloveType::GetNova2SensorRanges())}; + return Ranges; +} + +TArray FSGNova2GloveImpl::ToNormalizedValues(const FSGNova2GloveSensorDataImpl& SensorData) +{ + const TArray NormalizedValues{ + FSGArrayUtils::FromStdVector( + FNova2GloveType::ToNormalizedValues(SensorData.ToNova2GloveSensorData())) + }; + return NormalizedValues; +} + +TArray> FSGNova2GloveImpl::CalculateHandAngles( + const TArray& NormalizedValues, const FSGHandInterpolatorImpl& Interpolator, const bool bInfluenceIndex) +{ + std::vector NormalizedValuesVector{FSGArrayUtils::ToStdVector(NormalizedValues)}; + + const TArray> Angles{ + FSGArrayUtils::FromSenseGloveAngles( + FNova2GloveType::CalculateHandAngles( + MoveTemp(NormalizedValuesVector), Interpolator.ToHandInterpolator(), bInfluenceIndex)) + }; + + return Angles; +} + +TArray> FSGNova2GloveImpl::ToNormalizedAngles( + const TArray& NormalizedData, const FSGNovaGloveInfoImpl& GloveInfo) +{ + std::vector NormalizedDataVector{FSGArrayUtils::ToStdVector(NormalizedData)}; + + const TArray> Angles{ + FSGArrayUtils::FromSenseGloveAngles( + FNova2GloveType::ToNormalizedAngles(MoveTemp(NormalizedDataVector), GloveInfo.ToNovaGloveInfo())) + }; + + return Angles; +} + +TArray FSGNova2GloveImpl::ToNormalizedValues(const FSGNova2GloveSensorDataImpl& SensorData, + FSGSensorNormalizationImpl& OutSensorNormalizer) +{ + const TArray NormalizedValues{ + FSGArrayUtils::FromStdVector( + FNova2GloveType::ToNormalizedValues(SensorData.ToNova2GloveSensorData(), + OutSensorNormalizer.ToSensorNormalization())) + }; + return NormalizedValues; +} + +FSGNova2GloveImpl::FSGNova2GloveImpl() + : FSGHapticGloveImpl(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNova2GloveImpl::FSGNova2GloveImpl(const FSGNovaGloveInfoImpl& DeviceInfo) + : FSGHapticGloveImpl(FSGNova2GloveImpl(std::make_shared((DeviceInfo.ToNovaGloveInfo())))), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNova2GloveImpl::FSGNova2GloveImpl(const FNova2GloveType Nova2Glove) + : FSGHapticGloveImpl(std::make_shared(Nova2Glove)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNova2GloveImpl::FSGNova2GloveImpl(const FNova2GlovePtrType Nova2Glove) + : FSGHapticGloveImpl(Nova2Glove), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNova2GloveImpl::FSGNova2GloveImpl(const FSGNova2GloveImpl& Rhs) + : FSGHapticGloveImpl(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGNova2GloveImpl::FSGNova2GloveImpl(FSGNova2GloveImpl&& Rhs) SG_NOEXCEPT = default; + +FSGNova2GloveImpl::~FSGNova2GloveImpl() = default; + +FSGNova2GloveImpl& FSGNova2GloveImpl::operator=(const FSGNova2GloveImpl& Rhs) +{ + FSGHapticGloveImpl::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGNova2GloveImpl& FSGNova2GloveImpl::operator=(FSGNova2GloveImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGNova2GloveImpl::FNova2GloveType& FSGNova2GloveImpl::ToNova2Glove() const +{ + return *ToNova2GlovePtrChecked(); +} + +FSGNova2GloveImpl::FNova2GlovePtrType FSGNova2GloveImpl::ToNova2GlovePtr() const +{ + return std::dynamic_pointer_cast(ToSGDevicePtr()); +} + +FSGNova2GloveImpl::FNova2GlovePtrType FSGNova2GloveImpl::ToNova2GlovePtrChecked() const +{ + FNova2GlovePtrType Nova2Glove = std::dynamic_pointer_cast(ToSGDevicePtr()); + ensureAlwaysMsgf(Nova2Glove.get(), TEXT("Invalid Nova2Glove")); + return Nova2Glove; +} + +ESGDeviceType FSGNova2GloveImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToNova2GlovePtrChecked()->GetDeviceType()); +} + +FString FSGNova2GloveImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToNova2GlovePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGNova2GloveImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToNova2GlovePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGNova2GloveImpl::GetFirmwareVersion() const +{ + return ToNova2GlovePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGNova2GloveImpl::GetSubFirmwareVersion() const +{ + return ToNova2GlovePtrChecked()->GetSubFirmwareVersion(); +} + +bool FSGNova2GloveImpl::HasBattery() const +{ + return ToNova2GlovePtrChecked()->HasBattery(); +} + +bool FSGNova2GloveImpl::IsCharging() +{ + return ToNova2GlovePtrChecked()->IsCharging(); +} + +bool FSGNova2GloveImpl::GetBatteryLevel(float& OutBatteryLevel) +{ + return ToNova2GlovePtrChecked()->GetBatteryLevel(OutBatteryLevel); +} + +bool FSGNova2GloveImpl::IsRight() const +{ + return ToNova2GlovePtrChecked()->IsRight(); +} + +bool FSGNova2GloveImpl::GetImuRotation(FQuat& OutImu) +{ + FSGQuatImpl::FQuatType Imu; + const bool bResult = ToNova2GlovePtrChecked()->GetImuRotation(Imu); + OutImu = FSGQuatImpl{MoveTemp(Imu)}.ToFQuat(); + return bResult; +} + +bool FSGNova2GloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const +{ + FSGHandPoseImpl::FHandPoseType HandPose; + const bool bResult = ToNova2GlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(), HandPose); + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; + return bResult; +} + +bool FSGNova2GloveImpl::GetHandAngles(TArray>& OutHandAngles) const +{ + std::vector> HandAngles; + const bool bResult = ToNova2GlovePtrChecked()->GetHandAngles(HandAngles); + OutHandAngles = FSGArrayUtils::FromSenseGloveAngles(MoveTemp(HandAngles)); + return bResult; +} + +ESGHapticGloveCalibrationState FSGNova2GloveImpl::GetCalibrationState() const +{ + return FSGCoreEnumCast::ToESGHapticGloveCalibrationState(ToNova2GlovePtrChecked()->GetCalibrationState()); +} + +void FSGNova2GloveImpl::EndCalibration() +{ + ToNova2GlovePtrChecked()->EndCalibration(); +} + +void FSGNova2GloveImpl::ResetCalibration() +{ + ToNova2GlovePtrChecked()->ResetCalibration(); +} + +void FSGNova2GloveImpl::StopHaptics() +{ + ToNova2GlovePtrChecked()->StopHaptics(); +} + +void FSGNova2GloveImpl::StopVibrations() +{ + ToNova2GlovePtrChecked()->StopVibrations(); +} + +bool FSGNova2GloveImpl::SendHaptics() +{ + return ToNova2GlovePtrChecked()->SendHaptics(); +} + +bool FSGNova2GloveImpl::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +{ + return ToNova2GlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation)); +} + +bool FSGNova2GloveImpl::SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGHapticLocation Location) +{ + return ToNova2GlovePtrChecked()->SendCustomWaveform(OutWaveform.ToCustomWaveform(), + FSGCoreEnumCast::ToEHapticLocation(Location)); +} + +bool FSGNova2GloveImpl::QueueForceFeedbackLevels(const TArray& Levels01) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToNova2GlovePtrChecked()->QueueForceFeedbackLevels(MoveTemp(Levels01Vector)); +} + +bool FSGNova2GloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + return ToNova2GlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); +} + +bool FSGNova2GloveImpl::QueueVibroLevels(const TArray& Amplitudes) +{ + std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; + return ToNova2GlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); +} + +bool FSGNova2GloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToNova2GlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + +bool FSGNova2GloveImpl::QueueSqueezeLevel(const float SqueezeLevel01) +{ + return ToNova2GlovePtrChecked()->QueueSqueezeLevel(SqueezeLevel01); +} + +void FSGNova2GloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + ToNova2GlovePtrChecked()->GetGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition)); + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGNova2GloveImpl::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + ToNova2GlovePtrChecked()->GetWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +FSGNovaGloveInfoImpl FSGNova2GloveImpl::GetGloveInfo() const +{ + const FSGNovaGloveInfoImpl GloveInfo{ToNova2GlovePtrChecked()->GetGloveInfo()}; + return GloveInfo; +} + +bool FSGNova2GloveImpl::DoesIndexInfluenceOthers() const +{ + return ToNova2GlovePtrChecked()->DoesIndexInfluenceOthers(); +} + +void FSGNova2GloveImpl::SetIndexInfluencesOthers(const bool bInfluenceOthers) +{ + ToNova2GlovePtrChecked()->SetIndexInfluencesOthers(bInfluenceOthers); +} + +bool FSGNova2GloveImpl::SupportsOnBoardNormalization() const +{ + return ToNova2GlovePtrChecked()->SupportsOnBoardNormalization(); +} + +bool FSGNova2GloveImpl::GetSensorData(FSGNova2GloveSensorDataImpl& OutSensorData) const +{ + FSGNova2GloveSensorDataImpl::FNova2GloveSensorDataType SensorData; + const bool bResult = ToNova2GlovePtrChecked()->GetSensorData(SensorData); + OutSensorData = FSGNova2GloveSensorDataImpl{MoveTemp(SensorData)}; + return bResult; +} + +bool FSGNova2GloveImpl::GetNormalizedInput(TArray& OutNormalizedValues) const +{ + std::vector NormalizedValues; + const bool bResult = ToNova2GlovePtrChecked()->GetNormalizedInput(NormalizedValues); + OutNormalizedValues = FSGArrayUtils::FromStdVector(MoveTemp(NormalizedValues)); + return bResult; +} + +bool FSGNova2GloveImpl::SendRawData() +{ + return ToNova2GlovePtrChecked()->SendRawData(); +} + +bool FSGNova2GloveImpl::SendNormalizedData() +{ + return ToNova2GlovePtrChecked()->SendNormalizedData(); +} + +ESGNova2VibroMotor FSGNova2GloveImpl::ToNovaMotor(const ESGHapticLocation Location) const +{ + return FSGCoreEnumCast::ToESGNova2VibroMotor( + ToNova2GlovePtrChecked()->ToNova2Motor(FSGCoreEnumCast::ToEHapticLocation(Location))); +} + +int32 FSGNova2GloveImpl::ChannelIndex(const ESGNova2VibroMotor Motor) const +{ + return ToNova2GlovePtrChecked()->ChannelIndex(FSGCoreEnumCast::ToENova2VibroMotor(Motor)); +} + +void FSGNova2GloveImpl::ValidateWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGNova2VibroMotor Motor) const +{ + return ToNova2GlovePtrChecked()->ValidateWaveform(OutWaveform.ToCustomWaveform(), + FSGCoreEnumCast::ToENova2VibroMotor(Motor)); +} + +bool FSGNova2GloveImpl::SendCustomWaveform_Nova2(FSGCustomWaveformImpl& OutWaveform, + const ESGNova2VibroMotor Motor, const bool bValidateWaveform) +{ + return ToNova2GlovePtrChecked()->SendCustomWaveform_Nova2( + OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToENova2VibroMotor(Motor), bValidateWaveform); +} + +FString FSGNova2GloveImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(ToNova2GlovePtrChecked()->ToString().c_str())}; + return String; +} + +FSGNova2GloveImpl::FImpl::FImpl(FSGNova2GloveImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGNova2GloveImpl::FImpl::~FImpl() = default; + +void FSGNova2GloveImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveSensorDataImpl.cpp new file mode 100644 index 0000000..0689877 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNova2GloveSensorDataImpl.cpp @@ -0,0 +1,210 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGNova2GloveSensorDataImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Nova2GloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGNova2GloveSensorDataImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FNova2GloveSensorDataType Nova2GloveSensorData; + + /************************ + * Owner object + ************************/ + + FSGNova2GloveSensorDataImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGNova2GloveSensorDataImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGNova2GloveSensorDataImpl FSGNova2GloveSensorDataImpl::Parse(const FString& RawData, + const FSGNovaGloveInfoImpl& GloveInfo) +{ + std::string RawDataString(TCHAR_TO_UTF8(*RawData)); + const FSGNova2GloveSensorDataImpl SensorData{ + FNova2GloveSensorDataType::Parse(MoveTemp(RawDataString), GloveInfo.ToNovaGloveInfo()) + }; + return SensorData; +} + +FSGNova2GloveSensorDataImpl::FSGNova2GloveSensorDataImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNova2GloveSensorDataImpl::FSGNova2GloveSensorDataImpl(const ESGNormalizationState NormalizationState, + const TArray>& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> ValuesVector{ + FSGArrayUtils::ToStdVector( + Values) + }; + Pimpl->Nova2GloveSensorData = FNova2GloveSensorDataType( + FSGCoreEnumCast::ToENormalizationState(NormalizationState), + MoveTemp(ValuesVector), ParsedValues, FSGQuatImpl(ImuRotation).ToQuat(), bImuParsed, + BatteryLevel, bCharging); +} + +FSGNova2GloveSensorDataImpl::FSGNova2GloveSensorDataImpl(const FNova2GloveSensorDataType& Nova2GloveSensorData) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->Nova2GloveSensorData = Nova2GloveSensorData; +} + +FSGNova2GloveSensorDataImpl::FSGNova2GloveSensorDataImpl(const FSGNova2GloveSensorDataImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGNova2GloveSensorDataImpl::FSGNova2GloveSensorDataImpl(FSGNova2GloveSensorDataImpl&& Rhs) SG_NOEXCEPT = default; + +FSGNova2GloveSensorDataImpl::~FSGNova2GloveSensorDataImpl() = default; + +FSGNova2GloveSensorDataImpl& FSGNova2GloveSensorDataImpl::operator=(const FSGNova2GloveSensorDataImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGNova2GloveSensorDataImpl& FSGNova2GloveSensorDataImpl::operator=(FSGNova2GloveSensorDataImpl&& Rhs) SG_NOEXCEPT += default; + +const FSGNova2GloveSensorDataImpl::FNova2GloveSensorDataType& +FSGNova2GloveSensorDataImpl::ToNova2GloveSensorData() const +{ + return Pimpl->Nova2GloveSensorData; +} + +ESGNormalizationState FSGNova2GloveSensorDataImpl::GetSensorState() const +{ + return FSGCoreEnumCast::ToESGNormalizationState(Pimpl->Nova2GloveSensorData.GetSensorState()); +} + +TArray> FSGNova2GloveSensorDataImpl::GetSensorValues() const +{ + const TArray> SensorValues{ + FSGArrayUtils::FromStdVector( + Pimpl->Nova2GloveSensorData.GetSensorValues()) + }; + return SensorValues; +} + +float FSGNova2GloveSensorDataImpl::GetSensorValue(const ESGFinger Finger, const ESGNova2SensorLocation Location) const +{ + return Pimpl->Nova2GloveSensorData.GetSensorValue( + FSGCoreEnumCast::ToEFinger(Finger), FSGCoreEnumCast::ToESensorLocation(Location)); +} + +int32 FSGNova2GloveSensorDataImpl::GetParsedValues() const +{ + return Pimpl->Nova2GloveSensorData.GetParsedValues(); +} + +FQuat FSGNova2GloveSensorDataImpl::GetImuRotation() const +{ + return FSGQuatImpl(Pimpl->Nova2GloveSensorData.GetImuRotation()).ToFQuat(); +} + +bool FSGNova2GloveSensorDataImpl::IsImuParsed() const +{ + return Pimpl->Nova2GloveSensorData.IsImuParsed(); +} + +float FSGNova2GloveSensorDataImpl::GetBatteryLevel() const +{ + return Pimpl->Nova2GloveSensorData.GetBatteryLevel(); +} + +bool FSGNova2GloveSensorDataImpl::IsCharging() const +{ + return Pimpl->Nova2GloveSensorData.IsCharging(); +} + +bool FSGNova2GloveSensorDataImpl::Equals(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl) const +{ + return Pimpl->Nova2GloveSensorData.Equals(Nova2GloveSensorDataImpl.ToNova2GloveSensorData()); +} + +FString FSGNova2GloveSensorDataImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->Nova2GloveSensorData.ToString().c_str())}; + return String; +} + +FSGNova2GloveSensorDataImpl::FImpl::FImpl(FSGNova2GloveSensorDataImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGNova2GloveSensorDataImpl::FImpl::~FImpl() = default; + +void FSGNova2GloveSensorDataImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp new file mode 100644 index 0000000..3b06e8c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveImpl.cpp @@ -0,0 +1,585 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGNovaGloveImpl.h" + +#include +#include + +#include "Containers/StringConv.h" +#include "Misc/AssertionMacros.h" + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" +#include "SGBuildHacks/SGInclude_Core_CustomWaveform.h" +#include "SGBuildHacks/SGInclude_Core_HandInterpolator.h" +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_NovaGlove.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveInfo.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SensorNormalization.h" +#include "SGBuildHacks/SGInclude_Core_ThresholdCommand.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGCustomWaveformImpl.h" +#include "SGCoreImpl/SGHandInterpolatorImpl.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" +#include "SGCoreImpl/SGNovaGloveSensorDataImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGSensorNormalizationImpl.h" +#include "SGCoreImpl/SGThresholdCommandImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGNovaGloveImpl::FImpl +{ + /************************ + * Owner object + ************************/ + + FSGNovaGloveImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGNovaGloveImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TSharedRef FSGNovaGloveImpl::Parse(const FString& ConstantsString) +{ + std::string ConstantsStdString{TCHAR_TO_UTF8(*ConstantsString)}; + FSGDevicePtrType SGDevicePtr{FNovaGloveType::Parse(MoveTemp(ConstantsStdString))}; + ensureAlwaysMsgf(SGDevicePtr, TEXT("Invalid SGDevice!")); + const TSharedRef NovaGloveImpl{MakeShared( + std::dynamic_pointer_cast(MoveTemp(SGDevicePtr)))}; + return NovaGloveImpl; +} + +TArray FSGNovaGloveImpl::GetNovaGloves() +{ + const TArray Gloves{ + FSGArrayUtils::FromStdVector(FNovaGloveType::GetNovaGloves()) + }; + return Gloves; +} + +bool FSGNovaGloveImpl::GetNovaGlove(FSGNovaGloveImpl& OutGlove) +{ + FNovaGloveType Glove; + const bool bResult = FNovaGloveType::GetNovaGlove(Glove); + OutGlove = FSGNovaGloveImpl{MoveTemp(Glove)}; + return bResult; +} + +bool FSGNovaGloveImpl::GetNovaGlove(const bool bRightHanded, FSGNovaGloveImpl& OutGlove) +{ + FNovaGloveType Glove; + const bool bResult = FNovaGloveType::GetNovaGlove(bRightHanded, Glove); + OutGlove = FSGNovaGloveImpl{MoveTemp(Glove)}; + return bResult; +} + +void FSGNovaGloveImpl::CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + FNovaGloveType::CalculateGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), bRightHanded, + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition));; + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGNovaGloveImpl::CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + FNovaGloveType::CalculateWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), bRightHanded, + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +ANSICHAR FSGNovaGloveImpl::GetHapticsByte() +{ + static const ANSICHAR Byte = FNovaGloveType::GetHapticsByte(); + return Byte; +} + +ANSICHAR FSGNovaGloveImpl::GetThresholdsByte() +{ + static const ANSICHAR Byte = FNovaGloveType::GetThresholdsByte(); + return Byte; +} + +ANSICHAR FSGNovaGloveImpl::GetIgnoreThresholdsByte() +{ + static const ANSICHAR Byte = FNovaGloveType::GetIgnoreThresholdsByte(); + return Byte; +} + +const TArray& FSGNovaGloveImpl::GetNovaSensorRanges() +{ + static const TArray Ranges{FSGArrayUtils::FromStdVector(FNovaGloveType::GetNovaSensorRanges())}; + return Ranges; +} + +TArray FSGNovaGloveImpl::ToNormalizedValues(const FSGNovaGloveSensorDataImpl& SensorData) +{ + const TArray NormalizedValues{ + FSGArrayUtils::FromStdVector( + FNovaGloveType::ToNormalizedValues(SensorData.ToNovaGloveSensorData())) + }; + return NormalizedValues; +} + +TArray FSGNovaGloveImpl::ToNormalizedValues(const FSGNovaGloveSensorDataImpl& SensorData, + FSGSensorNormalizationImpl& OutSensorNormalizer) +{ + const TArray NormalizedValues{ + FSGArrayUtils::FromStdVector( + FNovaGloveType::ToNormalizedValues(SensorData.ToNovaGloveSensorData(), + OutSensorNormalizer.ToSensorNormalization())) + }; + return NormalizedValues; +} + +TArray> FSGNovaGloveImpl::CalculateHandAngles( + const TArray& NormalizedValues, const FSGHandInterpolatorImpl& Interpolator) +{ + std::vector NormalizedValuesVector{FSGArrayUtils::ToStdVector(NormalizedValues)}; + + const TArray> Angles{ + FSGArrayUtils::FromSenseGloveAngles( + FNovaGloveType::CalculateHandAngles(MoveTemp(NormalizedValuesVector), Interpolator.ToHandInterpolator())) + }; + + return Angles; +} + +FString FSGNovaGloveImpl::ToNovaCommandAsFlexion(const FSGThresholdCommandImpl& Thresholds) +{ + const FString Flexion{ + UTF8_TO_TCHAR(FNovaGloveType::ToNovaCommandAsFlexion(Thresholds.ToThresholdCommand()).c_str()) + }; + return Flexion; +} + +FString FSGNovaGloveImpl::ToNovaCommandAsRaw( + const FSGThresholdCommandImpl& Thresholds, const FSGSensorNormalizationImpl& Interpolator) +{ + const FString Raw{ + UTF8_TO_TCHAR(FNovaGloveType::ToNovaCommandAsRaw(Thresholds.ToThresholdCommand(), + Interpolator.ToSensorNormalization()).c_str()) + }; + return Raw; +} + +FSGNovaGloveImpl::FSGNovaGloveImpl() + : FSGHapticGloveImpl(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveImpl::FSGNovaGloveImpl(const FSGNovaGloveInfoImpl& DeviceInfo) + : FSGHapticGloveImpl(FSGNovaGloveImpl(std::make_shared((DeviceInfo.ToNovaGloveInfo())))), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveImpl::FSGNovaGloveImpl(const FNovaGloveType NovaGlove) + : FSGHapticGloveImpl(std::make_shared(NovaGlove)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveImpl::FSGNovaGloveImpl(const FNovaGlovePtrType NovaGlove) + : FSGHapticGloveImpl(NovaGlove), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveImpl::FSGNovaGloveImpl(const FSGNovaGloveImpl& Rhs) + : FSGHapticGloveImpl(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGNovaGloveImpl::FSGNovaGloveImpl(FSGNovaGloveImpl&& Rhs) SG_NOEXCEPT = default; + +FSGNovaGloveImpl::~FSGNovaGloveImpl() = default; + +FSGNovaGloveImpl& FSGNovaGloveImpl::operator=(const FSGNovaGloveImpl& Rhs) +{ + FSGHapticGloveImpl::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGNovaGloveImpl& FSGNovaGloveImpl::operator=(FSGNovaGloveImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGNovaGloveImpl::FNovaGloveType& FSGNovaGloveImpl::ToNovaGlove() const +{ + return *ToNovaGlovePtrChecked(); +} + +FSGNovaGloveImpl::FNovaGlovePtrType FSGNovaGloveImpl::ToNovaGlovePtr() const +{ + return std::dynamic_pointer_cast(ToSGDevicePtr()); +} + +FSGNovaGloveImpl::FNovaGlovePtrType FSGNovaGloveImpl::ToNovaGlovePtrChecked() const +{ + FNovaGlovePtrType NovaGlove{std::dynamic_pointer_cast(ToSGDevicePtr())}; + ensureAlwaysMsgf(NovaGlove.get(), TEXT("Invalid NovaGlove")); + return NovaGlove; +} + +ESGDeviceType FSGNovaGloveImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToNovaGlovePtrChecked()->GetDeviceType()); +} + +FString FSGNovaGloveImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToNovaGlovePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGNovaGloveImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToNovaGlovePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGNovaGloveImpl::GetFirmwareVersion() const +{ + return ToNovaGlovePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGNovaGloveImpl::GetSubFirmwareVersion() const +{ + return ToNovaGlovePtrChecked()->GetSubFirmwareVersion(); +} + +void FSGNovaGloveImpl::SetDeviceIndex(const int32 NewIndex) +{ + ToNovaGlovePtrChecked()->SetDeviceIndex(NewIndex); +} + +bool FSGNovaGloveImpl::HasBattery() const +{ + return ToNovaGlovePtrChecked()->HasBattery(); +} + +bool FSGNovaGloveImpl::IsCharging() +{ + return ToNovaGlovePtrChecked()->IsCharging(); +} + +bool FSGNovaGloveImpl::GetBatteryLevel(float& OutBatteryLevel) +{ + return ToNovaGlovePtrChecked()->GetBatteryLevel(OutBatteryLevel); +} + +bool FSGNovaGloveImpl::IsRight() const +{ + return ToNovaGlovePtrChecked()->IsRight(); +} + +bool FSGNovaGloveImpl::GetImuRotation(FQuat& OutImu) +{ + FSGQuatImpl::FQuatType Imu; + const bool bResult = ToNovaGlovePtrChecked()->GetImuRotation(Imu); + OutImu = FSGQuatImpl{MoveTemp(Imu)}.ToFQuat(); + return bResult; +} + +bool FSGNovaGloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const +{ + FSGHandPoseImpl::FHandPoseType HandPose; + const bool bResult = ToNovaGlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(), HandPose); + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; + return bResult; +} + +bool FSGNovaGloveImpl::GetHandAngles(TArray>& OutHandAngles) const +{ + std::vector> HandAngles; + const bool bResult = ToNovaGlovePtrChecked()->GetHandAngles(HandAngles); + OutHandAngles = FSGArrayUtils::FromSenseGloveAngles(MoveTemp(HandAngles)); + return bResult; +} + +ESGHapticGloveCalibrationState FSGNovaGloveImpl::GetCalibrationState() const +{ + return FSGCoreEnumCast::ToESGHapticGloveCalibrationState(ToNovaGlovePtrChecked()->GetCalibrationState()); +} + +void FSGNovaGloveImpl::EndCalibration() +{ + ToNovaGlovePtrChecked()->EndCalibration(); +} + +void FSGNovaGloveImpl::ResetCalibration() +{ + ToNovaGlovePtrChecked()->ResetCalibration(); +} + +void FSGNovaGloveImpl::StopHaptics() +{ + ToNovaGlovePtrChecked()->StopHaptics(); +} + +void FSGNovaGloveImpl::StopVibrations() +{ + ToNovaGlovePtrChecked()->StopVibrations(); +} + +bool FSGNovaGloveImpl::SendHaptics() +{ + return ToNovaGlovePtrChecked()->SendHaptics(); +} + +bool FSGNovaGloveImpl::SupportsCustomWaveform(const ESGHapticLocation AtLocation) const +{ + return ToNovaGlovePtrChecked()->SupportsCustomWaveform(FSGCoreEnumCast::ToEHapticLocation(AtLocation)); +} + +bool FSGNovaGloveImpl::SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location) +{ + return ToNovaGlovePtrChecked()->SendCustomWaveform(OutWaveform.ToCustomWaveform(), + FSGCoreEnumCast::ToEHapticLocation(Location)); +} + +bool FSGNovaGloveImpl::QueueForceFeedbackLevels(const TArray& Levels01) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToNovaGlovePtrChecked()->QueueForceFeedbackLevels(MoveTemp(Levels01Vector)); +} + +bool FSGNovaGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + return ToNovaGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); +} + +void FSGNovaGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + ToNovaGlovePtrChecked()->GetGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition)); + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGNovaGloveImpl::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + ToNovaGlovePtrChecked()->GetWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +FSGNovaGloveInfoImpl FSGNovaGloveImpl::GetGloveInfo() const +{ + const FSGNovaGloveInfoImpl GloveInfo{ToNovaGlovePtrChecked()->GetGloveInfo()}; + return GloveInfo; +} + +bool FSGNovaGloveImpl::SupportsThresholds() const +{ + return ToNovaGlovePtrChecked()->SupportsThresholds(); +} + +bool FSGNovaGloveImpl::SupportsCustomWaveforms() const +{ + return ToNovaGlovePtrChecked()->SupportsCustomWaveforms(); +} + +bool FSGNovaGloveImpl::SupportsOnBoardNormalization() const +{ + return ToNovaGlovePtrChecked()->SupportsOnBoardNormalization(); +} + +bool FSGNovaGloveImpl::GetSensorData(FSGNovaGloveSensorDataImpl& OutSensorData) const +{ + FSGNovaGloveSensorDataImpl::FNovaGloveSensorDataType SensorData; + const bool bResult = ToNovaGlovePtrChecked()->GetSensorData(SensorData); + OutSensorData = FSGNovaGloveSensorDataImpl{MoveTemp(SensorData)}; + return bResult; +} + +bool FSGNovaGloveImpl::GetNormalizedInput(TArray& OutNormalizedValues) const +{ + std::vector NormalizedValues; + const bool bResult = ToNovaGlovePtrChecked()->GetNormalizedInput(NormalizedValues); + OutNormalizedValues = FSGArrayUtils::FromStdVector(MoveTemp(NormalizedValues)); + return bResult; +} + +FString FSGNovaGloveImpl::ToNovaCommand( + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, const float WristLevel) const +{ + std::vector ForceFeedbackLevelsVector{FSGArrayUtils::ToStdVector(ForceFeedbackLevels)}; + std::vector BuzzLevelsVector{FSGArrayUtils::ToStdVector(BuzzLevels)}; + const FString Command{ + UTF8_TO_TCHAR(ToNovaGlovePtrChecked()->ToNovaCommand( + MoveTemp(ForceFeedbackLevelsVector), MoveTemp(BuzzLevelsVector), WristLevel).c_str()) + }; + return Command; +} + +bool FSGNovaGloveImpl::QueueVibroLevels(const TArray& Amplitudes) +{ + std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; + return ToNovaGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); +} + +bool FSGNovaGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToNovaGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + +bool FSGNovaGloveImpl::QueueVibroLevel(const int32 Finger, const float Amplitude) +{ + return ToNovaGlovePtrChecked()->QueueVibroLevel(Finger, Amplitude); +} + +bool FSGNovaGloveImpl::QueueWristLevel(const float Amplitude) +{ + return ToNovaGlovePtrChecked()->QueueWristLevel(Amplitude); +} + +ESGNovaVibroMotor FSGNovaGloveImpl::ToNovaMotor(const ESGHapticLocation Location) const +{ + return FSGCoreEnumCast::ToESGNovaVibroMotor( + ToNovaGlovePtrChecked()->ToNovaMotor(FSGCoreEnumCast::ToEHapticLocation(Location))); +} + +int32 FSGNovaGloveImpl::ChannelIndex(const ESGNovaVibroMotor Motor) const +{ + return ToNovaGlovePtrChecked()->ChannelIndex(FSGCoreEnumCast::ToENovaVibroMotor(Motor)); +} + +void FSGNovaGloveImpl::ValidateWaveform(FSGCustomWaveformImpl& OutWaveform, const ESGNovaVibroMotor Motor) const +{ + return ToNovaGlovePtrChecked()->ValidateWaveform(OutWaveform.ToCustomWaveform(), + FSGCoreEnumCast::ToENovaVibroMotor(Motor)); +} + +bool FSGNovaGloveImpl::SendCustomWaveform_Nova(FSGCustomWaveformImpl& OutWaveform, + const ESGNovaVibroMotor Motor, const bool bValidateWaveform) +{ + return ToNovaGlovePtrChecked()->SendCustomWaveform_Nova( + OutWaveform.ToCustomWaveform(), FSGCoreEnumCast::ToENovaVibroMotor(Motor), bValidateWaveform); +} + +bool FSGNovaGloveImpl::QueueThresholdCommand_Flexion(const int32 Finger, const float FlexionThreshold) +{ + return ToNovaGlovePtrChecked()->QueueThresholdCommand_Flexion(Finger, FlexionThreshold); +} + +bool FSGNovaGloveImpl::QueueClearThreshold(const int32 Finger) +{ + return ToNovaGlovePtrChecked()->QueueClearThreshold(Finger); +} + +FString FSGNovaGloveImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(ToNovaGlovePtrChecked()->ToString().c_str())}; + return String; +} + +FSGNovaGloveImpl::FImpl::FImpl(FSGNovaGloveImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGNovaGloveImpl::FImpl::~FImpl() = default; + +void FSGNovaGloveImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveInfoImpl.cpp new file mode 100644 index 0000000..1dd7346 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveInfoImpl.cpp @@ -0,0 +1,222 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveInfo.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGNovaGloveInfoImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FNovaGloveInfoType NovaGloveInfo; + + /************************ + * Owner object + ************************/ + + FSGNovaGloveInfoImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGNovaGloveInfoImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +bool FSGNovaGloveInfoImpl::Parse(const FString& ConstantsString, FSGNovaGloveInfoImpl& OutGloveInfo) +{ + std::string Constants(TCHAR_TO_UTF8(*ConstantsString)); + FNovaGloveInfoType GloveInfo; + + const bool bResults = FNovaGloveInfoType::Parse(MoveTemp(Constants), GloveInfo); + OutGloveInfo = FSGNovaGloveInfoImpl(GloveInfo); + + return bResults; +} + +FSGNovaGloveInfoImpl FSGNovaGloveInfoImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGNovaGloveInfoImpl GloveInfo(FNovaGloveInfoType::Deserialize(MoveTemp(Serialized))); + return GloveInfo; +} + +FSGNovaGloveInfoImpl::FSGNovaGloveInfoImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveInfoImpl::FSGNovaGloveInfoImpl( + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FQuat& ImuCorrection, const int32 NumberOfSensors) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::string DeviceIdString(TCHAR_TO_UTF8(*DeviceId)); + std::string HardwareVersionString(TCHAR_TO_UTF8(*HardwareVersion)); + FSGQuatImpl::FQuatType ImuCorrectionQuat(FSGQuatImpl(ImuCorrection).ToQuat()); + + Pimpl->NovaGloveInfo = FNovaGloveInfoType(MoveTemp(DeviceIdString), + MoveTemp(HardwareVersionString), FirmwareVersion, SubFirmwareVersion, + bRightHanded, MoveTemp(ImuCorrectionQuat), NumberOfSensors); +} + +FSGNovaGloveInfoImpl::FSGNovaGloveInfoImpl(const FNovaGloveInfoType& GloveInfo) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->NovaGloveInfo = GloveInfo; +} + +FSGNovaGloveInfoImpl::FSGNovaGloveInfoImpl(const FSGNovaGloveInfoImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGNovaGloveInfoImpl::FSGNovaGloveInfoImpl(FSGNovaGloveInfoImpl&& Rhs) SG_NOEXCEPT = default; + +FSGNovaGloveInfoImpl::~FSGNovaGloveInfoImpl() = default; + +FSGNovaGloveInfoImpl& FSGNovaGloveInfoImpl::operator=(const FSGNovaGloveInfoImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGNovaGloveInfoImpl& FSGNovaGloveInfoImpl::operator=(FSGNovaGloveInfoImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGNovaGloveInfoImpl::FNovaGloveInfoType& FSGNovaGloveInfoImpl::ToNovaGloveInfo() const +{ + return Pimpl->NovaGloveInfo; +} + +FString FSGNovaGloveInfoImpl::GetDeviceId() const +{ + const FString DeviceId(UTF8_TO_TCHAR(Pimpl->NovaGloveInfo.GetDeviceId().c_str())); + return DeviceId; +} + +FString FSGNovaGloveInfoImpl::GetHardwareVersion() const +{ + const FString HardwareVersion(UTF8_TO_TCHAR(Pimpl->NovaGloveInfo.GetHardwareVersion().c_str())); + return HardwareVersion; +} + +int32 FSGNovaGloveInfoImpl::GetFirmwareVersion() const +{ + return Pimpl->NovaGloveInfo.GetFirmwareVersion(); +} + +int32 FSGNovaGloveInfoImpl::GetSubFirmwareVersion() const +{ + return Pimpl->NovaGloveInfo.GetSubFirmwareVersion(); +} + +bool FSGNovaGloveInfoImpl::IsRight() const +{ + return Pimpl->NovaGloveInfo.IsRight(); +} + +FQuat FSGNovaGloveInfoImpl::GetImuCorrection() const +{ + const FQuat ImuCorrection(FSGQuatImpl(Pimpl->NovaGloveInfo.GetImuCorrection()).ToFQuat()); + return ImuCorrection; +} + +int32 FSGNovaGloveInfoImpl::GetNumberOfSensors() const +{ + return Pimpl->NovaGloveInfo.GetNumberOfSensors(); +} + +bool FSGNovaGloveInfoImpl::FirmwareNewerThan(const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) const +{ + return Pimpl->NovaGloveInfo.FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool FSGNovaGloveInfoImpl::FirmwareOlderThan(const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) const +{ + return Pimpl->NovaGloveInfo.FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool FSGNovaGloveInfoImpl::Equals(const FSGNovaGloveInfoImpl& SGNovaGloveInfo) const +{ + return Pimpl->NovaGloveInfo.Equals(SGNovaGloveInfo.ToNovaGloveInfo()); +} + +FString FSGNovaGloveInfoImpl::ToString() const +{ + FString String(UTF8_TO_TCHAR(Pimpl->NovaGloveInfo.ToString().c_str())); + return String; +} + +FString FSGNovaGloveInfoImpl::Serialize() const +{ + FString Serialized(UTF8_TO_TCHAR(Pimpl->NovaGloveInfo.Serialize().c_str())); + return Serialized; +} + +FSGNovaGloveInfoImpl::FImpl::FImpl(FSGNovaGloveInfoImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGNovaGloveInfoImpl::FImpl::~FImpl() = default; + +void FSGNovaGloveInfoImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveSensorDataImpl.cpp new file mode 100644 index 0000000..a5be4b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGNovaGloveSensorDataImpl.cpp @@ -0,0 +1,225 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGNovaGloveSensorDataImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_NovaGloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGNovaGloveSensorDataImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FNovaGloveSensorDataType NovaGloveSensorData; + + /************************ + * Owner object + ************************/ + + FSGNovaGloveSensorDataImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGNovaGloveSensorDataImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +const FSGNovaGloveSensorDataImpl& FSGNovaGloveSensorDataImpl::Empty() +{ + static const FSGNovaGloveSensorDataImpl EmptyData(FNovaGloveSensorDataType::Empty()); + return EmptyData; +} + +FSGNovaGloveSensorDataImpl FSGNovaGloveSensorDataImpl::Parse(const FString& RawData, + const FSGNovaGloveInfoImpl& GloveInfo) +{ + std::string RawDataString(TCHAR_TO_UTF8(*RawData)); + const FSGNovaGloveSensorDataImpl SensorData(FNovaGloveSensorDataType::Parse( + MoveTemp(RawDataString), GloveInfo.ToNovaGloveInfo())); + return SensorData; +} + +FSGNovaGloveSensorDataImpl FSGNovaGloveSensorDataImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGNovaGloveSensorDataImpl SensorData(FNovaGloveSensorDataType::Deserialize(MoveTemp(Serialized))); + return SensorData; +} + +FSGNovaGloveSensorDataImpl::FSGNovaGloveSensorDataImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGNovaGloveSensorDataImpl::FSGNovaGloveSensorDataImpl(const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, + const float BatteryLevel, const bool bCharging) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector ValuesVector{ + FSGArrayUtils::ToStdVector( + Values) + }; + Pimpl->NovaGloveSensorData = FNovaGloveSensorDataType( + MoveTemp(ValuesVector), ParsedValues, FSGQuatImpl(ImuRotation).ToQuat(), bImuParsed, + BatteryLevel, bCharging); +} + +FSGNovaGloveSensorDataImpl::FSGNovaGloveSensorDataImpl(const FNovaGloveSensorDataType& NovaGloveSensorData) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->NovaGloveSensorData = NovaGloveSensorData; +} + +FSGNovaGloveSensorDataImpl::FSGNovaGloveSensorDataImpl(const FSGNovaGloveSensorDataImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGNovaGloveSensorDataImpl::FSGNovaGloveSensorDataImpl(FSGNovaGloveSensorDataImpl&& Rhs) SG_NOEXCEPT = default; + +FSGNovaGloveSensorDataImpl::~FSGNovaGloveSensorDataImpl() = default; + +FSGNovaGloveSensorDataImpl& FSGNovaGloveSensorDataImpl::operator=(const FSGNovaGloveSensorDataImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGNovaGloveSensorDataImpl& FSGNovaGloveSensorDataImpl::operator=(FSGNovaGloveSensorDataImpl&& Rhs) SG_NOEXCEPT += default; + +const FSGNovaGloveSensorDataImpl::FNovaGloveSensorDataType& FSGNovaGloveSensorDataImpl::ToNovaGloveSensorData() const +{ + return Pimpl->NovaGloveSensorData; +} + +ESGNormalizationState FSGNovaGloveSensorDataImpl::GetSensorState() const +{ + return FSGCoreEnumCast::ToESGNormalizationState(Pimpl->NovaGloveSensorData.GetSensorState()); +} + +TArray FSGNovaGloveSensorDataImpl::GetSensorValues() const +{ + const TArray SensorValues{ + FSGArrayUtils::FromStdVector( + Pimpl->NovaGloveSensorData.GetSensorValues()) + }; + return SensorValues; +} + +float FSGNovaGloveSensorDataImpl::GetSensorValue(const ESGFinger Finger, const ESGNovaSensorLocation Location) const +{ + return Pimpl->NovaGloveSensorData.GetSensorValue( + FSGCoreEnumCast::ToEFinger(Finger), FSGCoreEnumCast::ToESensorLocation(Location)); +} + +int32 FSGNovaGloveSensorDataImpl::GetParsedValues() const +{ + return Pimpl->NovaGloveSensorData.GetParsedValues(); +} + +FQuat FSGNovaGloveSensorDataImpl::GetImuRotation() const +{ + return FSGQuatImpl(Pimpl->NovaGloveSensorData.GetImuRotation()).ToFQuat(); +} + +bool FSGNovaGloveSensorDataImpl::IsImuParsed() const +{ + return Pimpl->NovaGloveSensorData.IsImuParsed(); +} + +float FSGNovaGloveSensorDataImpl::GetBatteryLevel() const +{ + return Pimpl->NovaGloveSensorData.GetBatteryLevel(); +} + +bool FSGNovaGloveSensorDataImpl::IsCharging() const +{ + return Pimpl->NovaGloveSensorData.IsCharging(); +} + +bool FSGNovaGloveSensorDataImpl::Equals(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl) const +{ + return Pimpl->NovaGloveSensorData.Equals(NovaGloveSensorDataImpl.ToNovaGloveSensorData()); +} + +FString FSGNovaGloveSensorDataImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->NovaGloveSensorData.ToString().c_str())}; + return String; +} + +FString FSGNovaGloveSensorDataImpl::Serialize() const +{ + const FString Serialized{UTF8_TO_TCHAR(Pimpl->NovaGloveSensorData.Serialize().c_str())}; + return Serialized; +} + +FSGNovaGloveSensorDataImpl::FImpl::FImpl(FSGNovaGloveSensorDataImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGNovaGloveSensorDataImpl::FImpl::~FImpl() = default; + +void FSGNovaGloveSensorDataImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.cpp new file mode 100644 index 0000000..7507d99 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.cpp @@ -0,0 +1,307 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGQuatImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGVect3DImpl.h" + +struct FSGQuatImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FQuatType Quat; + + /************************ + * Owner object + ************************/ + + FSGQuatImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGQuatImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +const FSGQuatImpl& FSGQuatImpl::Identity() +{ + static const FSGQuatImpl I(FQuatType::Identity()); + return I; +} + +FSGQuatImpl FSGQuatImpl::FromEuler(const float XAngle, const float YAngle, const float ZAngle) +{ + return FSGQuatImpl(FQuatType::FromEuler(XAngle, YAngle, ZAngle)); +} + +FSGQuatImpl FSGQuatImpl::FromEuler(const FSGVect3DImpl& Euler) +{ + return FSGQuatImpl(FQuatType::FromEuler(Euler.ToVect3D())); +} + +FSGQuatImpl FSGQuatImpl::FromEuler(const FVector& Euler) +{ + return FSGQuatImpl(FQuatType::FromEuler(FSGVect3DImpl(Euler).ToVect3D())); +} + +FSGQuatImpl FSGQuatImpl::FromAngleAxis(const float Angle, const float XAxis, const float YAxis, const float ZAxis) +{ + return FSGQuatImpl(FQuatType::FromAngleAxis(Angle, XAxis, YAxis, ZAxis)); +} + +FSGQuatImpl FSGQuatImpl::FromAngleAxis(const float Angle, const FSGVect3DImpl& Axis) +{ + return FSGQuatImpl(FQuatType::FromAngleAxis(Angle, Axis.ToVect3D())); +} + +FSGQuatImpl FSGQuatImpl::FromAngleAxis(const float Angle, const FVector& Axis) +{ + return FSGQuatImpl(FQuatType::FromAngleAxis(Angle, FSGVect3DImpl(Axis).ToVect3D())); +} + +FSGQuatImpl FSGQuatImpl::Invert(const FSGQuatImpl& QuatImpl) +{ + return FSGQuatImpl(FQuatType::Invert(QuatImpl.ToQuat())); +} + +FSGQuatImpl FSGQuatImpl::Normalize(const FSGQuatImpl& QuatImpl) +{ + return FSGQuatImpl(FQuatType::Normalize(QuatImpl.ToQuat())); +} + +bool FSGQuatImpl::Deserialize(const FString& String, FSGQuatImpl& OutResult, const ANSICHAR Delimiter) +{ + FQuatType Quat; + const bool bReturn = FQuatType::Deserialize(TCHAR_TO_UTF8(*String), Quat, Delimiter); + OutResult = FSGQuatImpl(Quat); + return bReturn; +} + +FSGQuatImpl::FSGQuatImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGQuatImpl::FSGQuatImpl(const float X, const float Y, const float Z, const float W) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->Quat = FQuatType(X, Y, Z, W); +} + +FSGQuatImpl::FSGQuatImpl(const FQuatType& Quat) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->Quat = Quat; +} + +FSGQuatImpl::FSGQuatImpl(const FQuat& Quat) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + /// NOTE + /// Unreal Engine uses a left-handed, z-up world coordinate system, which yealds clockwise rotations: + /// Forward X + /// Right Y + /// Up Z + /// SenseGlove uses a right-handed, z-up corrdinate systenm, which yealds counter-clockwise rotations: + /// Forward X + /// Left Y + /// Up Z + Pimpl->Quat = FQuatType(-Quat.X, Quat.Y, -Quat.Z, Quat.W); +} + +FSGQuatImpl::FSGQuatImpl(const FSGQuatImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGQuatImpl::FSGQuatImpl(FSGQuatImpl&& Rhs) SG_NOEXCEPT = default; + +FSGQuatImpl::~FSGQuatImpl() = default; + +FSGQuatImpl& FSGQuatImpl::operator=(const FSGQuatImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGQuatImpl& FSGQuatImpl::operator=(FSGQuatImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGQuatImpl::FQuatType& FSGQuatImpl::ToQuat() const +{ + return Pimpl->Quat; +} + +FQuat FSGQuatImpl::ToFQuat() const +{ + /// NOTE + /// Unreal Engine uses a left-handed, z-up world coordinate system, which yealds clockwise rotations: + /// Forward X + /// Right Y + /// Up Z + /// SenseGlove uses a right-handed, z-up corrdinate systenm, which yealds counter-clockwise rotations: + /// Forward X + /// Left Y + /// Up Z + return FQuat(-Pimpl->Quat.GetX(), Pimpl->Quat.GetY(), -Pimpl->Quat.GetZ(), Pimpl->Quat.GetW()); +} + +FSGQuatImpl FSGQuatImpl::operator*(const FSGQuatImpl& QuatImpl) const +{ + return FSGQuatImpl(Pimpl->Quat.operator*(QuatImpl.ToQuat())); +} + +FSGVect3DImpl FSGQuatImpl::operator*(const FSGVect3DImpl& Vect3DImpl) const +{ + return FSGVect3DImpl(Pimpl->Quat.operator*(Vect3DImpl.ToVect3D())); +} + +FVector FSGQuatImpl::operator*(const FVector& Vector) const +{ + return FSGVect3DImpl(Pimpl->Quat.operator*(FSGVect3DImpl(Vector).ToVect3D())).ToFVector(); +} + +float FSGQuatImpl::GetX() const +{ + return Pimpl->Quat.GetX(); +} + +void FSGQuatImpl::SetX(const float X) +{ + Pimpl->Quat.SetX(X); +} + +float FSGQuatImpl::GetY() const +{ + return Pimpl->Quat.GetY(); +} + +void FSGQuatImpl::SetY(const float Y) +{ + Pimpl->Quat.SetY(Y); +} + +float FSGQuatImpl::GetZ() const +{ + return Pimpl->Quat.GetZ(); +} + +void FSGQuatImpl::SetZ(const float Z) +{ + Pimpl->Quat.SetZ(Z); +} + +float FSGQuatImpl::GetW() const +{ + return Pimpl->Quat.GetW(); +} + +void FSGQuatImpl::SetW(const float W) +{ + Pimpl->Quat.SetW(W); +} + +FSGVect3DImpl FSGQuatImpl::ToEulerImpl() const +{ + return FSGVect3DImpl(Pimpl->Quat.ToEuler()); +} + +FVector FSGQuatImpl::ToEuler() const +{ + return FSGVect3DImpl(Pimpl->Quat.ToEuler()).ToFVector(); +} + +FSGVect3DImpl FSGQuatImpl::Rotate(const FSGVect3DImpl& Vect3DImpl) const +{ + return FSGVect3DImpl(Pimpl->Quat.Rotate(Vect3DImpl.ToVect3D())); +} + +FVector FSGQuatImpl::Rotate(const FVector& Vector) const +{ + return FSGVect3DImpl(Pimpl->Quat.Rotate(FSGVect3DImpl(Vector).ToVect3D())).ToFVector(); +} + +bool FSGQuatImpl::Equals(const FSGQuatImpl& QuatImpl) const +{ + return Pimpl->Quat.Equals(QuatImpl.ToQuat()); +} + +bool FSGQuatImpl::IsIdentity() const +{ + return Pimpl->Quat.IsIdentity(); +} + +float FSGQuatImpl::Magnitude() const +{ + return Pimpl->Quat.Magnitude(); +} + +FString FSGQuatImpl::ToString() const +{ + return UTF8_TO_TCHAR(Pimpl->Quat.ToString().c_str()); +} + +FString FSGQuatImpl::Serialize(const ANSICHAR Delimiter) const +{ + return UTF8_TO_TCHAR(Pimpl->Quat.Serialize(Delimiter).c_str()); +} + +FSGQuatImpl::FImpl::FImpl(FSGQuatImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGQuatImpl::FImpl::~FImpl() = default; + +void FSGQuatImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.h new file mode 100644 index 0000000..008c06d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGQuatImpl.h @@ -0,0 +1,174 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +class FSGVect3DImpl; + +namespace SGCore +{ + namespace Kinematics + { + class Quat; + } +} + +class SENSEGLOVECOREIMPL_API FSGQuatImpl +{ +public: + typedef SGCore::Kinematics::Quat FQuatType; + +public: + static const FSGQuatImpl& Identity(); + + static FSGQuatImpl FromEuler(float XAngle, float YAngle, float ZAngle); + static FSGQuatImpl FromEuler(const FSGVect3DImpl& Euler); + static FSGQuatImpl FromEuler(const FVector& Euler); + static FSGQuatImpl FromAngleAxis(float Angle, float XAxis, float YAxis, float ZAxis); + static FSGQuatImpl FromAngleAxis(float Angle, const FSGVect3DImpl& Axis); + static FSGQuatImpl FromAngleAxis(float Angle, const FVector& Axis); + + static FSGQuatImpl Invert(const FSGQuatImpl& QuatImpl); + static FSGQuatImpl Normalize(const FSGQuatImpl& QuatImpl); + + static bool Deserialize(const FString& String, FSGQuatImpl& OutResult, ANSICHAR Delimiter); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGQuatImpl(); + FSGQuatImpl(float X, float Y, float Z, float W); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGQuatImpl(const FQuatType& Quat); + + /** + * The cast from FQuat type constructor. + */ + explicit FSGQuatImpl(const FQuat& Quat); + +public: + /** + * The copy constructor. + */ + FSGQuatImpl(const FSGQuatImpl& Rhs); + + /** + * The move constructor. + */ + FSGQuatImpl(FSGQuatImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGQuatImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGQuatImpl& operator=(const FSGQuatImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGQuatImpl& operator=(FSGQuatImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FQuatType& ToQuat() const; + + /** + * The cast to FQuat type method. + */ + FQuat ToFQuat() const; + +public: + FSGQuatImpl operator*(const FSGQuatImpl& QuatImpl) const; + FSGVect3DImpl operator*(const FSGVect3DImpl& Vect3DImpl) const; + FVector operator*(const FVector& Vector) const; + +public: + float GetX() const; + void SetX(float X); + + float GetY() const; + void SetY(float Y); + + float GetZ() const; + void SetZ(float Z); + + float GetW() const; + void SetW(float W); + +public: + FSGVect3DImpl ToEulerImpl() const; + FVector ToEuler() const; + + FSGVect3DImpl Rotate(const FSGVect3DImpl& Vect3DImpl) const; + FVector Rotate(const FVector& Vector) const; + + bool Equals(const FSGQuatImpl& QuatImpl) const; + + bool IsIdentity() const; + + float Magnitude() const; + + FString ToString() const; + + FString Serialize(ANSICHAR Delimiter) const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseComImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseComImpl.cpp new file mode 100644 index 0000000..1adefd5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseComImpl.cpp @@ -0,0 +1,76 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseComImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_SenseCom.h" + +bool FSGSenseComImpl::RegisterExe() +{ + return FSenseComType::RegisterExe(); +} + +bool FSGSenseComImpl::RegisterExe(const FString& ExePath) +{ + return FSenseComType::RegisterExe(std::move(std::string(TCHAR_TO_UTF8(*ExePath)))); +} + +bool FSGSenseComImpl::GetExePath(FString& OutExePath) +{ + std::string Path; + const bool bResult = FSenseComType::GetExePath(Path); + OutExePath = FString(UTF8_TO_TCHAR(Path.c_str())); + return bResult; +} + +bool FSGSenseComImpl::ScanningActive() +{ + return FSenseComType::ScanningActive(); +} + +bool FSGSenseComImpl::GetCurrentExeDirectory(FString& OutDirectory) +{ + std::string Directory; + const bool bResult = FSenseComType::GetCurrentExeDirectory(Directory); + OutDirectory = FString(UTF8_TO_TCHAR(Directory.c_str())); + return bResult; +} + +bool FSGSenseComImpl::StartupSenseCom() +{ + return FSenseComType::StartupSenseCom(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp new file mode 100644 index 0000000..060d448 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveImpl.cpp @@ -0,0 +1,586 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGloveImpl.h" + +#include +#include + +#include "Containers/StringConv.h" +#include "Misc/AssertionMacros.h" + +#include "SGBuildHacks/SGInclude_Core_BasicHandModel.h" +#include "SGBuildHacks/SGInclude_Core_HandInterpolator.h" +#include "SGBuildHacks/SGInclude_Core_HandPose.h" +#include "SGBuildHacks/SGInclude_Core_HapticGlove.h" +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SenseGlove.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveInfo.h" +#include "SGBuildHacks/SGInclude_Core_SenseGlovePose.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGBasicHandModelImpl.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGHandInterpolatorImpl.h" +#include "SGCoreImpl/SGHandPoseImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" +#include "SGCoreImpl/SGSenseGlovePoseImpl.h" +#include "SGCoreImpl/SGSenseGloveSensorDataImpl.h" +#include "SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGSenseGloveImpl::FImpl +{ + /************************ + * Owner object + ************************/ + + FSGSenseGloveImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSenseGloveImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TSharedRef FSGSenseGloveImpl::Parse(const FString& ConstantsString) +{ + std::string ConstantsStdString{TCHAR_TO_UTF8(*ConstantsString)}; + FSGDevicePtrType SGDevicePtr{FSenseGloveType::Parse(MoveTemp(ConstantsStdString))}; + ensureAlwaysMsgf(SGDevicePtr, TEXT("Invalid SGDevice!")); + const TSharedRef SenseGloveImpl{ + MakeShared(std::dynamic_pointer_cast(MoveTemp(SGDevicePtr))) + }; + return SenseGloveImpl; +} + +TArray FSGSenseGloveImpl::GetSenseGloves() +{ + FSenseGloveVectorType Vector{FSenseGloveType::GetSenseGloves()}; + + const TArray Array{ + FSGArrayUtils::FromStdVector(MoveTemp(Vector)) + }; + + return Array; +} + +bool FSGSenseGloveImpl::GetSenseGlove(FSGSenseGloveImpl& OutGlove) +{ + FSenseGloveType Glove; + const bool bResult = FSenseGloveType::GetSenseGlove(Glove); + OutGlove = FSGSenseGloveImpl{MoveTemp(Glove)}; + return bResult; +} + +bool FSGSenseGloveImpl::GetSenseGlove(const bool bRightHanded, FSGSenseGloveImpl& OutGlove) +{ + FSenseGloveType Glove; + const bool bResult = FSenseGloveType::GetSenseGlove(bRightHanded, Glove); + OutGlove = FSGSenseGloveImpl{MoveTemp(Glove)}; + return bResult; +} + +void FSGSenseGloveImpl::CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + FSenseGloveType::CalculateGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition));; + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGSenseGloveImpl::CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const bool bRightHanded, const ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + FSenseGloveType::CalculateWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + bRightHanded, FSGCoreEnumCast::ToEFinger(MountedOn), + FSGUnits::CentimetersToMillimeters(GloveWristPositionOffset), + FSGQuatImpl(GloveWristRotationOffset).ToQuat(), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +ANSICHAR FSGSenseGloveImpl::GetHapticsByte() +{ + static const ANSICHAR Byte = FSenseGloveType::GetHapticsByte(); + return Byte; +} + +ANSICHAR FSGSenseGloveImpl::GetThumperByte() +{ + static const ANSICHAR Byte = FSenseGloveType::GetThumperByte(); + return Byte; +} + +const FVector& FSGSenseGloveImpl::GetDefaultThimbleOffset() +{ + static const FVector Offset{FSGVect3DImpl{FSenseGloveType::GetDefaultThimbleOffset()}.ToFVector()}; + return Offset; +} + +FSGSenseGlovePoseImpl FSGSenseGloveImpl::CalculateGlovePose(const FSGSenseGloveSensorDataImpl& SensorData, + const FSGSenseGloveInfoImpl& GloveModel) +{ + const FSGSenseGlovePoseImpl Pose{ + FSenseGloveType::CalculateGlovePose(SensorData.ToSenseGloveSensorData(), GloveModel.ToSenseGloveInfo()) + }; + return Pose; +} + +FSGSenseGlovePoseImpl FSGSenseGloveImpl::CalculateGlovePose(const TArray>& GloveAngles, + const FSGSenseGloveInfoImpl& GloveModel) +{ + std::vector> GloveAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(GloveAngles) + }; + + const FSGSenseGlovePoseImpl Pose{ + FSenseGloveType::CalculateGlovePose(MoveTemp(GloveAnglesVector), GloveModel.ToSenseGloveInfo()) + }; + + return Pose; +} + +void FSGSenseGloveImpl::NormalizeValues( + const TArray& SumAngles, const FSGSenseGloveSensorNormalizerImpl& Normalizer, + TArray& OutFlexions, TArray& OutAbductions) +{ + std::vector SumAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(SumAngles) + }; + + std::vector Flexions; + std::vector Abductions; + + FSenseGloveType::NormalizeValues(MoveTemp(SumAnglesVector), Normalizer.ToSenseGloveSensorNormalizer(), + Flexions, Abductions); + + OutFlexions = FSGArrayUtils::FromStdVector(MoveTemp(Flexions)); + OutAbductions = FSGArrayUtils::FromStdVector(MoveTemp(Abductions)); +} + +void FSGSenseGloveImpl::CalculateHandAngles( + const FSGSenseGlovePoseImpl& GlovePose, + const FSGSenseGloveSensorNormalizerImpl& Normalizer, const FSGHandInterpolatorImpl& NormalizedToAngles, + TArray>& OutHandAngles) +{ + std::vector> HandAngles; + + FSenseGloveType::CalculateHandAngles( + GlovePose.ToSenseGlovePose(), + Normalizer.ToSenseGloveSensorNormalizer(), NormalizedToAngles.ToHandInterpolator(), + HandAngles); + + OutHandAngles = FSGArrayUtils::FromSenseGloveAngles(MoveTemp(HandAngles)); +} + +void FSGSenseGloveImpl::CalculateHandPose( + const FSGSenseGlovePoseImpl& GlovePose, const FSGBasicHandModelImpl& HandModel, + const FSGSenseGloveSensorNormalizerImpl& Normalizer, const FSGHandInterpolatorImpl& NormalizedToAngles, + FSGHandPoseImpl& OutHandPose) +{ + FSGHandPoseImpl::FHandPoseType HandPose; + + FSenseGloveType::CalculateHandPose( + GlovePose.ToSenseGlovePose(), HandModel.ToBasicHandModel(), + Normalizer.ToSenseGloveSensorNormalizer(), NormalizedToAngles.ToHandInterpolator(), + HandPose); + + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; +} + +FSGSenseGloveImpl::FSGSenseGloveImpl() + : FSGHapticGloveImpl(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveImpl::FSGSenseGloveImpl(const FSGSenseGloveInfoImpl& Model) + : FSGHapticGloveImpl(std::make_shared(Model.ToSenseGloveInfo())), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveImpl::FSGSenseGloveImpl(const FSenseGloveType SenseGlove) + : FSGHapticGloveImpl(std::make_shared(SenseGlove)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveImpl::FSGSenseGloveImpl(const FSenseGlovePtrType SenseGlove) + : FSGHapticGloveImpl(std::dynamic_pointer_cast(SenseGlove)), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveImpl::FSGSenseGloveImpl(const FSGSenseGloveImpl& Rhs) + : FSGHapticGloveImpl(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSenseGloveImpl::FSGSenseGloveImpl(FSGSenseGloveImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSenseGloveImpl::~FSGSenseGloveImpl() = default; + +FSGSenseGloveImpl& FSGSenseGloveImpl::operator=(const FSGSenseGloveImpl& Rhs) +{ + FSGHapticGloveImpl::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSenseGloveImpl& FSGSenseGloveImpl::operator=(FSGSenseGloveImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGSenseGloveImpl::FSenseGloveType& FSGSenseGloveImpl::ToSenseGlove() const +{ + return *ToSenseGlovePtrChecked(); +} + +FSGSenseGloveImpl::FSenseGlovePtrType FSGSenseGloveImpl::ToSenseGlovePtr() const +{ + return std::dynamic_pointer_cast(ToSGDevicePtr()); +} + +FSGSenseGloveImpl::FSenseGlovePtrType FSGSenseGloveImpl::ToSenseGlovePtrChecked() const +{ + FSenseGlovePtrType SenseGlove = std::dynamic_pointer_cast(ToSGDevicePtr()); + ensureAlwaysMsgf(SenseGlove.get(), TEXT("Invalid SenseGlove")); + return SenseGlove; +} + +ESGDeviceType FSGSenseGloveImpl::GetDeviceType() const +{ + return FSGCoreEnumCast::ToESGDeviceType(ToSenseGlovePtrChecked()->GetDeviceType()); +} + +FString FSGSenseGloveImpl::GetDeviceId() const +{ + const FString Id{UTF8_TO_TCHAR(ToSenseGlovePtrChecked()->GetDeviceId().c_str())}; + return Id; +} + +FString FSGSenseGloveImpl::GetHardwareVersion() const +{ + const FString Version{UTF8_TO_TCHAR(ToSenseGlovePtrChecked()->GetHardwareVersion().c_str())}; + return Version; +} + +int32 FSGSenseGloveImpl::GetFirmwareVersion() const +{ + return ToSenseGlovePtrChecked()->GetFirmwareVersion(); +} + +int32 FSGSenseGloveImpl::GetSubFirmwareVersion() const +{ + return ToSenseGlovePtrChecked()->GetSubFirmwareVersion(); +} + +bool FSGSenseGloveImpl::IsRight() const +{ + return ToSenseGlovePtr()->IsRight(); +} + +bool FSGSenseGloveImpl::GetImuRotation(FQuat& OutImu) +{ + FSGQuatImpl::FQuatType Imu; + const bool bResult = ToSenseGlovePtrChecked()->GetImuRotation(Imu); + OutImu = FSGQuatImpl{MoveTemp(Imu)}.ToFQuat(); + return bResult; +} + +bool FSGSenseGloveImpl::GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const +{ + FSGHandPoseImpl::FHandPoseType HandPose; + const bool bResult = ToSenseGlovePtrChecked()->GetHandPose(HandGeometry.ToBasicHandModel(), HandPose); + OutHandPose = FSGHandPoseImpl{MoveTemp(HandPose)}; + return bResult; +} + +bool FSGSenseGloveImpl::GetHandAngles(TArray>& OutHandAngles) const +{ + std::vector> HandAngles; + const bool bResult = ToSenseGlovePtrChecked()->GetHandAngles(HandAngles); + OutHandAngles = + FSGArrayUtils::FromSenseGloveAngles(MoveTemp(HandAngles)); + return bResult; +} + +ESGHapticGloveCalibrationState FSGSenseGloveImpl::GetCalibrationState() const +{ + return FSGCoreEnumCast::ToESGHapticGloveCalibrationState(ToSenseGlovePtrChecked()->GetCalibrationState()); +} + +void FSGSenseGloveImpl::EndCalibration() +{ + return ToSenseGlovePtrChecked()->EndCalibration(); +} + +void FSGSenseGloveImpl::ResetCalibration() +{ + return ToSenseGlovePtrChecked()->EndCalibration(); +} + +void FSGSenseGloveImpl::StopHaptics() +{ + ToSenseGlovePtrChecked()->StopHaptics(); +} + +void FSGSenseGloveImpl::StopVibrations() +{ + ToSenseGlovePtrChecked()->StopVibrations(); +} + +bool FSGSenseGloveImpl::SendHaptics() +{ + return ToSenseGlovePtrChecked()->SendHaptics(); +} + +bool FSGSenseGloveImpl::QueueForceFeedbackLevels(const TArray& Levels01) +{ + std::vector Levels01Vector{FSGArrayUtils::ToStdVector(Levels01)}; + return ToSenseGlovePtrChecked()->QueueForceFeedbackLevels(MoveTemp(Levels01Vector)); +} + +bool FSGSenseGloveImpl::QueueForceFeedbackLevel(const int32 Finger, const float Level01) +{ + return ToSenseGlovePtrChecked()->QueueForceFeedbackLevel(Finger, Level01); +} + +bool FSGSenseGloveImpl::QueueVibroLevels(const TArray& Amplitudes) +{ + std::vector AmplitudesVector{FSGArrayUtils::ToStdVector(Amplitudes)}; + return ToSenseGlovePtrChecked()->QueueVibroLevels(MoveTemp(AmplitudesVector)); +} + +bool FSGSenseGloveImpl::QueueVibroLevel(const ESGHapticLocation Location, const float Level01) +{ + return ToSenseGlovePtrChecked()->QueueVibroLevel(FSGCoreEnumCast::ToEHapticLocation(Location), Level01); +} + +void FSGSenseGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + ToSenseGlovePtrChecked()->GetGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition)); + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGSenseGloveImpl::GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const +{ + FSGVect3DImpl::FVect3DType GlovePosition; + FSGQuatImpl::FQuatType GloveRotation; + + ToSenseGlovePtrChecked()->GetGloveLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + FSGCoreEnumCast::ToEFinger(MountedOn), + GlovePosition, GloveRotation); + + OutGlovePosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(GlovePosition)); + OutGloveRotation = FSGQuatImpl{MoveTemp(GloveRotation)}.ToFQuat(); +} + +void FSGSenseGloveImpl::GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + ToSenseGlovePtrChecked()->GetWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +void FSGSenseGloveImpl::GetWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) const +{ + FSGVect3DImpl::FVect3DType WristPosition; + FSGQuatImpl::FQuatType WristRotation; + + ToSenseGlovePtrChecked()->GetWristLocation( + FSGUnits::CentimetersToMillimeters(ReferencePosition), + FSGQuatImpl{ReferenceRotation}.ToQuat(), + FSGCoreEnumCast::ToEPositionalTrackingHardware(TrackingHardware), + FSGUnits::CentimetersToMillimeters(GloveWristPositionOffset), + FSGQuatImpl(GloveWristRotationOffset).ToQuat(), + WristPosition, WristRotation); + + OutWristPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(WristPosition)); + OutWristRotation = FSGQuatImpl{MoveTemp(WristRotation)}.ToFQuat(); +} + +FSGSenseGloveInfoImpl FSGSenseGloveImpl::GetGloveInfo() const +{ + FSGSenseGloveInfoImpl GloveInfo{ToSenseGlovePtr()->GetGloveInfo()}; + return GloveInfo; +} + +TArray FSGSenseGloveImpl::GetFingerThimbleOffsets() const +{ + const TArray Offsets{ + FSGArrayUtils::FromStdVector( + ToSenseGlovePtrChecked()->GetFingerThimbleOffsets()) + }; + return Offsets; +} + +void FSGSenseGloveImpl::SetFingerThimbleOffset(const int32 Finger, const FVector& Offset) +{ + ToSenseGlovePtrChecked()->SetFingerThimbleOffset(Finger, FSGVect3DImpl{Offset}.ToVect3D()); +} + +bool FSGSenseGloveImpl::SupportsWristActuator() const +{ + return ToSenseGlovePtrChecked()->SupportsWristActuator(); +} + +bool FSGSenseGloveImpl::GetSensorData(FSGSenseGloveSensorDataImpl& OutSensorData) const +{ + FSGSenseGloveSensorDataImpl::FSenseGloveSensorDataType SensorData; + const bool bResult = ToSenseGlovePtrChecked()->GetSensorData(SensorData); + OutSensorData = FSGSenseGloveSensorDataImpl{MoveTemp(SensorData)}; + return bResult; +} + +bool FSGSenseGloveImpl::GetGlovePose(FSGSenseGlovePoseImpl& OutGlovePose) const +{ + FSGSenseGlovePoseImpl::FSenseGlovePoseType GlovePose; + const bool bResult = ToSenseGlovePtr()->GetGlovePose(GlovePose); + OutGlovePose = FSGSenseGlovePoseImpl{GlovePose}; + return bResult; +} + +bool FSGSenseGloveImpl::GetGlovePose(const FSGSenseGloveSensorDataImpl& SensorData, + FSGSenseGlovePoseImpl& OutGlovePose) const +{ + FSGSenseGlovePoseImpl::FSenseGlovePoseType GlovePose; + const bool bResult = ToSenseGlovePtr()->GetGlovePose(SensorData.ToSenseGloveSensorData(), GlovePose); + OutGlovePose = FSGSenseGlovePoseImpl{GlovePose}; + return bResult; +} + +bool FSGSenseGloveImpl::QueueVibroLevel(const int32 Finger, const float Amplitude) +{ + return ToSenseGlovePtrChecked()->QueueVibroLevel(Finger, Amplitude); +} + +bool FSGSenseGloveImpl::QueueThumperCommand(const ESGSenseGloveThumperCommand Command) +{ + return ToSenseGlovePtrChecked()->QueueThumperCommand(FSGCoreEnumCast::ToESenseGloveThumperCommand(Command)); +} + +FString FSGSenseGloveImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(ToSenseGlovePtrChecked()->ToString().c_str())}; + return String; +} + +FSGSenseGloveImpl::FImpl::FImpl(FSGSenseGloveImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSenseGloveImpl::FImpl::~FImpl() = default; + +void FSGSenseGloveImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveInfoImpl.cpp new file mode 100644 index 0000000..64b0155 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveInfoImpl.cpp @@ -0,0 +1,314 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveInfo.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGSenseGloveInfoImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSenseGloveInfoType SenseGloveInfo; + + /************************ + * Owner object + ************************/ + + FSGSenseGloveInfoImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSenseGloveInfoImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +bool FSGSenseGloveInfoImpl::Parse(const FString& ConstantsString, FSGSenseGloveInfoImpl& OutGloveInfo, + const bool bUpdateOldModels) +{ + std::string Constants(TCHAR_TO_UTF8(*ConstantsString)); + FSenseGloveInfoType GloveInfo; + + const bool bResults = FSenseGloveInfoType::Parse(MoveTemp(Constants), GloveInfo, bUpdateOldModels); + OutGloveInfo = FSGSenseGloveInfoImpl(GloveInfo); + + return bResults; +} + +FSGSenseGloveInfoImpl FSGSenseGloveInfoImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized(TCHAR_TO_UTF8(*SerializedString)); + const FSGSenseGloveInfoImpl GloveInfo(FSenseGloveInfoType::Deserialize(MoveTemp(Serialized))); + return GloveInfo; +} + +FSGSenseGloveInfoImpl::FSGSenseGloveInfoImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveInfoImpl::FSGSenseGloveInfoImpl(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, + const FQuat& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray>& GloveLengths, + const TArray& Functions) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::string DeviceIdString(TCHAR_TO_UTF8(*DeviceId)); + std::string HardwareVersionString(TCHAR_TO_UTF8(*HardwareVersion)); + FSGQuatImpl::FQuatType ImuCorrectionQuat(FSGQuatImpl(ImuCorrection).ToQuat()); + + std::vector StartPositionsVector{ + FSGArrayUtils::ToMillimeters(StartPositions) + }; + + std::vector StartRotationsVector{ + FSGArrayUtils::ToStdVector(StartRotations) + }; + + std::vector> GloveLengthsVector{ + FSGArrayUtils::ToMillimeters(GloveLengths) + }; + + std::vector FunctionsVector{FSGArrayUtils::ToStdVector(Functions)}; + + Pimpl->SenseGloveInfo = FSenseGloveInfoType(MoveTemp(DeviceIdString), MoveTemp(HardwareVersionString), + FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, + MoveTemp(ImuCorrectionQuat), + MoveTemp(StartPositionsVector), MoveTemp(StartRotationsVector), + MoveTemp(GloveLengthsVector), MoveTemp(FunctionsVector)); +} + +FSGSenseGloveInfoImpl::FSGSenseGloveInfoImpl(const FSenseGloveInfoType& GloveInfo) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SenseGloveInfo = GloveInfo; +} + +FSGSenseGloveInfoImpl::FSGSenseGloveInfoImpl(const FSGSenseGloveInfoImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSenseGloveInfoImpl::FSGSenseGloveInfoImpl(FSGSenseGloveInfoImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSenseGloveInfoImpl::~FSGSenseGloveInfoImpl() = default; + +FSGSenseGloveInfoImpl& FSGSenseGloveInfoImpl::operator=(const FSGSenseGloveInfoImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSenseGloveInfoImpl& FSGSenseGloveInfoImpl::operator=(FSGSenseGloveInfoImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGSenseGloveInfoImpl::FSenseGloveInfoType& FSGSenseGloveInfoImpl::ToSenseGloveInfo() const +{ + return Pimpl->SenseGloveInfo; +} + +FString FSGSenseGloveInfoImpl::GetDeviceId() const +{ + const FString DeviceId{UTF8_TO_TCHAR(Pimpl->SenseGloveInfo.GetDeviceId().c_str())}; + return DeviceId; +} + +FString FSGSenseGloveInfoImpl::GetHardwareVersion() const +{ + const FString HardwareVersion{UTF8_TO_TCHAR(Pimpl->SenseGloveInfo.GetHardwareVersion().c_str())}; + return HardwareVersion; +} + +int32 FSGSenseGloveInfoImpl::GetFirmwareVersion() const +{ + return Pimpl->SenseGloveInfo.GetFirmwareVersion(); +} + +int32 FSGSenseGloveInfoImpl::GetSubFirmwareVersion() const +{ + return Pimpl->SenseGloveInfo.GetSubFirmwareVersion(); +} + +bool FSGSenseGloveInfoImpl::IsRight() const +{ + return Pimpl->SenseGloveInfo.IsRight(); +} + +int32 FSGSenseGloveInfoImpl::GetNumberOfSensors() const +{ + return Pimpl->SenseGloveInfo.GetNumberOfSensors(); +} + +FQuat FSGSenseGloveInfoImpl::GetImuCorrection() const +{ + const FQuat ImuCorrection{FSGQuatImpl(Pimpl->SenseGloveInfo.GetImuCorrection()).ToFQuat()}; + return ImuCorrection; +} + +TArray FSGSenseGloveInfoImpl::GetStartPositions() const +{ + const TArray StartPositionsArray{ + FSGArrayUtils::FromMillimeters( + Pimpl->SenseGloveInfo.GetStartPositions())}; + return StartPositionsArray; +} + +TArray FSGSenseGloveInfoImpl::GetStartRotations() const +{ + const TArray StartRotationsArray{ + FSGArrayUtils::FromStdVector( + Pimpl->SenseGloveInfo.GetStartRotations())}; + return StartRotationsArray; +} + +TArray> FSGSenseGloveInfoImpl::GetGloveLengths() const +{ + const TArray> GloveLengths{ + FSGArrayUtils::FromMillimeters( + Pimpl->SenseGloveInfo.GetGloveLengths()) + }; + return GloveLengths; +} + +TArray FSGSenseGloveInfoImpl::GetFunctions() const +{ + const TArray FunctionsArray{FSGArrayUtils::FromStdVector(Pimpl->SenseGloveInfo.GetFunctions())}; + return FunctionsArray; +} + +FVector FSGSenseGloveInfoImpl::GetStartPosition(const ESGFinger Finger) const +{ + const FVector StartPosition{ + FSGUnits::MillimetersToCentimeters( + Pimpl->SenseGloveInfo.GetStartPosition(FSGCoreEnumCast::ToEFinger(Finger))) + }; + return StartPosition; +} + +FQuat FSGSenseGloveInfoImpl::GetStartRotation(const ESGFinger Finger) const +{ + const FQuat StartRotation( + FSGQuatImpl(Pimpl->SenseGloveInfo.GetStartRotation(FSGCoreEnumCast::ToEFinger(Finger))).ToFQuat()); + return StartRotation; +} + +TArray FSGSenseGloveInfoImpl::GetGloveLengths(const ESGFinger Finger) const +{ + std::vector GloveLengthsVector{ + Pimpl->SenseGloveInfo.GetGloveLengths(FSGCoreEnumCast::ToEFinger(Finger)) + }; + const TArray GloveLengthsArray{ + FSGArrayUtils::FromMillimeters(MoveTemp(GloveLengthsVector)) + }; + return GloveLengthsArray; +} + +TArray> FSGSenseGloveInfoImpl::ToGloveAngles(const TArray>& SensorAngles) const +{ + /// TODO + /// Does the nested float TArray requires translation? If so, how to do that without a Movement value? + std::vector> SensorAnglesVector{ + FSGArrayUtils::ToStdVector(SensorAngles) + }; + const TArray> GloveAngles{ + FSGArrayUtils::FromSenseGloveAngles( + Pimpl->SenseGloveInfo.ToGloveAngles(MoveTemp((SensorAnglesVector)))) + }; + return GloveAngles; +} + +bool FSGSenseGloveInfoImpl::Equals(const FSGSenseGloveInfoImpl& SGSenseGloveInfo, const bool bGeometryOnly) const +{ + return Pimpl->SenseGloveInfo.Equals(SGSenseGloveInfo.ToSenseGloveInfo(), bGeometryOnly); +} + +FString FSGSenseGloveInfoImpl::ToString(const bool bShortNotation) const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->SenseGloveInfo.ToString(bShortNotation).c_str())}; + return String; +} + +FString FSGSenseGloveInfoImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->SenseGloveInfo.ToString().c_str())}; + return String; +} + +FString FSGSenseGloveInfoImpl::Serialize() const +{ + const FString Serialized{UTF8_TO_TCHAR(Pimpl->SenseGloveInfo.Serialize().c_str())}; + return Serialized; +} + +FSGSenseGloveInfoImpl::FImpl::FImpl(FSGSenseGloveInfoImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSenseGloveInfoImpl::FImpl::~FImpl() = default; + +void FSGSenseGloveInfoImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGlovePoseImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGlovePoseImpl.cpp new file mode 100644 index 0000000..d668248 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGlovePoseImpl.cpp @@ -0,0 +1,248 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGlovePoseImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SenseGlovePose.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGSenseGlovePoseImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSenseGlovePoseType SenseGlovePose; + + /************************ + * Owner object + ************************/ + + FSGSenseGlovePoseImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSenseGlovePoseImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGSenseGlovePoseImpl FSGSenseGlovePoseImpl::IdlePose(const FSGSenseGloveInfoImpl& GloveInfo) +{ + const FSGSenseGlovePoseImpl GlovePoseImpl{FSenseGlovePoseType::IdlePose(GloveInfo.ToSenseGloveInfo())}; + return GlovePoseImpl; +} + +FSGSenseGlovePoseImpl FSGSenseGlovePoseImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized{TCHAR_TO_UTF8(*SerializedString)}; + const FSGSenseGlovePoseImpl GlovePose{FSenseGlovePoseType::Deserialize(MoveTemp(Serialized))}; + return GlovePose; +} + +FSGSenseGlovePoseImpl::FSGSenseGlovePoseImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGlovePoseImpl::FSGSenseGlovePoseImpl(const bool bRightHanded, const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> JointPositionsVector{ + FSGArrayUtils::ToMillimeters(JointPositions) + }; + std::vector> JointRotationsVector{ + FSGArrayUtils::ToStdVector(JointRotations) + }; + std::vector> GloveAnglesVector{ + FSGArrayUtils::ToSenseGloveAngles(GloveAngles) + }; + + Pimpl->SenseGlovePose = FSenseGlovePoseType{ + bRightHanded, + MoveTemp(JointPositionsVector), + MoveTemp(JointRotationsVector), + MoveTemp(GloveAnglesVector) + }; +} + +FSGSenseGlovePoseImpl::FSGSenseGlovePoseImpl(const FSenseGlovePoseType& SenseGlovePose) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SenseGlovePose = SenseGlovePose; +} + +FSGSenseGlovePoseImpl::FSGSenseGlovePoseImpl(const FSGSenseGlovePoseImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSenseGlovePoseImpl::FSGSenseGlovePoseImpl(FSGSenseGlovePoseImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSenseGlovePoseImpl::~FSGSenseGlovePoseImpl() = default; + +FSGSenseGlovePoseImpl& FSGSenseGlovePoseImpl::operator=(const FSGSenseGlovePoseImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSenseGlovePoseImpl& FSGSenseGlovePoseImpl::operator=(FSGSenseGlovePoseImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGSenseGlovePoseImpl::FSenseGlovePoseType& FSGSenseGlovePoseImpl::ToSenseGlovePose() const +{ + return Pimpl->SenseGlovePose; +} + +bool FSGSenseGlovePoseImpl::IsRight() const +{ + return Pimpl->SenseGlovePose.IsRight(); +} + +TArray> FSGSenseGlovePoseImpl::GetJointPositions() const +{ + const TArray> JointPositions{ + FSGArrayUtils::FromMillimeters( + Pimpl->SenseGlovePose.GetJointPositions()) + }; + return JointPositions; +} + +TArray> FSGSenseGlovePoseImpl::GetJointRotations() const +{ + const TArray> JointRotations{ + FSGArrayUtils::FromStdVector( + Pimpl->SenseGlovePose.GetJointRotations()) + }; + return JointRotations; +} + +TArray> FSGSenseGlovePoseImpl::GetGloveAngles() const +{ + const TArray> GloveAngles{ + FSGArrayUtils::FromSenseGloveAngles( + Pimpl->SenseGlovePose.GetGloveAngles()) + }; + return GloveAngles; +} + +TArray FSGSenseGlovePoseImpl::GetThimblePositions() const +{ + const TArray ThimblePositions{ + FSGArrayUtils::FromMillimeters( + Pimpl->SenseGlovePose.GetThimblePositions()) + }; + return ThimblePositions; +} + +TArray FSGSenseGlovePoseImpl::GetThimbleRotations() const +{ + const TArray ThimbleRotations{ + FSGArrayUtils::FromStdVector( + Pimpl->SenseGlovePose.GetThimbleRotations()) + }; + return ThimbleRotations; +} + +TArray FSGSenseGlovePoseImpl::GetTotalGloveAngles() const +{ + const TArray TotalGloveAngles{ + FSGArrayUtils::FromSenseGloveAngles(Pimpl->SenseGlovePose.GetTotalGloveAngles()) + }; + return TotalGloveAngles; +} + +TArray FSGSenseGlovePoseImpl::CalculateFingertips(const TArray& FingerOffsets) const +{ + std::vector FingerOffsetsVector{ + FSGArrayUtils::ToMillimeters(FingerOffsets) + }; + const TArray Fingertips{ + FSGArrayUtils::FromMillimeters( + Pimpl->SenseGlovePose.CalculateFingertips(MoveTemp(FingerOffsetsVector))) + }; + return Fingertips; +} + +bool FSGSenseGlovePoseImpl::Equals(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl) const +{ + return Pimpl->SenseGlovePose.Equals(SenseGlovePoseImpl.ToSenseGlovePose()); +} + +FString FSGSenseGlovePoseImpl::ToString(const bool bShortFormat) const +{ + const FString String(UTF8_TO_TCHAR(Pimpl->SenseGlovePose.ToString(bShortFormat).c_str())); + return String; +} + +FString FSGSenseGlovePoseImpl::Serialize() const +{ + const FString Serialized(UTF8_TO_TCHAR(Pimpl->SenseGlovePose.Serialize().c_str())); + return Serialized; +} + +FSGSenseGlovePoseImpl::FImpl::FImpl(FSGSenseGlovePoseImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSenseGlovePoseImpl::FImpl::~FImpl() = default; + +void FSGSenseGlovePoseImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorDataImpl.cpp new file mode 100644 index 0000000..6859b80 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorDataImpl.cpp @@ -0,0 +1,216 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGloveSensorDataImpl.h" + +#include +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorData.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGSenseGloveSensorDataImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSenseGloveSensorDataType SenseGloveSensorData; + + /************************ + * Owner object + ************************/ + + FSGSenseGloveSensorDataImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSenseGloveSensorDataImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +const FSGSenseGloveSensorDataImpl& FSGSenseGloveSensorDataImpl::Empty() +{ + static const FSGSenseGloveSensorDataImpl EmptyData{FSenseGloveSensorDataType::Empty()}; + return EmptyData; +} + +FSGSenseGloveSensorDataImpl FSGSenseGloveSensorDataImpl::Parse(const FString& RawData, + const FSGSenseGloveInfoImpl& GloveInfo) +{ + std::string RawDataString(TCHAR_TO_UTF8(*RawData)); + const FSGSenseGloveSensorDataImpl SensorData{ + FSenseGloveSensorDataType::Parse(MoveTemp(RawDataString), GloveInfo.ToSenseGloveInfo()) + }; + return SensorData; +} + +FSGSenseGloveSensorDataImpl FSGSenseGloveSensorDataImpl::Deserialize(const FString& SerializedString) +{ + std::string Serialized{TCHAR_TO_UTF8(*SerializedString)}; + const FSGSenseGloveSensorDataImpl SensorData{FSenseGloveSensorDataType::Deserialize(MoveTemp(Serialized))}; + return SensorData; +} + +FSGSenseGloveSensorDataImpl::FSGSenseGloveSensorDataImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveSensorDataImpl::FSGSenseGloveSensorDataImpl(const TArray>& SensorAngles, + const FQuat& ImuRotation, + const int32 ParsedValues, const bool bImuParsed) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector> SensorAnglesVector{FSGArrayUtils::ToStdVector(SensorAngles)}; + Pimpl->SenseGloveSensorData = FSenseGloveSensorDataType( + MoveTemp(SensorAnglesVector), FSGQuatImpl(ImuRotation).ToQuat(), ParsedValues, bImuParsed); +} + +FSGSenseGloveSensorDataImpl::FSGSenseGloveSensorDataImpl(const FSenseGloveSensorDataType& SenseGloveSensorData) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SenseGloveSensorData = SenseGloveSensorData; +} + +FSGSenseGloveSensorDataImpl::FSGSenseGloveSensorDataImpl(const FSGSenseGloveSensorDataImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSenseGloveSensorDataImpl::FSGSenseGloveSensorDataImpl(FSGSenseGloveSensorDataImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSenseGloveSensorDataImpl::~FSGSenseGloveSensorDataImpl() = default; + +FSGSenseGloveSensorDataImpl& FSGSenseGloveSensorDataImpl::operator=(const FSGSenseGloveSensorDataImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSenseGloveSensorDataImpl& FSGSenseGloveSensorDataImpl::operator=(FSGSenseGloveSensorDataImpl&& Rhs) SG_NOEXCEPT += default; + +const FSGSenseGloveSensorDataImpl::FSenseGloveSensorDataType& FSGSenseGloveSensorDataImpl::ToSenseGloveSensorData( + ) const +{ + return Pimpl->SenseGloveSensorData; +} + +TArray> FSGSenseGloveSensorDataImpl::GetSensorAngles() const +{ + const TArray> SensorAngles{ + FSGArrayUtils::FromSenseGloveAngles(Pimpl->SenseGloveSensorData.GetSensorAngles()) + }; + return SensorAngles; +} + +TArray FSGSenseGloveSensorDataImpl::GetSensorAngles(ESGFinger Finger) const +{ + const TArray SensorAngles{ + FSGArrayUtils::FromStdVector( + Pimpl->SenseGloveSensorData.GetSensorAngles(FSGCoreEnumCast::ToEFinger(Finger))) + }; + return SensorAngles; +} + +TArray FSGSenseGloveSensorDataImpl::GetAngleSequence() const +{ + const TArray AngleSequence{ + FSGArrayUtils::FromStdVector(Pimpl->SenseGloveSensorData.GetAngleSequence()) + }; + return AngleSequence; +} + +FQuat FSGSenseGloveSensorDataImpl::GetImuRotation() const +{ + return FSGQuatImpl(Pimpl->SenseGloveSensorData.GetImuRotation()).ToFQuat(); +} + +int32 FSGSenseGloveSensorDataImpl::GetParsedValues() const +{ + return Pimpl->SenseGloveSensorData.GetParsedValues(); +} + +bool FSGSenseGloveSensorDataImpl::IsImuParsed() const +{ + return Pimpl->SenseGloveSensorData.IsImuParsed(); +} + +bool FSGSenseGloveSensorDataImpl::Equals(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl) const +{ + return Pimpl->SenseGloveSensorData.Equals(SenseGloveSensorDataImpl.ToSenseGloveSensorData()); +} + +FString FSGSenseGloveSensorDataImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->SenseGloveSensorData.ToString().c_str())}; + return String; +} + +FString FSGSenseGloveSensorDataImpl::Serialize() const +{ + const FString Serialized{UTF8_TO_TCHAR(Pimpl->SenseGloveSensorData.Serialize().c_str())}; + return Serialized; +} + +FSGSenseGloveSensorDataImpl::FImpl::FImpl(FSGSenseGloveSensorDataImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSenseGloveSensorDataImpl::FImpl::~FImpl() = default; + +void FSGSenseGloveSensorDataImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.cpp new file mode 100644 index 0000000..9ca2d9c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.cpp @@ -0,0 +1,137 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h" + +#include "SGBuildHacks/SGInclude_Core_SenseGloveSensorNormalizer.h" +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" + +struct FSGSenseGloveSensorNormalizerImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSenseGloveSensorNormalizerType SenseGloveSensorNormalizer; + + /************************ + * Owner object + ************************/ + + FSGSenseGloveSensorNormalizerImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSenseGloveSensorNormalizerImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGSenseGloveSensorNormalizerImpl::FSGSenseGloveSensorNormalizerImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSenseGloveSensorNormalizerImpl::FSGSenseGloveSensorNormalizerImpl(const bool bRightHanded) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SenseGloveSensorNormalizer = FSenseGloveSensorNormalizerType(bRightHanded); +} + +FSGSenseGloveSensorNormalizerImpl::FSGSenseGloveSensorNormalizerImpl( + const FSenseGloveSensorNormalizerType& SenseGloveSensorNormalizer) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SenseGloveSensorNormalizer = SenseGloveSensorNormalizer; +} + +FSGSenseGloveSensorNormalizerImpl::FSGSenseGloveSensorNormalizerImpl(const FSGSenseGloveSensorNormalizerImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSenseGloveSensorNormalizerImpl::FSGSenseGloveSensorNormalizerImpl( + FSGSenseGloveSensorNormalizerImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSenseGloveSensorNormalizerImpl::~FSGSenseGloveSensorNormalizerImpl() = default; + +FSGSenseGloveSensorNormalizerImpl& FSGSenseGloveSensorNormalizerImpl::operator=( + const FSGSenseGloveSensorNormalizerImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSenseGloveSensorNormalizerImpl& FSGSenseGloveSensorNormalizerImpl::operator=( + FSGSenseGloveSensorNormalizerImpl&& Rhs) SG_NOEXCEPT += default; + +const FSGSenseGloveSensorNormalizerImpl::FSenseGloveSensorNormalizerType& +FSGSenseGloveSensorNormalizerImpl::ToSenseGloveSensorNormalizer() const +{ + return Pimpl->SenseGloveSensorNormalizer; +} + +float FSGSenseGloveSensorNormalizerImpl::NormalizeFlexion(const int32 Finger, const float SumFlexionAngles) const +{ + return Pimpl->SenseGloveSensorNormalizer.NormalizeFlexion(Finger, SumFlexionAngles); +} + +float FSGSenseGloveSensorNormalizerImpl::NormalizeAbduction(const int32 Finger, const float SumAbductionAngles) const +{ + return Pimpl->SenseGloveSensorNormalizer.NormalizeAbduction(Finger, SumAbductionAngles); +} + +FSGSenseGloveSensorNormalizerImpl::FImpl::FImpl(FSGSenseGloveSensorNormalizerImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSenseGloveSensorNormalizerImpl::FImpl::~FImpl() = default; + +void FSGSenseGloveSensorNormalizerImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveVarsImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveVarsImpl.cpp new file mode 100644 index 0000000..c0716d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSenseGloveVarsImpl.cpp @@ -0,0 +1,147 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSenseGloveVarsImpl.h" + +#include + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveInfo.h" +#include "SGBuildHacks/SGInclude_Core_SenseGloveVars.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +FString FSGSenseGloveVarsImpl::GetStandardConstantsString(const FString& HardwareVersion, const float FirmwareVersion, + const bool bRightHanded) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const FString String{ + UTF8_TO_TCHAR(FSenseGloveVarsType::GetStandardConstantsString( + MoveTemp(HardwareVersionString), FirmwareVersion, bRightHanded).c_str()) + }; + return String; +} + +FString FSGSenseGloveVarsImpl::GetSensorString(const FString& HardwareVersion, const float FirmwareVersion) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const FString String{ + UTF8_TO_TCHAR(FSenseGloveVarsType::GetSensorString(MoveTemp(HardwareVersionString),FirmwareVersion).c_str()) + }; + return String; +} + +TArray FSGSenseGloveVarsImpl::GetStartPositions(const FString& HardwareVersion, const bool bRightHanded) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const TArray StartPositions{ + FSGArrayUtils::FromMillimeters( + FSenseGloveVarsType::GetStartPositions(MoveTemp(HardwareVersionString), bRightHanded)) + }; + return StartPositions; +} + +TArray FSGSenseGloveVarsImpl::GetStartRotations(const FString& HardwareVersion, const bool bRightHanded) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const TArray StartRotations{ + FSGArrayUtils::FromStdVector( + FSenseGloveVarsType::GetStartRotations(MoveTemp(HardwareVersionString), bRightHanded)) + }; + return StartRotations; +} + +TArray> FSGSenseGloveVarsImpl::GetGloveLengths(const FString& HardwareVersion) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const TArray> GloveLengths{ + FSGArrayUtils::FromMillimeters( + FSenseGloveVarsType::GetGloveLengths(MoveTemp(HardwareVersionString))) + }; + return GloveLengths; +} + +int32 FSGSenseGloveVarsImpl::GetSensors(const FString& HardwareVersion) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + return FSenseGloveVarsType::GetSensors(MoveTemp(HardwareVersionString)); +} + +FQuat FSGSenseGloveVarsImpl::GetImuCorrection(const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + return FSGQuatImpl(FSenseGloveVarsType::GetImuCorrection( + MoveTemp(HardwareVersionString), FirmwareVersion, SubFirmwareVersion)).ToFQuat(); +} + +TArray FSGSenseGloveVarsImpl::GetFunctions(const FString& HardwareVersion, const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + const TArray Functions{FSGArrayUtils::FromStdVector(FSenseGloveVarsType::GetFunctions( + MoveTemp(HardwareVersionString), FirmwareVersion, SubFirmwareVersion)) + }; + return Functions; +} + +FSGSenseGloveInfoImpl FSGSenseGloveVarsImpl::GenerateGloveModel( + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + return FSGSenseGloveInfoImpl{ + FSenseGloveVarsType::GenerateGloveModel( + MoveTemp(HardwareVersionString), FirmwareVersion, SubFirmwareVersion, bRightHanded) + }; +} + +FSGSenseGloveInfoImpl FSGSenseGloveVarsImpl::GenerateGloveModel( + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FString& CustomId) +{ + std::string HardwareVersionString{TCHAR_TO_UTF8(*HardwareVersion)}; + std::string CustomIdString{TCHAR_TO_UTF8(*CustomId)}; + return FSGSenseGloveInfoImpl{ + FSenseGloveVarsType::GenerateGloveModel( + MoveTemp(HardwareVersionString), FirmwareVersion, SubFirmwareVersion, + bRightHanded, MoveTemp(CustomIdString)) + }; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSensorNormalizationImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSensorNormalizationImpl.cpp new file mode 100644 index 0000000..59a4bb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGSensorNormalizationImpl.cpp @@ -0,0 +1,190 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGSensorNormalizationImpl.h" + +#include + +#include "SGBuildHacks/SGInclude_Core_SensorNormalization.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGSensorNormalizationImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FSensorNormalizationType SensorNormalization; + + /************************ + * Owner object + ************************/ + + FSGSensorNormalizationImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSensorNormalizationImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGSensorNormalizationImpl::FSGSensorNormalizationImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSensorNormalizationImpl::FSGSensorNormalizationImpl(const TArray& MovementRanges) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + std::vector MovementRangesVector{FSGArrayUtils::ToStdVector(MovementRanges)}; + + Pimpl->SensorNormalization = FSensorNormalizationType(MoveTemp(MovementRangesVector)); +} + +FSGSensorNormalizationImpl::FSGSensorNormalizationImpl( + const FSensorNormalizationType& SensorNormalization) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->SensorNormalization = SensorNormalization; +} + +FSGSensorNormalizationImpl::FSGSensorNormalizationImpl(const FSGSensorNormalizationImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGSensorNormalizationImpl::FSGSensorNormalizationImpl(FSGSensorNormalizationImpl&& Rhs) SG_NOEXCEPT = default; + +FSGSensorNormalizationImpl::~FSGSensorNormalizationImpl() = default; + +FSGSensorNormalizationImpl& FSGSensorNormalizationImpl::operator=(const FSGSensorNormalizationImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGSensorNormalizationImpl& FSGSensorNormalizationImpl::operator=(FSGSensorNormalizationImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGSensorNormalizationImpl::FSensorNormalizationType& FSGSensorNormalizationImpl::ToSensorNormalization() const +{ + return Pimpl->SensorNormalization; +} + +FSGSensorNormalizationImpl::FSensorNormalizationType& FSGSensorNormalizationImpl::ToSensorNormalization() +{ + return Pimpl->SensorNormalization; +} + +bool FSGSensorNormalizationImpl::CollectsNormalization() const +{ + return Pimpl->SensorNormalization.CollectsNormalization(); +} + +void FSGSensorNormalizationImpl::SetCollectNormalization(const bool bCollectNormalization) +{ + Pimpl->SensorNormalization.SetCollectNormalization(bCollectNormalization); +} + +int32 FSGSensorNormalizationImpl::GetLength() const +{ + return Pimpl->SensorNormalization.GetLength(); +} + +int32 FSGSensorNormalizationImpl::GetMoveCount() const +{ + return Pimpl->SensorNormalization.GetMoveCount(); +} + +bool FSGSensorNormalizationImpl::AllSensorsMoving() const +{ + return Pimpl->SensorNormalization.AllSensorsMoving(); +} + +void FSGSensorNormalizationImpl::ResetNormalization() +{ + Pimpl->SensorNormalization.ResetNormalization(); +} + +void FSGSensorNormalizationImpl::UpdateNormalization(const float Value, const int32 Index) +{ + Pimpl->SensorNormalization.UpdateNormalization(Value, Index); +} + +float FSGSensorNormalizationImpl::NormalizeValue(const float Value, const int32 Index) +{ + return Pimpl->SensorNormalization.NormalizeValue(Value, Index); +} + +TArray FSGSensorNormalizationImpl::NormalizeValues(const TArray& Values) +{ + std::vector ValuesVector{FSGArrayUtils::ToStdVector(Values)}; + const TArray NormalizedValues{ + FSGArrayUtils::FromStdVector(Pimpl->SensorNormalization.NormalizeValues(MoveTemp(ValuesVector))) + }; + return NormalizedValues; +} + +bool FSGSensorNormalizationImpl::MovedEnough(const int32 Index) const +{ + return Pimpl->SensorNormalization.MovedEnough(Index); +} + +float FSGSensorNormalizationImpl::Denormalize(const float Value01, const int32 Index, const float FallbackValue) const +{ + return Pimpl->SensorNormalization.Denormalize(Value01, Index, FallbackValue); +} + +FSGSensorNormalizationImpl::FImpl::FImpl(FSGSensorNormalizationImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGSensorNormalizationImpl::FImpl::~FImpl() = default; + +void FSGSensorNormalizationImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGThresholdCommandImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGThresholdCommandImpl.cpp new file mode 100644 index 0000000..1bb555f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGThresholdCommandImpl.cpp @@ -0,0 +1,188 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGThresholdCommandImpl.h" + +#include + +#include "SGBuildHacks/SGInclude_Core_ThresholdCommand.h" +#include "SGUtils/SGArrayUtils.h" + +struct FSGThresholdCommandImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FThresholdCommandType ThresholdCommand; + + /************************ + * Owner object + ************************/ + + FSGThresholdCommandImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGThresholdCommandImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +FSGThresholdCommandImpl::FSGThresholdCommandImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGThresholdCommandImpl::FSGThresholdCommandImpl( + const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + std::vector AffectedFingersVector{FSGArrayUtils::ToStdVector(AffectedFingers)}; + std::vector ThresholdValuesVector{FSGArrayUtils::ToStdVector(ThresholdValues)}; + + Pimpl->ThresholdCommand = FThresholdCommandType{MoveTemp(AffectedFingersVector), MoveTemp(ThresholdValuesVector)}; +} + +FSGThresholdCommandImpl::FSGThresholdCommandImpl( + const FThresholdCommandType& ThresholdCommand) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->ThresholdCommand = ThresholdCommand; +} + +FSGThresholdCommandImpl::FSGThresholdCommandImpl(const FSGThresholdCommandImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGThresholdCommandImpl::FSGThresholdCommandImpl(FSGThresholdCommandImpl&& Rhs) SG_NOEXCEPT = default; + +FSGThresholdCommandImpl::~FSGThresholdCommandImpl() = default; + +FSGThresholdCommandImpl& FSGThresholdCommandImpl::operator=(const FSGThresholdCommandImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGThresholdCommandImpl& FSGThresholdCommandImpl::operator=(FSGThresholdCommandImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGThresholdCommandImpl::FThresholdCommandType& FSGThresholdCommandImpl::ToThresholdCommand() const +{ + return Pimpl->ThresholdCommand; +} + +FSGThresholdCommandImpl::FThresholdCommandType& FSGThresholdCommandImpl::ToThresholdCommand() +{ + return Pimpl->ThresholdCommand; +} + +float FSGThresholdCommandImpl::GetThreshold(int32 Finger) const +{ + return Pimpl->ThresholdCommand.GetThreshold(Finger); +} + +void FSGThresholdCommandImpl::SetThreshold(const int32 Finger, const float ThresholdValue) +{ + Pimpl->ThresholdCommand.SetThreshold(Finger, ThresholdValue); +} + +TArray FSGThresholdCommandImpl::GetThresholds() const +{ + const TArray Thresholds{FSGArrayUtils::FromStdVector(Pimpl->ThresholdCommand.GetThresholds())}; + return Thresholds; +} + +void FSGThresholdCommandImpl::SetThresholds(const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + std::vector AffectedFingersVector{FSGArrayUtils::ToStdVector(AffectedFingers)}; + std::vector ThresholdValuesVector{FSGArrayUtils::ToStdVector(ThresholdValues)}; + + Pimpl->ThresholdCommand.SetThresholds(MoveTemp(AffectedFingersVector), MoveTemp(ThresholdValuesVector)); +} + +bool FSGThresholdCommandImpl::GetFingerActive(const int32 Finger) const +{ + return Pimpl->ThresholdCommand.GetFingerActive(Finger); +} + +TArray FSGThresholdCommandImpl::GetActiveFingers() const +{ + const TArray ActiveFingers{FSGArrayUtils::FromStdVector(Pimpl->ThresholdCommand.GetActiveFingers())}; + return ActiveFingers; +} + +void FSGThresholdCommandImpl::ClearThreshold(const int32 Finger) +{ + Pimpl->ThresholdCommand.ClearThreshold(Finger); +} + +void FSGThresholdCommandImpl::ClearThresholds() +{ + Pimpl->ThresholdCommand.ClearThresholds(); +} + +bool FSGThresholdCommandImpl::Equals(const FSGThresholdCommandImpl& ThresholdCommand) const +{ + return Pimpl->ThresholdCommand.Equals(ThresholdCommand.ToThresholdCommand()); +} + +FString FSGThresholdCommandImpl::ToString() const +{ + const FString String{UTF8_TO_TCHAR(Pimpl->ThresholdCommand.ToString().c_str())}; + return String; +} + +FSGThresholdCommandImpl::FImpl::FImpl(FSGThresholdCommandImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGThresholdCommandImpl::FImpl::~FImpl() = default; + +void FSGThresholdCommandImpl::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp new file mode 100644 index 0000000..2e97c4a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGTrackingImpl.cpp @@ -0,0 +1,594 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGTrackingImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Quat.h" +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" +#include "SGCoreImpl/SGCoreEnumCast.h" +#include "SGCoreImpl/SGQuatImpl.h" +#include "SGCoreImpl/SGVect3DImpl.h" +#include "SGUtils/SGArrayUtils.h" + +void FSGTrackingImpl::CalculateLocation(const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation) +{ + FSGVect3DImpl::FVect3DType TrackedPositionVect3D{ + FSGUnits::CentimetersToMillimeters(TrackedPosition) + }; + FSGQuatImpl::FQuatType TrackedRotationQuat(FSGQuatImpl(TrackedRotation).ToQuat()); + FSGVect3DImpl::FVect3DType PositionOffsetVect3D{ + FSGUnits::CentimetersToMillimeters(PositionOffset) + }; + FSGQuatImpl::FQuatType RotationOffsetQuat(FSGQuatImpl(RotationOffset).ToQuat()); + FSGVect3DImpl::FVect3DType NewPosition; + FSGQuatImpl::FQuatType NewRotation; + + FTrackingType::CalculateLocation(MoveTemp(TrackedPositionVect3D), + MoveTemp(TrackedRotationQuat), + MoveTemp(PositionOffsetVect3D), + MoveTemp(RotationOffsetQuat), + NewPosition, + NewRotation); + + OutNewPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(NewPosition)); + OutNewRotation = FSGQuatImpl(MoveTemp(NewRotation)).ToFQuat(); +} + +const TArray& FSGTrackingImpl::GetSenseGloveFingerToGlovePositionOrigin() +{ + static const TArray GlovePositionOrigin{ + FSGArrayUtils::FromMillimeters( + FTrackingType::GetSenseGloveFingerToGlovePositionOrigin()) + }; + return GlovePositionOrigin; +} + +const TArray& FSGTrackingImpl::GetSenseGloveFingerToGloveRotationOrigin() +{ + static const TArray GloveRotationOrigin{ + FSGArrayUtils::FromStdVector( + FTrackingType::GetSenseGloveFingerToGloveRotationOrigin()) + }; + return GloveRotationOrigin; +} + +const FVector& FSGTrackingImpl::GetSenseGloveWristPositionOffset() +{ + static const FVector Offset{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetSenseGloveWristPositionOffset()) + }; + return Offset; +} + +const FQuat& FSGTrackingImpl::GetSenseGloveWristRotationOffset() +{ + static FQuat Offset{FSGQuatImpl(FTrackingType::GetSenseGloveWristRotationOffset()).ToFQuat()}; + return Offset; +} + +void FSGTrackingImpl::GetSenseGloveMountOffset(const bool bRightHanded, const ESGFinger ToFinger, + FVector& OutIPosition, FQuat& OutIRotation) +{ + FSGVect3DImpl::FVect3DType IPosition; + FSGQuatImpl::FQuatType IRotation; + + FTrackingType::GetSenseGloveMountOffset(bRightHanded, FSGCoreEnumCast::ToEFinger(ToFinger), + IPosition, IRotation); + + OutIPosition = FSGUnits::MillimetersToCentimeters( + MoveTemp(IPosition)); + OutIRotation = FSGQuatImpl(MoveTemp(IRotation)).ToFQuat(); +} + +void FSGTrackingImpl::GetSenseGloveTrackerMountOffset(const ESGPositionalTrackingHardware Hardware, + const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGVect3DImpl::FVect3DType PositionOffset; + FSGQuatImpl::FQuatType RotationOffset; + + FTrackingType::GetSenseGloveTrackerMountOffset(FSGCoreEnumCast::ToEPositionalTrackingHardware(Hardware), + bRightHanded, PositionOffset, RotationOffset); + + OutPositionOffset = FSGUnits::MillimetersToCentimeters( + MoveTemp(PositionOffset)); + OutRotationOffset = FSGQuatImpl(MoveTemp(RotationOffset)).ToFQuat(); +} + +const FVector& FSGTrackingImpl::GetSenseGloveViveToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetSenseGloveViveToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetSenseGloveViveToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetSenseGloveViveToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetSenseGloveOculusTouchToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetSenseGloveOculusTouchToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetSenseGloveOculusTouchToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetSenseGloveOculusTouchToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetNovaToWristPositionOffset() +{ + static const FVector Offset{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetNovaToWristPositionOffset()) + }; + return Offset; +} + +const FQuat& FSGTrackingImpl::GetNovaToWristRotationOffset() +{ + static FQuat Offset(FSGQuatImpl(FTrackingType::GetNovaToWristRotationOffset()).ToFQuat()); + return Offset; +} + +const FVector& FSGTrackingImpl::GetRightNovaViveToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaViveToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaViveToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaViveToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaViveToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaViveToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaViveToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaViveToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNovaQuest2ToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaQuest2ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaQuest2ToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaQuest2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaQuest2ToAttachPosition() +{ + static const FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaQuest2ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaQuest2ToAttachRotation() +{ + static const FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaQuest2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNovaPico2ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaPico2ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaPico2ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaPico2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaPico2ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaPico2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNovaQuestProToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaQuestProToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaQuestProToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaQuestProToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaQuestProToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaQuestProToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaQuestProToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaQuestProToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNovaViveFocus3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaViveFocus3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaViveFocus3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaViveFocus3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaViveFocus3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaViveFocus3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaViveFocus3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNovaQuest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNovaQuest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNovaQuest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNovaQuest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNovaQuest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNovaQuest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNovaQuest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNovaQuest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +void FSGTrackingImpl::GetNovaGloveWristOffset(const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGVect3DImpl::FVect3DType PositionOffset; + FSGQuatImpl::FQuatType RotationOffset; + + FTrackingType::GetNovaGloveWristOffset(bRightHanded, PositionOffset, RotationOffset); + + OutPositionOffset = FSGUnits::MillimetersToCentimeters( + MoveTemp(PositionOffset)); + OutRotationOffset = FSGQuatImpl(MoveTemp(RotationOffset)).ToFQuat(); +} + +void FSGTrackingImpl::GetNovaGloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGVect3DImpl::FVect3DType PositionOffset; + FSGQuatImpl::FQuatType RotationOffset; + + FTrackingType::GetNovaGloveTrackerOffset(FSGCoreEnumCast::ToEPositionalTrackingHardware(Hardware), bRightHanded, + PositionOffset, RotationOffset); + + OutPositionOffset = FSGUnits::MillimetersToCentimeters( + MoveTemp(PositionOffset)); + OutRotationOffset = FSGQuatImpl(MoveTemp(RotationOffset)).ToFQuat(); +} + +const FVector& FSGTrackingImpl::GetRightNova2ToWristPositionOffset() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2ToWristPositionOffset()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2ToWristRotationOffset() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2ToWristRotationOffset()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2ToWristPositionOffset() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2ToWristPositionOffset()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2ToWristRotationOffset() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2ToWristRotationOffset()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNova2Quest2ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2Quest2ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2Quest2ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2Quest2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2Quest2ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2Quest2ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2Quest2ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2Quest2ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNova2QuestProToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2QuestProToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2QuestProToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2QuestProToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2QuestProToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2QuestProToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2QuestProToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2QuestProToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNova2ViveTrackerToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2ViveTrackerToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2ViveTrackerToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2ViveTrackerToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2ViveTrackerToAttachPosition()) + }; + return Position; +} + +const FVector& FSGTrackingImpl::GetRightNova2Quest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2Quest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2Quest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2Quest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2Quest3ToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2Quest3ToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2Quest3ToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2Quest3ToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2ViveTrackerToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2ViveTrackerToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetRightNova2ViveWristTrackerToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetRightNova2ViveWristTrackerToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetRightNova2ViveWristTrackerToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetRightNova2ViveWristTrackerToAttachRotation()).ToFQuat()); + return Rotation; +} + +const FVector& FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachPosition() +{ + static FVector Position{ + FSGUnits::MillimetersToCentimeters( + FTrackingType::GetLeftNova2ViveWristTrackerToAttachPosition()) + }; + return Position; +} + +const FQuat& FSGTrackingImpl::GetLeftNova2ViveWristTrackerToAttachRotation() +{ + static FQuat Rotation(FSGQuatImpl(FTrackingType::GetLeftNova2ViveWristTrackerToAttachRotation()).ToFQuat()); + return Rotation; +} + +void FSGTrackingImpl::GetNova2GloveWristOffset(const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGVect3DImpl::FVect3DType PositionOffset; + FSGQuatImpl::FQuatType RotationOffset; + + FTrackingType::GetNova2GloveWristOffset(bRightHanded, TCHAR_TO_UTF8(*HardwareVersion), + PositionOffset, RotationOffset); + + OutPositionOffset = FSGUnits::MillimetersToCentimeters( + MoveTemp(PositionOffset)); + OutRotationOffset = FSGQuatImpl(MoveTemp(RotationOffset)).ToFQuat(); +} + +void FSGTrackingImpl::GetNova2GloveTrackerOffset(const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + FSGVect3DImpl::FVect3DType PositionOffset; + FSGQuatImpl::FQuatType RotationOffset; + + FTrackingType::GetNova2GloveTrackerOffset(FSGCoreEnumCast::ToEPositionalTrackingHardware(Hardware), bRightHanded, + TCHAR_TO_UTF8(*HardwareVersion), + PositionOffset, RotationOffset); + + OutPositionOffset = FSGUnits::MillimetersToCentimeters( + MoveTemp(PositionOffset)); + OutRotationOffset = FSGQuatImpl(MoveTemp(RotationOffset)).ToFQuat(); +} + +FString FSGTrackingImpl::ToString(const ESGPositionalTrackingHardware Hardware) +{ + FString String(UTF8_TO_TCHAR( + FTrackingType::ToString(FSGCoreEnumCast::ToEPositionalTrackingHardware(Hardware)).c_str())); + return String; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.cpp new file mode 100644 index 0000000..b0ff50e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.cpp @@ -0,0 +1,249 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreImpl/SGVect3DImpl.h" + +#include "Containers/StringConv.h" + +#include "SGBuildHacks/SGInclude_Core_Vect3D.h" + +struct FSGVect3DImpl::FImpl +{ + /************************ + * Member variables + ************************/ + + FVect3DType Vect3D; + + /************************ + * Owner object + ************************/ + + FSGVect3DImpl* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGVect3DImpl* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +const FSGVect3DImpl& FSGVect3DImpl::Zero() +{ + static const FSGVect3DImpl Z(FVect3DType::Zero()); + return Z; +} + +bool FSGVect3DImpl::Deserialize(const FString& String, FSGVect3DImpl& OutResult, const ANSICHAR Delimiter) +{ + FVect3DType Vect3D; + const bool bReturn = FVect3DType::Deserialize(TCHAR_TO_UTF8(*String), Vect3D, Delimiter); + OutResult = FSGVect3DImpl(Vect3D); + return bReturn; +} + +FSGVect3DImpl::FSGVect3DImpl() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGVect3DImpl::FSGVect3DImpl(const float X, const float Y, const float Z) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->Vect3D = FVect3DType(X, Y, Z); +} + +FSGVect3DImpl::FSGVect3DImpl(const FVect3DType& Vect3D) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->Vect3D = Vect3D; +} + +FSGVect3DImpl::FSGVect3DImpl(const FVector& Vector) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + /// NOTE + /// Unreal Engine uses a left-handed, z-up world coordinate system, which yealds clockwise rotations: + /// Forward X + /// Right Y + /// Up Z + /// SenseGlove uses a right-handed, z-up corrdinate systenm, which yealds counter-clockwise rotations: + /// Forward X + /// Left Y + /// Up Z + + FVect3DType Vect3D(Vector.X, -Vector.Y, Vector.Z); + Pimpl->Vect3D = MoveTemp(Vect3D); +} + +FSGVect3DImpl::FSGVect3DImpl(const FSGVect3DImpl& Rhs) + : Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSGVect3DImpl::FSGVect3DImpl(FSGVect3DImpl&& Rhs) SG_NOEXCEPT = default; + +FSGVect3DImpl::~FSGVect3DImpl() = default; + +FSGVect3DImpl& FSGVect3DImpl::operator=(const FSGVect3DImpl& Rhs) +{ + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSGVect3DImpl& FSGVect3DImpl::operator=(FSGVect3DImpl&& Rhs) SG_NOEXCEPT = default; + +const FSGVect3DImpl::FVect3DType& FSGVect3DImpl::ToVect3D() const +{ + return Pimpl->Vect3D; +} + +FVector FSGVect3DImpl::ToFVector() const +{ + /// NOTE + /// Unreal Engine uses a left-handed, z-up world coordinate system, which yealds clockwise rotations: + /// Forward X + /// Right Y + /// Up Z + /// SenseGlove uses a right-handed, z-up corrdinate systenm, which yealds counter-clockwise rotations: + /// Forward X + /// Left Y + /// Up Z + + FVector Vector(Pimpl->Vect3D.GetX(), -Pimpl->Vect3D.GetY(), Pimpl->Vect3D.GetZ()); + return Vector; +} + +FSGVect3DImpl FSGVect3DImpl::operator+(const FSGVect3DImpl& Vect3DImpl) const +{ + return FSGVect3DImpl(Pimpl->Vect3D.operator+(Vect3DImpl.ToVect3D())); +} + +FSGVect3DImpl FSGVect3DImpl::operator-(const FSGVect3DImpl& Vect3DImpl) const +{ + return FSGVect3DImpl(Pimpl->Vect3D.operator-(Vect3DImpl.ToVect3D())); +} + +FSGVect3DImpl FSGVect3DImpl::operator*(const float& ScaleFactor) const +{ + return FSGVect3DImpl(Pimpl->Vect3D.operator*(ScaleFactor)); +} + +float FSGVect3DImpl::GetX() const +{ + return Pimpl->Vect3D.GetX(); +} + +void FSGVect3DImpl::SetX(const float X) +{ + Pimpl->Vect3D.SetX(X); +} + +float FSGVect3DImpl::GetY() const +{ + return Pimpl->Vect3D.GetY(); +} + +void FSGVect3DImpl::SetY(const float Y) +{ + Pimpl->Vect3D.SetY(Y); +} + +float FSGVect3DImpl::GetZ() const +{ + return Pimpl->Vect3D.GetZ(); +} + +void FSGVect3DImpl::SetZ(const float Z) +{ + Pimpl->Vect3D.SetZ(Z); +} + +float FSGVect3DImpl::Magnitude() const +{ + return Pimpl->Vect3D.Magnitude(); +} + +void FSGVect3DImpl::Normalized() +{ + Pimpl->Vect3D.Normalized(); +} + +void FSGVect3DImpl::Scale(const float Factor) +{ + Pimpl->Vect3D.Scale(Factor); +} + +float FSGVect3DImpl::DistTo(const FSGVect3DImpl& Vect3DImpl) const +{ + return Pimpl->Vect3D.DistTo(Vect3DImpl.ToVect3D()); +} + +bool FSGVect3DImpl::Equals(const FSGVect3DImpl& Vect3DImpl) const +{ + return Pimpl->Vect3D.Equals(Vect3DImpl.ToVect3D()); +} + +FString FSGVect3DImpl::ToString() const +{ + return UTF8_TO_TCHAR(Pimpl->Vect3D.ToString().c_str()); +} + +FString FSGVect3DImpl::Serialize(const ANSICHAR Delimiter) const +{ + return UTF8_TO_TCHAR(Pimpl->Vect3D.Serialize(Delimiter).c_str()); +} + +FSGVect3DImpl::FImpl::FImpl(FSGVect3DImpl* InOwner) + : Owner(InOwner) +{ +} + +FSGVect3DImpl::FImpl::~FImpl() = default; + +void FSGVect3DImpl::FImplDeleter::operator()(const FSGVect3DImpl::FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.h new file mode 100644 index 0000000..be45e22 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SGCoreImpl/SGVect3DImpl.h @@ -0,0 +1,223 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace Kinematics + { + class Vect3D; + } +} + +class SENSEGLOVECOREIMPL_API FSGVect3DImpl +{ +public: + typedef SGCore::Kinematics::Vect3D FVect3DType; + +public: + /** + * Represents a vector with coordinates (0, 0, 0). + */ + static const FSGVect3DImpl& Zero(); + + /** + * Serialize a FSGVect3DImpl into a string representation. + */ + static bool Deserialize(const FString& String, FSGVect3DImpl& OutResult, ANSICHAR Delimiter); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * Creates an empty vector (0, 0, 0) for internal use. + */ + FSGVect3DImpl(); + + /** + * Create a new instance of a 3D vector. + */ + FSGVect3DImpl(float X, float Y, float Z); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGVect3DImpl(const FVect3DType& Vect3D); + + /** + * The cast from FVector type constructor. + */ + explicit FSGVect3DImpl(const FVector& Vector); + +public: + /** + * The copy constructor. + */ + FSGVect3DImpl(const FSGVect3DImpl& Rhs); + + /** + * The move constructor. + */ + FSGVect3DImpl(FSGVect3DImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGVect3DImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGVect3DImpl& operator=(const FSGVect3DImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGVect3DImpl& operator=(FSGVect3DImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FVect3DType& ToVect3D() const; + + /** + * The cast to FVector type method. + */ + FVector ToFVector() const; + +public: + /** + * Overload + operator to add two SGVect3Impl objects. + */ + FSGVect3DImpl operator+(const FSGVect3DImpl& Vect3DImpl) const; + + /** + * Overload - operator to subtract two SGVect3Impl objects. + */ + FSGVect3DImpl operator-(const FSGVect3DImpl& Vect3DImpl) const; + + /** + * Overload - operator to scale a vector3 by a float. + */ + FSGVect3DImpl operator*(const float& ScaleFactor) const; + +public: + /** + * Get the x-component of the 3D vector in cm. + */ + float GetX() const; + + /** + * Set the x-component of the 3D vector in cm. + */ + void SetX(float X); + + /** + * Get the y-component of the 3D vector in cm. + */ + float GetY() const; + + /** + * Set the y-component of the 3D vector in cm. + */ + void SetY(float Y); + + /** + * Get the z-component of the 3D vector in cm. + */ + float GetZ() const; + + /** + * Set the z-component of the 3D vector in cm. + */ + void SetZ(float Z); + +public: + /** + * Calculate the magnitude or 'length' of this Vector in cm. + */ + float Magnitude() const; + + /** + * Returns this vector normalized to have a Magnitude on 1. + */ + void Normalized(); + + /** + * Scale all elements of this vector by a certain factor. + */ + void Scale(float Factor); + + /** + * Calculate the distance between this Vector and another one in cm. + */ + float DistTo(const FSGVect3DImpl& Vect3DImpl) const; + + /** + * Check if this Vector is roughly equal to another. + */ + bool Equals(const FSGVect3DImpl& Vect3DImpl) const; + + /** + * Create a string representation of this Vector. + */ + FString ToString() const; + +public: + /** + * Convert a serialized FSGVect3DImpl back into its class representation. + */ + FString Serialize(ANSICHAR Delimiter) const; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.cpp new file mode 100644 index 0000000..a25f584 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCoreImpl.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveCoreImplModule.h" + +IMPLEMENT_MODULE(FSenseGloveCoreImplModule, SenseGloveCoreImpl) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImpl.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.cpp new file mode 100644 index 0000000..c3125bc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.cpp @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCoreImplModule.h" +#include "Containers/UnrealString.h" +#include "SGCoreImpl/SGLibraryImpl.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveCoreImplModule" + +void FSenseGloveCoreImplModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveCoreImpl module..."); + SGLOG(FString::Printf(TEXT("The low-level implementation of '%s' has been loaded successfully!"), *FSGLibraryImpl:: + Version())); +} + +void FSenseGloveCoreImplModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveCoreImpl module..."); +} + +void FSenseGloveCoreImplModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveCoreImpl module has succeeded!"); +} + +void FSenseGloveCoreImplModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveCoreImpl module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.h new file mode 100644 index 0000000..a465266 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Private/SenseGloveCoreImplModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveCoreImpl" + +class FSenseGloveCoreImplModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGAnatomyImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGAnatomyImpl.h new file mode 100644 index 0000000..b0302df --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGAnatomyImpl.h @@ -0,0 +1,85 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +namespace SGCore +{ + namespace Kinematics + { + class Anatomy; + } +} + +class SENSEGLOVECOREIMPL_API FSGAnatomyImpl final +{ +public: + typedef SGCore::Kinematics::Anatomy FAnatomyType; + +public: + static float GetTotalFingerFlexion(); + + static float GetTotalFingerExtension(); + + static float GetTotalThumbFlexion(); + + static float GetTotalThumbExtension(); + +public: + static float GetFingerJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + static float GetThumbJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + static float ClampJointAngle(float Value, int32 Finger, bool bRightHand, int32 Joint, int32 Movement); + + static float NormalizeFingerFlexion(float FlexionInDegrees); + + static float NormalizeThumbFlexion(float FlexionInDegrees); + +public: + static TArray> GetDefaultHandAngles(bool bRightHanded); + + static TArray> GetFlatHandAngles(bool bRightHanded); + + static TArray> GetThumbsUpHandAngles(bool bRightHanded); + + static TArray> GetFistHandAngles(bool bRightHanded); + +public: + FSGAnatomyImpl() = delete; + virtual ~FSGAnatomyImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBasicHandModelImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBasicHandModelImpl.h new file mode 100644 index 0000000..bb2b14c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBasicHandModelImpl.h @@ -0,0 +1,178 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace Kinematics + { + class BasicHandModel; + } +} + +class SENSEGLOVECOREIMPL_API FSGBasicHandModelImpl final +{ +public: + typedef SGCore::Kinematics::BasicHandModel FBasicHandModelType; + +public: + static FSGBasicHandModelImpl Default(bool bRightHanded); + + static FSGBasicHandModelImpl Deserialize(const FString& SerializedString); + +public: + static const TArray>& GetBaseFingerLengths(); + + static const TArray& GetBaseJointPositions(); + + static const TArray& GetBaseJointAngles(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGBasicHandModelImpl(); + + FSGBasicHandModelImpl(bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions); + + FSGBasicHandModelImpl(bool bRightHanded, const TArray>& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGBasicHandModelImpl(const FBasicHandModelType& BasicHandModel); + +public: + /** + * The copy constructor. + */ + FSGBasicHandModelImpl(const FSGBasicHandModelImpl& Rhs); + + /** + * The move constructor. + */ + FSGBasicHandModelImpl(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGBasicHandModelImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGBasicHandModelImpl& operator=(const FSGBasicHandModelImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGBasicHandModelImpl& operator=(FSGBasicHandModelImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FBasicHandModelType& ToBasicHandModel() const; + +public: + bool IsRight() const; + +public: + TArray> GetFingerLengths() const; + + TArray GetFingerLengths(ESGFinger Finger) const; + + void SetFingerLengths(ESGFinger Finger, const TArray& Lengths); + void SetFingerLengths(uint8 Finger, const TArray& Lengths); + + TArray> GetFingerRatios() const; + +public: + TArray GetFingerRatios(ESGFinger Finger) const; + + TArray GetStartJointPositions() const; + + void SetStartJointPosition(ESGFinger Finger, const FVector& Position); + void SetStartJointPosition(uint8 Finger, const FVector& Position); + + TArray GetStartJointRotations() const; + + FVector GetJointPosition(ESGFinger Finger) const; + + void SetJointPosition(const FVector& NewPosition, ESGFinger Finger); + + FQuat GetJointRotation(ESGFinger Finger) const; + + void SetJointRotation(const FQuat& NewRotation, ESGFinger Finger); + + TArray GetTotalLengths() const; + + float GetTotalLength(ESGFinger Finger) const; + +public: + TArray Get3DLengths(ESGFinger Finger) const; + +public: + bool Equals(const FSGBasicHandModelImpl& BasicHandModelImpl) const; + +public: + FString ToString() const; + + FString ToString(bool bLengthsOnly) const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBetaDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBetaDeviceImpl.h new file mode 100644 index 0000000..a9f398b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGBetaDeviceImpl.h @@ -0,0 +1,167 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "Containers/UnrealString.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class BetaDevice; +} + +class SENSEGLOVECOREIMPL_API FSGBetaDeviceImpl final : public FSGDeviceImpl +{ +#if ENGINE_MAJOR_VERSION >= 5 + friend class SharedPointerInternals::TIntrusiveReferenceController; +#else + friend class SharedPointerInternals::TIntrusiveReferenceController; +#endif /* ENGINE_MAJOR_VERSION >= 5 */ + +public: + typedef SGCore::BetaDevice FBetaDeviceType; + + typedef std::shared_ptr FBetaDevicePtrType; + typedef std::vector FBetaDevicePtrVectorType; + +public: + static TSharedRef Parse(const FString& String); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGBetaDeviceImpl(); + + FSGBetaDeviceImpl(const FString& ConstantsString, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGBetaDeviceImpl(const FBetaDeviceType BetaDevice); + + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGBetaDeviceImpl(const FBetaDevicePtrType BetaDevice); + +public: + /** + * The copy constructor. + */ + FSGBetaDeviceImpl(const FSGBetaDeviceImpl& Rhs); + + /** + * The move constructor. + */ + FSGBetaDeviceImpl(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGBetaDeviceImpl() override; + +public: + /** + * The copy assignment operator. + */ + FSGBetaDeviceImpl& operator=(const FSGBetaDeviceImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGBetaDeviceImpl& operator=(FSGBetaDeviceImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + FBetaDeviceType ToBetaDevice() const; + + /** + * The cast to underlying pointer type method. + */ + FBetaDevicePtrType ToBetaDevicePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FBetaDevicePtrType ToBetaDevicePtrChecked() const; + +public: + virtual ESGDeviceType GetDeviceType() const override; + + virtual FString GetDeviceId() const override; + + virtual FString GetHardwareVersion() const override; + + virtual int32 GetFirmwareVersion() const override; + + virtual int32 GetSubFirmwareVersion() const override; + +public: + FString GetConstantsString() const; + + FString GetSensorData() const; + + FString GetLastCommand() const; + +public: + bool SendHaptics(const FString& Command, int32 Channel = 0) const; + +public: + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGCustomWaveformImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGCustomWaveformImpl.h new file mode 100644 index 0000000..f275b29 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGCustomWaveformImpl.h @@ -0,0 +1,164 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class CustomWaveform; +} + +class SENSEGLOVECOREIMPL_API FSGCustomWaveformImpl final +{ +public: + typedef SGCore::CustomWaveform FCustomWaveformType; + +public: + static FString ToString(ESGWaveformType Type); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGCustomWaveformImpl(); + + FSGCustomWaveformImpl(float Amplitude, float Duration); + + FSGCustomWaveformImpl(float Amplitude, float Duration, float Frequency); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGCustomWaveformImpl(const FCustomWaveformType& CustomWaveform); + +public: + /** + * The copy constructor. + */ + FSGCustomWaveformImpl(const FSGCustomWaveformImpl& Rhs); + + /** + * The move constructor. + */ + FSGCustomWaveformImpl(FSGCustomWaveformImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGCustomWaveformImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGCustomWaveformImpl& operator=(const FSGCustomWaveformImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGCustomWaveformImpl& operator=(FSGCustomWaveformImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FCustomWaveformType& ToCustomWaveform() const; + + /** + * The cast to underlying type method. + */ + FCustomWaveformType& ToCustomWaveform(); + +public: + float GetAmplitude() const; + void SetAmplitude(float Amplitude); + + ESGWaveformType GetWaveType() const; + void SetWaveType(ESGWaveformType Type); + + bool IsInfinite() const; + void SetInfinite(bool bInfinite); + + int32 GetRepeatAmount() const; + void SetRepeatAmount(int32 Amount); + + float GetAttackTime() const; + void SetAttackTime(float Time); + + float GetSustainTime() const; + void SetSustainTime(float Time); + + float GetDecayTime() const; + void SetDecayTime(float Time); + + float GetFrequencyStart() const; + void SetFrequencyStart(float Frequency); + + float GetFrequencyEnd() const; + void SetFrequencyEnd(float Frequency); + + float GetFrequencySwitchTime() const; + void SetFrequencySwitchTime(float Time); + + float GetFrequencySwitchFactor() const; + void SetFrequencySwitchFactor(float Factor); + +public: + float GetEffectTime() const; + float GetTotalEffectTime() const; + + bool FrequencyJumps() const; + +public: + bool Equals(const FSGCustomWaveformImpl& CustomWaveformImpl) const; + +public: + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h new file mode 100644 index 0000000..865fb6a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceImpl.h @@ -0,0 +1,221 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + +#pragma once + +#include +#include + +#include "Containers/UnrealString.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class SGDevice; +} + +class FSGBetaDeviceImpl; +class FSGHapticChannelInfoImpl; +class FSGHapticGloveImpl; +class FSGNova2GloveImpl; +class FSGNovaGloveImpl; +class FSGSenseGloveImpl; + +class SENSEGLOVECOREIMPL_API FSGDeviceImpl : public TSharedFromThis +{ +public: + typedef SGCore::SGDevice FSGDeviceType; + + typedef std::shared_ptr FSGDevicePtrType; + typedef std::vector FSGDevicePtrVectorType; + +public: + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + + static bool FirmwareNewerThan(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + static bool FirmwareOlderThan(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + + static FString ToString(ESGDeviceType DeviceType); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGDeviceImpl(); + +public: + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGDeviceImpl(const FSGDevicePtrType SGDevice); + +public: + /** + * The copy constructor. + */ + FSGDeviceImpl(const FSGDeviceImpl& Rhs); + + /** + * The move constructor. + */ + FSGDeviceImpl(FSGDeviceImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGDeviceImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGDeviceImpl& operator=(const FSGDeviceImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGDeviceImpl& operator=(FSGDeviceImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying pointer type method. + */ + FSGDevicePtrType ToSGDevicePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FSGDevicePtrType ToSGDevicePtrChecked() const; + +public: + /** + * The cast to base TSharedRef type method. + */ + TSharedRef ToSGDeviceImplRef(); + + /** + * The cast to derived TSharedRef type method. + */ + TSharedRef ToBetaDeviceImplRef(); + + /** + * The cast to derived TSharedRef type method. + */ + TSharedRef ToHapticGloveImplRef(); + + /** + * The cast to derived TSharedRef type method. + */ + TSharedRef ToNova2GloveImplRef(); + + /** + * The cast to derived TSharedRef type method. + */ + TSharedRef ToNovaGloveImplRef(); + + /** + * The cast to derived TSharedRef type method. + */ + TSharedRef ToSenseGloveImplRef(); + +public: + bool IsABetaDevice() const; + bool IsAHapticGlove() const; + bool IsANova2Glove() const; + bool IsANovaGlove() const; + bool IsASenseGlove() const; + +public: + TSharedPtr AsBetaDevice() const; + TSharedPtr AsHapticGlove() const; + TSharedPtr AsNova2Glove() const; + TSharedPtr AsNovaGlove() const; + TSharedPtr AsSenseGlove() const; + +public: + virtual ESGDeviceType GetDeviceType() const; + + virtual FString GetDeviceId() const; + + virtual FString GetHardwareVersion() const; + virtual int32 GetFirmwareVersion() const; + virtual int32 GetSubFirmwareVersion() const; + virtual FString GetFirmwareString() const; + + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + FString GetAddress() const; + + bool IsConnected() const; + ESGConnectionType GetConnectionType() const; + + int32 PacketsPerSecondReceived() const; + int32 PacketsPerSecondSent() const; + + int32 GetDeviceIndex() const; + virtual void SetDeviceIndex(int32 NewIndex); + + virtual bool IsWireless() const; + + virtual bool HasBattery() const; + virtual bool IsCharging(); + virtual bool GetBatteryLevel(float& OutLevel); + +public: + virtual void SetHapticChannels(const FSGHapticChannelInfoImpl& Channels); + + int32 GetHapticChannelCount() const; + int32 GetHapticChannelCount(ESGHapticChannelType ChannelType) const; + +public: + virtual FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceListImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceListImpl.h new file mode 100644 index 0000000..1588a7c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceListImpl.h @@ -0,0 +1,103 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class DeviceList; +} + +class SENSEGLOVECOREIMPL_API FSGDeviceListImpl final +{ +public: + typedef SGCore::DeviceList FDeviceListType; + +public: + static int32 ActiveDevices(); + + static bool SenseCommRunning(); + + static void Dispose(); + + static void Reinitialize(); + + static TArray> GetDevices(); + + template + static TArray> GetDevices() + { + const std::type_info& TType = typeid(T); + const TArray> CurrentDevices = GetDevices(); + TArray> Devices; + + for (TSharedRef Device : CurrentDevices) + { + auto &d = Device.Get(); + const std::type_info& DType = typeid(d); + if (DType.hash_code() == TType.hash_code()) + { + Devices.Push(Device); + } + } + + return Devices; + } + + static bool GetSensorDataString(int32 IpcIndex, const FString& IpcAddress, FString& OutString); + + static bool SendHaptics(int32 IpcIndex, const FString& IpcAddress, int32 ChannelIndex, const FString& Commands); + + static FString GetDeviceStringAt(int32 IpcIndex, const FString& IpcAddress, int32 Index); + + static FString GetAddress(int32 IpcIndex, const FString& IpcAddress); + + static ESGConnectionType GetConnectionType(int32 IpcIndex, const FString& IpcAddress); + + static bool IsConnected(int32 IpcIndex, const FString& IpcAddress); + + static int32 PacketsPerSecondReceived(int32 IpcIndex, const FString& IpcAddress); + + static int32 PacketsPerSecondSent(int32 IpcIndex, const FString& IpcAddress); + +public: + FSGDeviceListImpl() = delete; + virtual ~FSGDeviceListImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceModelImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceModelImpl.h new file mode 100644 index 0000000..14d1f3f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGDeviceModelImpl.h @@ -0,0 +1,127 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + class DeviceModel; +} + +class SENSEGLOVECOREIMPL_API FSGDeviceModelImpl final +{ +public: + typedef SGCore::DeviceModel FDeviceModelType; + +public: + static TArray ParseFunctions(int32 Value, int32 Size); + + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGDeviceModelImpl(); + + FSGDeviceModelImpl(const FString& Id, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGDeviceModelImpl(const FDeviceModelType& DeviceModel); + +public: + /** + * The copy constructor. + */ + FSGDeviceModelImpl(const FSGDeviceModelImpl& Rhs); + + /** + * The move constructor. + */ + FSGDeviceModelImpl(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGDeviceModelImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGDeviceModelImpl& operator=(const FSGDeviceModelImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGDeviceModelImpl& operator=(FSGDeviceModelImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FDeviceModelType& ToDeviceModel() const; + +public: + FString GetDeviceId() const; + + FString GetHardwareVersion() const; + + int32 GetFirmwareVersion() const; + + int32 GetSubFirmwareVersion() const; + +public: + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h new file mode 100644 index 0000000..64922b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGExportedFunctions.h @@ -0,0 +1,3151 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +/* Defines a C++ like static_assert. */ +#if ! __cplusplus +#include +#endif /* ! __cplusplus */ + +/* Contains __bool_true_false_are_defined macro that can be used in order to + check whether boolean type is supported by the compiler or not. */ +#include + +#include "CoreTypes.h" + +/* Check at compile time whether the C compiler has support for bool, true, + and false macros. */ +static_assert(__bool_true_false_are_defined, "Error: bool, true, and false are not defined!"); + +#if defined ( SENSEGLOVE_BUILDING_CORE_IMPL_MODULE ) +#define SENSEGLOVECOREIMPL_PUBLIC_API DLLEXPORT +#else +#define SENSEGLOVECOREIMPL_PUBLIC_API DLLIMPORT +#endif /* defined ( SENSEGLOVE_BUILDING_CORE_IMPL_MODULE ) */ + +/* If C++ is used, switch to C mode in order to prevent the C++ name mangling of + method names. */ +#if __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/******************************************************************************* + * Exceptional function calls + ******************************************************************************/ + +#if PLATFORM_ANDROID +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_Android_Initialize( + void* InEnv, + void* InClass, + void* InActiveDevicesMethodID, + void* InGetDeviceStringMethodID, + void* InGetSensorStringMethodID, + void* InWriteHapticsMethodID, + void* StoragePath); +#endif /* PLATFORM_ANDROID */ + +/******************************************************************************* + * SGAnatomyImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetTotalFingerFlexion(); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetTotalFingerExtension(); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetTotalThumbFlexion(); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetTotalThumbExtension(); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetFingerJointLimit( + bool bRightHanded, + int32 Joint, + int32 Movement, + bool bMax); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_GetThumbJointLimit( + bool bRightHanded, + int32 Joint, + int32 Movement, + bool bMax); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_ClampJointAngle( + float Value, + int32 Finger, + bool bRightHand, + int32 Joint, + int32 Movement); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_NormalizeFingerFlexion( + float FlexionInDegrees); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGAnatomyImpl_NormalizeThumbFlexion( + float FlexionInDegrees); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGAnatomyImpl_GetDefaultHandAngles( + void* OutAngles, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGAnatomyImpl_GetFlatHandAngles( + void* OutAngles, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGAnatomyImpl_GetThumbsUpHandAngles( + void* OutAngles, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGAnatomyImpl_GetFistHandAngles( + void* OutAngles, + bool bRightHanded); + +/******************************************************************************* + * SGBasicHandModelImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_Default( + void* OutBasicHandModelImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_Deserialize( + void* OutBasicHandModelImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetBaseFingerLengths( + void* OutLengths); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointPositions( + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetBaseJointAngles( + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ctor( + void* OutBasicHandModelImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPosition( + void* OutBasicHandModelImpl, + bool bRightHanded, + void* Lengths, + void* StartPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGBasicHandModelImpl_ctor_bRightHanded_Lengths_StartPositions_StartRotations( + void* OutBasicHandModelImpl, + bool bRightHanded, + void* Lengths, + void* StartPositions, + void* StartRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ctor_copy( + void* OutBasicHandModelImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ctor_copy_assignment( + void* OutBasicHandModelImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGBasicHandModelImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths( + void* Instance, + void* OutLengths); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetFingerLengths_Finger( + void* Instance, + void* OutLengths, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_ESGFinger( + void* Instance, + void* Finger, + void* Lengths); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetFingerLengths_uint8Finger( + void* Instance, + uint8 Finger, + void* Lengths); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios( + void* Instance, + void* OutRatios); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetFingerRatios_Finger( + void* Instance, + void* OutRatios, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetStartJointPositions( + void* Instance, + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_ESGFinger( + void* Instance, + void* Finger, + void* Position); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetStartJointPosition_uin8Finger( + void* Instance, + uint8 Finger, + void* Position); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetStartJointRotations( + void* Instance, + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetJointPosition( + void* Instance, + void* OutPosition, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetJointPosition( + void* Instance, + void* NewPosition, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetJointRotation( + void* Instance, + void* OutRotation, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_SetJointRotation( + void* Instance, + void* NewRotation, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_GetTotalLengths( + void* Instance, + void* OutLengths); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGBasicHandModelImpl_GetTotalLength( + void* Instance, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_Get3DLengths( + void* Instance, + void* OutLengths, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGBasicHandModelImpl_Equals( + void* Instance, + void* BasicHandModelImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_ToString_bLengthsOnly( + void* Instance, + void* OutString, + bool bLengthsOnly); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBasicHandModelImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGBetaDeviceImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_Parse( + void* OutBetaDevice, + void* String); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ctor( + void* OutBetaDeviceImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + void* OutBetaDeviceImpl, + void* ConstantsString, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGBetaDeviceImpl_ctor_ConstantsString_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_MakeShared( + void* OutSharedPtr, + void* ConstantsString, + void* DeviceId, + void* HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy( + void* OutBetaDeviceImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ctor_copy_assignment( + void* OutBetaDeviceImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGBetaDeviceImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGBetaDeviceImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetConstantsString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetSensorData( + void* Instance, + void* OutData); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_GetLastCommand( + void* Instance, + void* OutCommand); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGBetaDeviceImpl_SendHaptics( + void* Instance, + void* Command); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGBetaDeviceImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGCustomWaveformImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ToString_Type( + void* OutString, + void* Type); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ctor( + void* OutCustomWaveformImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration( + void* OutCustomWaveformImpl, + float Amplitude, + float Duration); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ctor_Amplitude_Duration_Frequency( + void* OutCustomWaveformImpl, + float Amplitude, + float Duration, + float Frequency); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ctor_copy( + void* OutCustomWaveformImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ctor_copy_assignment( + void* OutCustomWaveformImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetAmplitude( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetAmplitude( + void* Instance, + float Amplitude); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_GetWaveType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetWaveType( + void* Instance, + void* Type); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGCustomWaveformImpl_IsInfinite( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetInfinite( + void* Instance, + bool bInfinite); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGCustomWaveformImpl_GetRepeatAmount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetRepeatAmount( + void* Instance, + int32 Amount); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetAttackTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetAttackTime( + void* Instance, + float Time); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetSustainTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetSustainTime( + void* Instance, + float Time); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetDecayTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetDecayTime( + void* Instance, + float Time); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyStart( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyStart( + void* Instance, + float Frequency); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencyEnd( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencyEnd( + void* Instance, + float Frequency); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchTime( + void* Instance, + float Time); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetFrequencySwitchFactor( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_SetFrequencySwitchFactor( + void* Instance, + float Factor); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetEffectTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGCustomWaveformImpl_GetTotalEffectTime( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGCustomWaveformImpl_FrequencyJumps( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGCustomWaveformImpl_Equals( + void* Instance, + void* CustomWaveformImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGCustomWaveformImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGDeviceImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ParseFirmware( + void* RawFirmware, + int32* OutMainVersion, + int32* OutSubVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API bool +SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + int32 MyFirmwareMain, + int32 MyFirmwareSub, + int32 ReferenceMain, + int32 ReferenceSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API bool +SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_ReferenceMain_ReferenceSub_bInclusive( + int32 MyFirmwareMain, + int32 MyFirmwareSub, + int32 ReferenceMain, + int32 ReferenceSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToString_DeviceType( + void* DeviceType, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ctor( + void* OutSGDeviceImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ctor_copy( + void* OutSGDeviceImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ctor_copy_assignment( + void* OutSGDeviceImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToSGDeviceImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToBetaDeviceImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToHapticGloveImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToNova2GloveImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToNovaGloveImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToSenseGloveImplRef( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsABetaDevice( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsAHapticGlove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsANova2Glove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsANovaGlove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsASenseGlove( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_AsBetaDevice( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_AsHapticGlove( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_AsNova2Glove( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_AsNovaGlove( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_AsSenseGlove( + void* Instance, + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetFirmwareString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_FirmwareNewerThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + void* Instance, + int32 MyFirmwareMain, + int32 MyFirmwareSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_FirmwareOlderThan_MyFirmwareMain_MyFirmwareSub_bInclusive( + void* Instance, + int32 MyFirmwareMain, + int32 MyFirmwareSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetAddress( + void* Instance, + void* Address); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsConnected( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_GetConnectionType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_PacketsPerSecondReceived( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_PacketsPerSecondSent( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetDeviceIndex( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_SetDeviceIndex( + void* Instance, + int32 NewIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsWireless( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_HasBattery( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_IsCharging( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceImpl_GetBatteryLevel( + void* Instance, + float* OutLevel); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_SetHapticChannels( + void* Instance, + void* Channels); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceImpl_GetHapticChannelCount_ChannelType( + void* Instance, + void* ChannelType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGDeviceListImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceListImpl_ActiveDevices(); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceListImpl_SenseCommRunning(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_Dispose(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_Reinitialize(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_GetDevices( + void* OutDevices); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceListImpl_GetSensorDataString( + int32 IpcIndex, + void* IpcAddress, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceListImpl_SendHaptics( + int32 IpcIndex, + void* IpcAddress, + int32 ChannelIndex, + void* Commands); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_GetDeviceStringAt( + void* OutString, + int32 IpcIndex, + void* IpcAddress, + int32 Index); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_GetAddress( + void* OutAddress, + int32 IpcIndex, + void* IpcAddress); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceListImpl_GetConnectionType( + void* OutType, + int32 IpcIndex, + void* IpcAddress); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceListImpl_IsConnected( + int32 IpcIndex, + void* IpcAddress); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondReceived( + int32 IpcIndex, + void* IpcAddress); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceListImpl_PacketsPerSecondSent( + int32 IpcIndex, + void* IpcAddress); + +/******************************************************************************* + * SGDeviceModelImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_ParseFunctions( + void* OutParseFunctions, + int32 Value, + int32 Size); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_ParseFirmware( + void* RawFirmware, + int32* OutMainVersion, + int32* OutSubVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_ctor( + void* OutDeviceModelImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGDeviceModelImpl_ctor_Id_HardwareVersion_FirmwareVersion_SubFirmwareVersion( + void* OutDeviceModelImpl, + void* Id, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_ctor_copy( + void* OutDeviceModelImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_ctor_copy_assignment( + void* OutDeviceModelImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGDeviceModelImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceModelImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGDeviceModelImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceModelImpl_FirmwareNewerThan( + void* Instance, + int32 FirmwareMain, + int32 FirmwareSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGDeviceModelImpl_FirmwareOlderThan( + void* Instance, + int32 FirmwareMain, + int32 FirmwareSub, + bool bInclusive); + +/******************************************************************************* + * SGHandInterpolatorImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_Deserialize( + void* OutHandInterpolatorImpl, + void* SerializedString, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_ctor( + void* OutHandInterpolatorImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_ctor_bRightHanded( + void* OutHandInterpolatorImpl, + const bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_ctor_copy( + void* OutHandInterpolatorImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_ctor_copy_assignment( + void* OutHandInterpolatorImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API float +SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGFingerMovement_Value_bApplyLimits( + void* Instance, + void* Movement, + float Value, + bool bApplyLimits); + +SENSEGLOVECOREIMPL_PUBLIC_API float +SGCoreImpl_FSGHandInterpolatorImpl_CalculateAngle_ESGThumbMovement_Value_bApplyLimits( + void* Instance, + void* Movement, + float Value, + bool bApplyLimits); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_InterpolateHandAngles( + void* Instance, + void* OutAngles, + void* Flexions, + void* Abductions, + float CmcTwist); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandInterpolatorImpl_Equals( + void* Instance, + void* HandInterpolatorImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandInterpolatorImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGHandLayerImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_DeviceConnected( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_GetDeviceType( + void* OutDeviceType, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_GetFirstGloveHandedness(); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHandLayerImpl_GlovesConnected(); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_GetGloveInstance( + bool bRightHanded, + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_GetCalibrationState( + void* OutHapticGloveCalibrationState, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_GetCalibrationInstructions( + void* OutString, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_ResetCalibration( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_EndCalibration( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_GetHandPose( + bool bRightHanded, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_GetWristLocation( + bool bRightHanded, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandLayerImpl_StopAllHaptics( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SendHaptics( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SupportsCustomWaveform( + bool bRightHanded, + void* AtLocation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SendCustomWaveform( + bool bRightHanded, + void* OutWaveform, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevels( + bool bRightHanded, + void* Levels01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ForceFeedbackLevel( + bool bRightHanded, + int32 Finger, + float Level01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevels( + bool bRightHanded, + void* Levels01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool + SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_Finger_Level0_bSendImmediate( + bool bRightHanded, + int32 Finger, + float Level01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool + SGCoreImpl_FSGHandLayerImpl_QueueCommand_VibroLevel_bRightHanded_AtLocation_Level01_bSendImmediate( + bool bRightHanded, + void* AtLocation, + float Level01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SupportsWristSqueeze( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_WristSqueeze( + bool bRightHanded, + float SqueezeLevel01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_SupportsFlexionLocks( + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_FlexionLock( + bool bRightHanded, + int32 Finger, + float Flexion01, + bool bSendImmediate); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandLayerImpl_QueueCommand_ClearFlexionLock( + bool bRightHanded, + int32 Finger, + bool bSendImmediate); + +/******************************************************************************* + * SGHandPoseImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_Deserialize( + void* OutHandPoseImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + void* HandAngles, + bool bRightHanded, + void* HandDimensions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_FromHandAngles_HandAngles_bRightHanded( + void* OutHandPoseImpl, + void* HandAngles, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + bool bRightHanded, + void* HandDimensions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_DefaultIdle_bRightHanded( + void* OutHandPoseImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + bool bRightHanded, + void* HandDimensions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_FlatHand_bRightHanded( + void* OutHandPoseImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + bool bRightHanded, + void* HandDimensions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ThumbsUp_bRightHanded( + void* OutHandPoseImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded_HandDimensions( + void* OutHandPoseImpl, + bool bRightHanded, + void* HandDimensions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_Fist_bRightHanded( + void* OutHandPoseImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ctor( + void* OutHandPoseImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGHandPoseImpl_ctor_bRightHanded_JointPositions_JointRotations_HandAngles( + void* OutHandPoseImpl, + bool bRightHanded, + void* JointPositions, + void* JointRotations, + void* HandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ctor_copy( + void* OutHandPoseImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ctor_copy_assignment( + void* OutHandPoseImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandPoseImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_GetJointPositions( + void* Instance, + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_GetJointRotations( + void* Instance, + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_GetHandAngles( + void* Instance, + void* OutAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHandPoseImpl_Equals( + void* Instance, + void* HandPoseImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_Finger_bClamp01( + void* Instance, + void* Finger, + bool bClamp01); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_GetNormalizedFlexion_bClamp01( + void* Instance, + void* OutFlexion, + bool bClamp01); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_ToString( + void* Instance, + void* OutString, + bool bShortFormat); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHandPoseImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGHapticChannelInfoImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_GenerateAddress( + void* OutString, + int32 DeviceIndex, + int32 ChannelIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_Parse( + void* OutHapticChannelInfoImpl, + void* IpcString); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamingType(); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetType(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_ctor( + void* OutHapticChannelInfoImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_StreamIndex_FireAndForgetIndex( + void* OutHapticChannelInfoImpl, + void* StreamIndex, + void* FireAndForgetIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_copy( + void* OutHapticChannelInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_ctor_copy_assignment( + void* OutHapticChannelInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetStreamChannelCount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetFireAndForgetChannelCount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticChannelInfoImpl_GetTotalChannelCount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_GetAddress_Unguarded( + void* Instance, + void* OutString, + void* Type, + int32 TypeIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_GetIpcParams_Unguarded( + void* Instance, + void* Type, + int32 TypeIndex, + int32* OutIndex, + void* OutAddressString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_RegenerateAddresses( + void* Instance, + int32 ForDeviceIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticChannelInfoImpl_GetAllAddresses( + void* Instance, + void* OutArray); + +/******************************************************************************* + * SGHapticGloveImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetHapticGloves( + void* OutGloves, + bool bConnectedOnly); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetGlove_OutGlove( + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetGlove_bRightHanded_OutGlove( + bool bRightHanded, + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ToString_State( + void* OutString, + void* State); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ToString_Location( + void* OutString, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ctor( + void* OutHapticGloveImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ctor_copy( + void* OutHapticGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ctor_copy_assignment( + void* OutHapticGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticGloveImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGHapticGloveImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetImuRotation( + void* Instance, + void* OutImu); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetHandPose_HandGeometry_OutHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetHandPose_OutHandPose( + void* Instance, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_GetHandAngles_OutHandAngles( + void* Instance, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetHandGeometry( + void* Instance, + void* OutBasicHandModel); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_SetHandGeometry( + void* Instance, + void* HandGeometry); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_EndCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ResetCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetCalibrationInstruction( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_StopHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_StopVibrations( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SendHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueForceFeedbackLevel( + void* Instance, + int32 Finger, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevels( + void* Instance, + void* Levels01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGHapticGloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGHapticGloveImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGInterpolationSetImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_Deserialize( + void* OutInterpolationSetImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ctor( + void* OutInterpolationSetImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2( + void* OutInterpolationSetImpl, + float From1, + float From2, + float To1, + float To2); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ctor_From1_From2_To1_To2_Min_Max( + void* OutInterpolationSetImpl, + float From1, + float From2, + float To1, + float To2, + float Min, + float Max); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ctor_copy( + void* OutInterpolationSetImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ctor_copy_assignment( + void* OutInterpolationSetImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetX0( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetX0( + void* Instance, + float X0); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetX1( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetX1( + void* Instance, + float X1); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetY0( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetY0( + void* Instance, + float Y0); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetY1( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetY1( + void* Instance, + float Y1); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetMin( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetMin( + void* Instance, + float Min); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_GetMax( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_SetMax( + void* Instance, + float Max); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGInterpolationSetImpl_Get( + void* Instance, + float Value, + bool bLimit, + bool bNormalizeAngle); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGInterpolationSetImpl_Equals( + void* Instance, + void* InterpolationSetImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_ToString_bLimits( + void* Instance, + void* OutString, + bool bLimits); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGInterpolationSetImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGJointKinematicsImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API bool +SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_StartPosition_StartRotation_JointLengths_JointAngles_OutNewPositions_OutNewRotations( + void* StartPosition, + void* StartRotation, + void* JointLengths, + void* JointAngles, + void* OutNewPositions, + void* OutNewRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API bool +SGCoreImpl_FSGJointKinematicsImpl_ForwardKinematics_Profile_Finger_JointAngles_OutNewPositions_OutNewRotations( + void* Profile, + void* Finger, + void* JointAngles, + void* OutNewPositions, + void* OutNewRotations); + +/******************************************************************************* + * SGLibraryImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGLibraryImpl_Version( + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGLibraryImpl_GetBackendType( + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGLibraryImpl_BackendVersion( + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGLibraryImpl_SGConnectVersion( + void* OutVersion); + +/******************************************************************************* + * SGNova2GloveImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_Parse( + void* OutNova2GloveImpl, + void* ConstantsString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetNova2Gloves( + void* OutGloves); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_OutGlove( + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetNova2Glove_bRightHanded_OutGlove( + bool bRightHanded, + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* HardwareVersion, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* HardwareVersion, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGNova2GloveImpl_GetStreamByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetNova2SensorRanges( + void* OutNova2SensorRanges); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData( + void* OutNormalizedValues, + void* SensorData); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + void* OutNormalizedValues, + void* SensorData, + void* OutSensorNormalizer); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_CalculateHandAngles( + void* OutHandAngles, + void* NormalizedValues, + void* Interpolator, + bool bInfluenceIndex); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ToNormalizedAngles( + void* OutNormalizedAngles, + void* NormalizedData, + void* GloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor( + void* OutNova2GloveImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo( + void* OutNova2GloveImpl, + void* DeviceInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_DeviceInfo_MakeShared( + void* OutSharedPtr, + void* DeviceInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_copy( + void* OutNova2GloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ctor_copy_assignment( + void* OutNova2GloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNova2GloveImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNova2GloveImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_HasBattery( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_IsCharging( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetBatteryLevel( + void* Instance, + float* OutBatteryLevel); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetImuRotation( + void* Instance, + void* OutImu); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_EndCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ResetCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_StopHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_StopVibrations( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SendHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueForceFeedbackLevel( + void* Instance, + int32 Finger, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueVibroLevel( + void* Instance, + void* Location, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_QueueSqueezeLevel( + void* Instance, + float SqueezeLevel01); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_DoesIndexInfluenceOthers( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_SetIndexInfluencesOthers( + void* Instance, + bool bInfluenceOthers); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SupportsOnBoardNormalization( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetSensorData( + void* Instance, + void* OutSensorData); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_GetNormalizedInput( + void* Instance, + void* OutNormalizedValues); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SendRawData( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SendNormalizedData( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ToNovaMotor( + void* Instance, + void* OutNova2Motor, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNova2GloveImpl_ChannelIndex( + void* Instance, + void* Motor); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ValidateWaveform( + void* Instance, + void* OutWaveform, + void* Motor); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveImpl_SendCustomWaveform_Nova2( + void* Instance, + void* OutWaveform, + void* Motor, + bool bValidateWaveform); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGNova2GloveSensorDataImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_Parse( + void* OutNova2GloveSensorDataImpl, + void* RawData, + void* GloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor( + void* OutNova2GloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_NormalizationState_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + void* OutNova2GloveSensorDataImpl, + void* NormalizationState, + void* Values, + const int32 ParsedValues, + void* ImuRotation, + const bool bImuParsed, + const float BatteryLevel, + const bool bCharging); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_copy( + void* OutNova2GloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_ctor_copy_assignment( + void* OutNova2GloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorState( + void* Instance, + void* OutNormalizationState); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValues( + void* Instance, + void* OutValues); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGNova2GloveSensorDataImpl_GetSensorValue( + void* Instance, + void* Finger, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNova2GloveSensorDataImpl_GetParsedValues( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveSensorDataImpl_IsImuParsed( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGNova2GloveSensorDataImpl_GetBatteryLevel( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveSensorDataImpl_IsCharging( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNova2GloveSensorDataImpl_Equals( + void* Instance, + void* Nova2GloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNova2GloveSensorDataImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGNovaGloveImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_Parse( + void* OutNovaGloveImpl, + void* ConstantsString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetNovaGloves( + void* OutGloves); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_OutGlove( + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetNovaGlove_bRightHanded_OutGlove( + bool bRightHanded, + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetHapticsByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetThresholdsByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGNovaGloveImpl_GetIgnoreThresholdsByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetNovaSensorRanges( + void* OutNovaSensorRanges); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData( + void* OutNormalizedValues, + void* SensorData); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNormalizedValues_SensorData_OutSensorNormalizer( + void* OutNormalizedValues, + void* SensorData, + void* OutSensorNormalizer); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_CalculateHandAngles( + void* OutHandAngles, + void* NormalizedValues, + void* Interpolator); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsFlexion( + void* OutString, + void* Thresholds); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommandAsRaw( + void* OutString, + void* Thresholds, + void* Interpolator); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor( + void* OutNovaGloveImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo( + void* OutNovaGloveImpl, + void* DeviceInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_DeviceInfo_MakeShared( + void* OutSharedPtr, + void* DeviceInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_copy( + void* OutNovaGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ctor_copy_assignment( + void* OutNovaGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_SetDeviceIndex( + void* Instance, + int32 Index); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_HasBattery( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_IsCharging( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetBatteryLevel( + void* Instance, + float* OutBatteryLevel); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetImuRotation( + void* Instance, + void* OutImu); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_EndCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ResetCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_StopHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_StopVibrations( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SendHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SupportsCustomWaveform( + void* Instance, + void* AtLocation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform( + void* Instance, + void* OutWaveform, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueForceFeedbackLevel( + void* Instance, + int32 Finger, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Localtion_Level01( + void* Instance, + void* Location, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetGloveLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetWristLocation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SupportsThresholds( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SupportsCustomWaveforms( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SupportsOnBoardNormalization( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetSensorData( + void* Instance, + void* OutSensorData); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_GetNormalizedInput( + void* Instance, + void* OutNormalizedValues); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNovaCommand( + void* Instance, + void* OutString, + void* ForceFeedbackLevels, + void* BuzzLevels, + float WristLevel); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueVibroLevel_Finger_Amplitude( + void* Instance, + int32 Finger, + float Amplitude); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueWristLevel( + void* Instance, + float Amplitude); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToNovaMotor( + void* Instance, + void* OutNovaMotor, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveImpl_ChannelIndex( + void* Instance, + void* Motor); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ValidateWaveform( + void* Instance, + void* OutWaveform, + void* Motor); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_SendCustomWaveform_Nova( + void* Instance, + void* OutWaveform, + void* Motor, + bool bValidateWaveform); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueThresholdCommand_Flexion( + void* Instance, + int32 Finger, + float FlexionThreshold); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveImpl_QueueClearThreshold( + void* Instance, + int32 Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGNovaGloveInfoImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveInfoImpl_Parse( + void* ConstantsString, + void* OutGloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_Deserialize( + void* OutNovaGloveInfoImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_ctor( + void* OutNovaGloveInfoImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGNovaGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_ImuCorrection_NumberOfSensors( + void* OutNovaGloveInfoImpl, + void* DeviceId, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion, + bool bRightHanded, + void* ImuCorrection, + int32 NumberOfSensors); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_ctor_copy( + void* OutNovaGloveInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_ctor_copy_assignment( + void* OutNovaGloveInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveInfoImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_GetImuCorrection( + void* Instance, + void* OutCorrection); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveInfoImpl_GetNumberOfSensors( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareNewerThan( + void* Instance, + int32 FirmwareMain, + int32 FirmwareSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveInfoImpl_FirmwareOlderThan( + void* Instance, + int32 FirmwareMain, + int32 FirmwareSub, + bool bInclusive); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveInfoImpl_Equals( + void* Instance, + void* NovaGloveInfoImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveInfoImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGNovaGloveSensorDataImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_Empty( + void* OutNovaGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_Parse( + void* OutNovaGloveSensorDataImpl, + void* RawData, + void* GloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_Deserialize( + void* OutNovaGloveSensorDataImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor( + void* OutNovaGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_Values_ParsedValues_ImuRotation_bImuParsed_BatteryLevel_bCharging( + void* OutNovaGloveSensorDataImpl, + void* Values, + int32 ParsedValues, + void* ImuRotation, + bool bImuParsed, + float BatteryLevel, + bool bCharging); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_copy( + void* OutNovaGloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_ctor_copy_assignment( + void* OutNovaGloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValues( + void* Instance, + void* OutValues); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGNovaGloveSensorDataImpl_GetSensorValue( + void* Instance, + void* Finger, + void* Location); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGNovaGloveSensorDataImpl_GetParsedValues( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveSensorDataImpl_IsImuParsed( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGNovaGloveSensorDataImpl_GetBatteryLevel( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveSensorDataImpl_IsCharging( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGNovaGloveSensorDataImpl_Equals( + void* Instance, + void* NovaGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGNovaGloveSensorDataImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGSenseComImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_RegisterExe(); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_RegisterExe_ExePath( + void* ExePath); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_GetExePath( + void* OutExePath); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_ScanningActive(); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_GetCurrentExeDirectory( + void* OutDirectory); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseComImpl_StartupSenseCom(); + +/******************************************************************************* + * SGSenseGloveImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_Parse( + void* OutSenseGloveImpl, + void* ConstantsString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetSenseGloves( + void* OutGloves); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_OutGlove( + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetSenseGlove_bRightHanded_OutGlove( + bool bRightHanded, + void* OutGlove); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateGloveLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* MountedOn, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateWristLocation( + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + bool bRightHanded, + void* MountedOn, + void* GloveWristPositionOffset, + void* GloveWristRotationOffset, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGSenseGloveImpl_GetHapticsByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API ANSICHAR SGCoreImpl_FSGSenseGloveImpl_GetThumperByte(); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetDefaultThimbleOffset( + void* OutOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_SensorData_GloveModel( + void* OutPose, + void* SensorData, + void* GloveModel); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateGlovePose_GloveAngles_GloveModel( + void* OutPose, + void* GloveAngles, + void* GloveModel); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_NormalizeValues( + void* SumAngles, + void* Normalizer, + void* OutFlexions, + void* OutAbductions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateHandAngles( + void* GlovePose, + void* Normalizer, + void* NormalizedToAngles, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_CalculateHandPose( + void* GlovePose, + void* HandModel, + void* Normalizer, + void* NormalizedToAngles, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor( + void* OutSenseGloveImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_MakeShared( + void* OutSharedPtr); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_Model( + void* OutSenseGloveImpl, + void* Model); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_Model_MakeShared( + void* OutSharedPtr, + void* Model); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_copy( + void* OutSenseGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_copy_MakeShared( + void* OutSharedPtr, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ctor_copy_assignment( + void* OutSenseGloveImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetDeviceType( + void* Instance, + void* OutType); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetImuRotation( + void* Instance, + void* OutImu); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetHandPose( + void* Instance, + void* HandGeometry, + void* OutHandPose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetHandAngles( + void* Instance, + void* OutHandAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetCalibrationState( + void* Instance, + void* OutHapticGloveCalibrationState); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_EndCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ResetCalibration( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_StopHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_StopVibrations( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_SendHaptics( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevels( + void* Instance, + void* Levels01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueForceFeedbackLevel( + void* Instance, + int32 Finger, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevels( + void* Instance, + void* Amplitudes); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Location_Level01( + void* Instance, + void* Location, + float Level01); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutGlovePosition_OutGloveRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveImpl_GetGloveLocation_ReferencePosition_ReferenceRotation_TrackingHardware_MountedOn_OutGlovePosition_OutGloveRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* MountedOn, + void* OutGlovePosition, + void* OutGloveRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_OutWristPosition_OutWristRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveImpl_GetWristLocation_ReferencePosition_ReferenceRotation_TrackingHardware_GloveWristPositionOffset_GloveWristRotationOffset_OutWristPosition_OutWristRotation( + void* Instance, + void* ReferencePosition, + void* ReferenceRotation, + void* TrackingHardware, + void* GloveWristPositionOffset, + void* GloveWristRotationOffset, + void* OutWristPosition, + void* OutWristRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetGloveInfo( + void* Instance, + void* OutGloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_GetFingerThimbleOffsets( + void* Instance, + void* OutFingerThimbleOffsets); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_SetFingerThimbleOffset( + void* Instance, + int32 Finger, + void* Offset); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_SupportsWristActuator( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetSensorData( + void* Instance, + void* OutSensorData); + + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_OutGlovePose( + void* Instance, + void* OutGlovePose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_GetGlovePose_SensorData_OutGlovePose( + void* Instance, + void* SensorData, + void* OutGlovePose); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueVibroLevel_Finger_Amplitude( + void* Instance, + int32 Finger, + float Amplitude); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveImpl_QueueThumperCommand( + void* Instance, + void* Command); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGSenseGloveInfoImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveInfoImpl_Parse( + void* ConstantsString, + void* OutGloveInfo, + bool bUpdateOldModels); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_Deserialize( + void* OutSenseGloveInfoImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ctor( + void* OutSenseGloveInfoImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveInfoImpl_ctor_DeviceId_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_NumberOfSensors_ImuCorrection_StartPositions_StartRotations_GloveLengths_Functions( + void* OutSenseGloveInfoImpl, + void* DeviceId, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion, + bool bRightHanded, + int32 NumberOfSensors, + void* ImuCorrection, + void* StartPositions, + void* StartRotations, + void* GloveLengths, + void* Functions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ctor_copy( + void* OutSenseGloveInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ctor_copy_assignment( + void* OutSenseGloveInfoImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetDeviceId( + void* Instance, + void* OutId); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetHardwareVersion( + void* Instance, + void* OutVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetSubFirmwareVersion( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveInfoImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveInfoImpl_GetNumberOfSensors( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetImuCorrection( + void* Instance, + void* OutCorrection); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPositions( + void* Instance, + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotations( + void* Instance, + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths( + void* Instance, + void* OutLengths); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetFunctions( + void* Instance, + void* OutFunctions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartPosition( + void* Instance, + void* OutPosition, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetStartRotation( + void* Instance, + void* OutRotation, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_GetGloveLengths_Finger( + void* Instance, + void* OutLengths, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ToGloveAngles( + void* Instance, + void* OutAngles, + void* SensorAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveInfoImpl_Equals( + void* Instance, + void* SenseGloveInfoImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ToString_bShortNotation( + void* Instance, + void* OutString, + bool bShortNotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveInfoImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGSenseGlovePoseImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_IdlePose( + void* OutSenseGlovePoseImpl, + void* GloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_Deserialize( + void* OutSenseGlovePoseImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_ctor( + void* OutSenseGlovePoseImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGlovePoseImpl_ctor_bRightHanded_JointPositions_JointRotations_GloveAngles( + void* OutSenseGlovePoseImpl, + bool bRightHanded, + void* JointPositions, + void* JointRotations, + void* GloveAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_ctor_copy( + void* OutSenseGlovePoseImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_ctor_copy_assignment( + void* OutSenseGlovePoseImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGlovePoseImpl_IsRight( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetJointPositions( + void* Instance, + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetJointRotations( + void* Instance, + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetGloveAngles( + void* Instance, + void* OutAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetThimblePositions( + void* Instance, + void* OutPositions); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetThimbleRotations( + void* Instance, + void* OutRotations); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_GetTotalGloveAngles( + void* Instance, + void* OutAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_CalculateFingertips( + void* Instance, + void* OutFingertips, + void* FingerOffsets); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGlovePoseImpl_Equals( + void* Instance, + void* SenseGlovePoseImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_ToString( + void* Instance, + void* OutString, + bool bShortFormat); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGlovePoseImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGSenseGloveSensorDataImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_Empty( + void* OutSenseGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_Parse( + void* OutSenseGloveSensorDataImpl, + void* RawData, + void* GloveInfo); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_Deserialize( + void* OutSenseGloveSensorDataImpl, + void* SerializedString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor( + void* OutSenseGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_SensorAngles_ImuRotation_ParsedValues_bImuParsed( + void* OutSenseGloveSensorDataImpl, + void* SensorAngles, + void* ImuRotation, + int32 ParsedValues, + bool bImuParsed); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_copy( + void* OutSenseGloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_ctor_copy_assignment( + void* OutSenseGloveSensorDataImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles( + void* Instance, + void* OutAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetSensorAngles_Finger( + void* Instance, + void* OutAngles, + void* Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetAngleSequence( + void* Instance, + void* OutSequence); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_GetImuRotation( + void* Instance, + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveSensorDataImpl_GetParsedValues( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveSensorDataImpl_IsImuParsed( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSenseGloveSensorDataImpl_Equals( + void* Instance, + void* SenseGloveSensorDataImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_ToString( + void* Instance, + void* OutString); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorDataImpl_Serialize( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGSenseGloveSensorNormalizerImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor( + void* OutSenseGloveSensorNormalizerImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_bRightHanded( + void* OutSenseGloveSensorNormalizerImpl, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_copy( + void* OutSenseGloveSensorNormalizerImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_ctor_copy_assignment( + void* OutSenseGloveSensorNormalizerImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeFlexion( + void* Instance, + int32 Finger, + float SumFlexionAngles); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGSenseGloveSensorNormalizerImpl_NormalizeAbduction( + void* Instance, + int32 Finger, + float SumAbductionAngles); + +/******************************************************************************* + * SGSenseGloveVarsImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetStandardConstantsString( + void* OutString, + void* HardwareVersion, + float FirmwareVersion, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetSensorString( + void* OutString, + void* HardwareVersion, + float FirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetStartPositions( + void* OutPositions, + void* HardwareVersion, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetStartRotations( + void* OutRotations, + void* HardwareVersion, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetGloveLengths( + void* OutLengths, + void* HardwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSenseGloveVarsImpl_GetSensors( + void* HardwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetImuCorrection( + void* OutCorrection, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSenseGloveVarsImpl_GetFunctions( + void* OutFunctions, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded +( + void* OutModel, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion, + bool bRightHanded); + +SENSEGLOVECOREIMPL_PUBLIC_API void +SGCoreImpl_FSGSenseGloveVarsImpl_GenerateGloveModel_HardwareVersion_FirmwareVersion_SubFirmwareVersion_bRightHanded_CustomId +( + void* OutModel, + void* HardwareVersion, + int32 FirmwareVersion, + int32 SubFirmwareVersion, + bool bRightHanded, + void* CustomId); + +/******************************************************************************* + * SGSensorNormalizationImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_ctor( + void* OutSensorNormalizationImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_ctor_MovementRanges( + void* OutSensorNormalizationImpl, + void* MovementRanges); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_ctor_copy( + void* OutSensorNormalizationImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_ctor_copy_assignment( + void* OutSensorNormalizationImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSensorNormalizationImpl_CollectsNormalization( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_SetCollectNormalization( + void* Instance, + bool bCollectNormalization); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSensorNormalizationImpl_GetLength( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API int32 SGCoreImpl_FSGSensorNormalizationImpl_GetMoveCount( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSensorNormalizationImpl_AllSensorsMoving( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_ResetNormalization( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_UpdateNormalization( + void* Instance, + float Value, + int32 Index); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValue( + void* Instance, + float Value, + int32 Index); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGSensorNormalizationImpl_NormalizeValues( + void* Instance, + void* Values, + void* OutNormalizedValues); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGSensorNormalizationImpl_MovedEnough( + void* Instance, + int32 Index); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGSensorNormalizationImpl_Denormalize( + void* Instance, + float Value01, + int32 Index, + float FallbackValue); + +/******************************************************************************* + * SGThresholdCommandImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ctor( + void* OutThresholdCommandImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ctor_AffectedFingers_ThresholdValues( + void* OutThresholdCommandImpl, + void* AffectedFingers, + void* ThresholdValues); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ctor_copy( + void* OutThresholdCommandImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ctor_copy_assignment( + void* OutThresholdCommandImpl, + void* Rhs); + +SENSEGLOVECOREIMPL_PUBLIC_API float SGCoreImpl_FSGThresholdCommandImpl_GetThreshold( + void* Instance, + int32 Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_SetThreshold( + void* Instance, + int32 Finger, + float ThresholdValue); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_GetThresholds( + void* Instance, + void* OutThresholds); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_SetThresholds( + void* Instance, + void* AffectedFingers, + void* ThresholdValues); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGThresholdCommandImpl_GetFingerActive( + void* Instance, + int32 Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_GetActiveFingers( + void* Instance, + void* OutActiveFingers); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ClearThreshold( + void* Instance, + int32 Finger); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ClearThresholds( + void* Instance); + +SENSEGLOVECOREIMPL_PUBLIC_API bool SGCoreImpl_FSGThresholdCommandImpl_Equals( + void* Instance, + void* ThresholdCommandImpl); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGThresholdCommandImpl_ToString( + void* Instance, + void* OutString); + +/******************************************************************************* + * SGTrackingImpl.h + ******************************************************************************/ + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_CalculateLocation( + void* TrackedPosition, + void* TrackedRotation, + void* PositionOffset, + void* RotationOffset, + void* OutNewPosition, + void* OutNewRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGlovePositionOrigin( + void* OutOrigin); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveFingerToGloveRotationOrigin( + void* OutOrigin); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristPositionOffset( + void* OutOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveWristRotationOffset( + void* OutOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveMountOffset( + bool bRightHanded, + void* ToFinger, + void* OutIPosition, + void* OutIRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveTrackerMountOffset( + void* Hardware, + bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveViveToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetSenseGloveOculusTouchToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNovaToWristPositionOffset( + void* OutOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNovaToWristRotationOffset( + void* OutOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaPico2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaPico2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuestProToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuestProToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaViveFocus3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaViveFocus3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNovaQuest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNovaQuest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNovaGloveWristOffset( + bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNovaGloveTrackerOffset( + void* Hardware, + bool bRightHanded, + void* OutPositionOffset, + void* OutRotationOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristPositionOffset( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ToWristRotationOffset( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristPositionOffset( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ToWristRotationOffset( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest2ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2QuestProToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2QuestProToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveTrackerToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveTrackerToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2ViveWristTrackerToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2ViveWristTrackerToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetRightNova2Quest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachPosition( + void* OutPosition); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetLeftNova2Quest3ToAttachRotation( + void* OutRotation); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNova2GloveWristOffset( + bool bRightHanded, + void* HardwareVersion, + void* OutPositionOffset, + void* OutRotationOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_GetNova2GloveTrackerOffset( + void* Hardware, + bool bRightHanded, + void* HardwareVersion, + void* OutPositionOffset, + void* OutRotationOffset); + +SENSEGLOVECOREIMPL_PUBLIC_API void SGCoreImpl_FSGTrackingImpl_ToString( + void* OutString, + void* Hardware); + +/******************************************************************************* + ******************************************************************************/ + +#if __cplusplus +} +#endif /* __cplusplus */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandInterpolatorImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandInterpolatorImpl.h new file mode 100644 index 0000000..f8bb5ac --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandInterpolatorImpl.h @@ -0,0 +1,134 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +class FSGInterpolationSetImpl; + +namespace SGCore +{ + namespace Kinematics + { + class HandInterpolator; + } +} + +class SENSEGLOVECOREIMPL_API FSGHandInterpolatorImpl final +{ +public: + typedef SGCore::Kinematics::HandInterpolator FHandInterpolatorType; + +public: + static FSGHandInterpolatorImpl Deserialize(const FString& SerializedString, bool bRightHanded = true); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGHandInterpolatorImpl(); + + explicit FSGHandInterpolatorImpl(bool bRightHanded); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGHandInterpolatorImpl(const FHandInterpolatorType& HandInterpolator); + +public: + /** + * The copy constructor. + */ + FSGHandInterpolatorImpl(const FSGHandInterpolatorImpl& Rhs); + + /** + * The move constructor. + */ + FSGHandInterpolatorImpl(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGHandInterpolatorImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGHandInterpolatorImpl& operator=(const FSGHandInterpolatorImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGHandInterpolatorImpl& operator=(FSGHandInterpolatorImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FHandInterpolatorType& ToHandInterpolator() const; + +public: + float CalculateAngle(ESGFingerMovement Movement, float Value, bool bApplyLimits = true) const; + + float CalculateAngle(ESGThumbMovement Movement, float Value, bool bApplyLimits = true) const; + +public: + TArray> InterpolateHandAngles( + const TArray>& Flexions, const TArray& Abductions, float CmcTwist); + +public: + bool Equals(const FSGHandInterpolatorImpl& HandInterpolatorImpl) const; + +public: + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h new file mode 100644 index 0000000..20f6782 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandLayerImpl.h @@ -0,0 +1,121 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Templates/SharedPointer.h" + +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class HandLayer; +} + +class FSGCustomWaveformImpl; +class FSGHandPoseImpl; +class FSGHapticGloveImpl; + +class SENSEGLOVECOREIMPL_API FSGHandLayerImpl final +{ +public: + typedef SGCore::HandLayer FHandLayerType; + +public: + static bool DeviceConnected(bool bRightHanded); + + static ESGDeviceType GetDeviceType(bool bRightHanded); + + static bool GetFirstGloveHandedness(); + + static int32 GlovesConnected(); + + static bool GetGloveInstance(bool bRightHanded, TSharedPtr& OutGlove); + + static ESGHapticGloveCalibrationState GetCalibrationState(bool bRightHanded); + + static FString GetCalibrationInstructions(bool bRightHanded); + + static void ResetCalibration(bool bRightHanded); + + static void EndCalibration(bool bRightHanded); + + static bool GetHandPose(bool bRightHanded, FSGHandPoseImpl& OutHandPose); + + static void GetWristLocation( + bool bRightHanded, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + static void StopAllHaptics(bool bRightHanded); + + static bool SendHaptics(bool bRightHanded); + + static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); + + static bool SendCustomWaveform(bool bRightHanded, FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location); + + static bool QueueCommand_ForceFeedbackLevels( + bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + static bool QueueCommand_VibroLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + static bool QueueCommand_VibroLevel( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); + + static bool SupportsWristSqueeze(bool bRightHanded); + + static bool QueueCommand_WristSqueeze(bool bRightHanded, float SqueezeLevel01, bool bSendImmediate); + + static bool SupportsFlexionLocks(bool bRightHanded); + + static bool QueueCommand_FlexionLock(bool bRightHanded, int32 Finger, float Flexion01, bool bSendImmediate); + + static bool QueueCommand_ClearFlexionLock(bool bRightHanded, int32 Finger, bool bSendImmediate); + +public: + FSGHandLayerImpl() = delete; + virtual ~FSGHandLayerImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandPoseImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandPoseImpl.h new file mode 100644 index 0000000..ed952b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHandPoseImpl.h @@ -0,0 +1,160 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +class FSGHandInterpolatorImpl; + +namespace SGCore +{ + class HandPose; +} + +class FSGBasicHandModelImpl; + +class SENSEGLOVECOREIMPL_API FSGHandPoseImpl final +{ +public: + typedef SGCore::HandPose FHandPoseType; + +public: + static FSGHandPoseImpl Deserialize(const FString& SerializedString); + + static FSGHandPoseImpl FromHandAngles(const TArray>& HandAngles, bool bRightHanded, + const FSGBasicHandModelImpl& HandDimensions); + + static FSGHandPoseImpl FromHandAngles(const TArray>& HandAngles, bool bRightHanded); + + static FSGHandPoseImpl DefaultIdle(bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions); + + static FSGHandPoseImpl DefaultIdle(bool bRightHanded); + + static FSGHandPoseImpl FlatHand(bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions); + + static FSGHandPoseImpl FlatHand(bool bRightHanded); + + static FSGHandPoseImpl ThumbsUp(bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions); + + static FSGHandPoseImpl ThumbsUp(bool bRightHanded); + + static FSGHandPoseImpl Fist(bool bRightHanded, const FSGBasicHandModelImpl& HandDimensions); + + static FSGHandPoseImpl Fist(bool bRightHanded); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGHandPoseImpl(); + + FSGHandPoseImpl(bool bRightHanded, const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& HandAngles); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGHandPoseImpl(const FHandPoseType& SenseGloveHandPose); + +public: + /** + * The copy constructor. + */ + FSGHandPoseImpl(const FSGHandPoseImpl& Rhs); + + /** + * The move constructor. + */ + FSGHandPoseImpl(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGHandPoseImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGHandPoseImpl& operator=(const FSGHandPoseImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGHandPoseImpl& operator=(FSGHandPoseImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FHandPoseType& ToHandPose() const; + +public: + bool IsRight() const; + + TArray> GetJointPositions() const; + + TArray> GetJointRotations() const; + + TArray> GetHandAngles() const; + +public: + bool Equals(const FSGHandPoseImpl& HandPoseImpl) const; + + float GetNormalizedFlexion(ESGFinger Finger, bool bClamp01 = true) const; + + TArray GetNormalizedFlexion(bool bClamp01 = true) const; + +public: + FString ToString(bool bShortFormat = false) const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticChannelInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticChannelInfoImpl.h new file mode 100644 index 0000000..5578199 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticChannelInfoImpl.h @@ -0,0 +1,133 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class HapticChannelInfo; +} + +class SENSEGLOVECOREIMPL_API FSGHapticChannelInfoImpl final +{ +public: + typedef SGCore::HapticChannelInfo FHapticChannelInfoType; + +public: + static FString GenerateAddress(int32 DeviceIndex, int32 ChannelIndex); + + static FSGHapticChannelInfoImpl Parse(const FString& IpcString); + +public: + static int32 GetStreamingType(); + static int32 GetFireAndForgetType(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGHapticChannelInfoImpl(); + + FSGHapticChannelInfoImpl(const TArray& StreamIndex, const TArray& FireAndForgetIndex); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGHapticChannelInfoImpl(const FHapticChannelInfoType& HapticChannelInfo); + +public: + /** + * The copy constructor. + */ + FSGHapticChannelInfoImpl(const FSGHapticChannelInfoImpl& Rhs); + + /** + * The move constructor. + */ + FSGHapticChannelInfoImpl(FSGHapticChannelInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGHapticChannelInfoImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGHapticChannelInfoImpl& operator=(const FSGHapticChannelInfoImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGHapticChannelInfoImpl& operator=(FSGHapticChannelInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FHapticChannelInfoType& ToHapticChannelInfo() const; + +public: + int32 GetStreamChannelCount() const; + int32 GetFireAndForgetChannelCount() const; + int32 GetTotalChannelCount() const; + + FString GetAddress_Unguarded(ESGHapticChannelType Type, int32 TypeIndex) const; + + void GetIpcParams_Unguarded(ESGHapticChannelType Type, int32 TypeIndex, + int32& OutIndex, FString& OutAddressString) const; + + void RegenerateAddresses(int32 ForDeviceIndex); + + TArray GetAllAddresses() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h new file mode 100644 index 0000000..cfdb3d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGHapticGloveImpl.h @@ -0,0 +1,209 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "Containers/Array.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGCoreImpl/SGDeviceImpl.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class HapticGlove; +} + +class FSGBasicHandModelImpl; +class FSGCustomWaveformImpl; +class FSGHandPoseImpl; + +class SENSEGLOVECOREIMPL_API FSGHapticGloveImpl : public FSGDeviceImpl +{ +#if ENGINE_MAJOR_VERSION >= 5 + friend class SharedPointerInternals::TIntrusiveReferenceController; +#else + friend class SharedPointerInternals::TIntrusiveReferenceController; +#endif /* ENGINE_MAJOR_VERSION >= 5 */ + +public: + typedef SGCore::HapticGlove FHapticGloveType; + +public: + typedef std::shared_ptr FHapticGlovePtrType; + typedef std::vector FHapticGlovePtrVectorType; + +public: + static TArray> GetHapticGloves(bool bConnectedOnly = true); + + static bool GetGlove(TSharedPtr& OutGlove); + + static bool GetGlove(bool bRightHanded, TSharedPtr& OutGlove); + +public: + static FString ToString(ESGHapticGloveCalibrationState State); + + static FString ToString(ESGHapticLocation Location); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGHapticGloveImpl(); + +public: + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGHapticGloveImpl(const FHapticGlovePtrType HapticGlove); + +public: + /** + * The copy constructor. + */ + FSGHapticGloveImpl(const FSGHapticGloveImpl& Rhs); + + /** + * The move constructor. + */ + FSGHapticGloveImpl(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGHapticGloveImpl() override; + +public: + /** + * The copy assignment operator. + */ + FSGHapticGloveImpl& operator=(const FSGHapticGloveImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGHapticGloveImpl& operator=(FSGHapticGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying pointer type method. + */ + FHapticGlovePtrType ToHapticGlovePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FHapticGlovePtrType ToHapticGlovePtrChecked() const; + +public: + virtual ESGDeviceType GetDeviceType() const override; + virtual FString GetDeviceId() const override; + + virtual FString GetHardwareVersion() const override; + virtual int32 GetFirmwareVersion() const override; + virtual int32 GetSubFirmwareVersion() const override; + +public: + virtual bool IsRight() const; + + virtual bool GetImuRotation(FQuat& OutImu); + + virtual bool GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const; + + virtual bool GetHandPose(FSGHandPoseImpl& OutHandPose); + + virtual bool GetHandAngles(TArray>& OutHandAngles) const; + + FSGBasicHandModelImpl GetHandGeometry() const; + void SetHandGeometry(const FSGBasicHandModelImpl& HandGeometry); + +public: + virtual ESGHapticGloveCalibrationState GetCalibrationState() const; + + virtual void EndCalibration(); + + virtual void ResetCalibration(); + + virtual FString GetCalibrationInstruction() const; + +public: + virtual void StopHaptics(); + + virtual void StopVibrations(); + + virtual bool SendHaptics(); + +public: + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const; + + virtual bool SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location); + + virtual bool QueueForceFeedbackLevels(const TArray& Levels01); + + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01); + + virtual bool QueueVibroLevels(const TArray& Levels01); + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01); + +public: + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const; + + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const; + +public: + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGInterpolationSetImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGInterpolationSetImpl.h new file mode 100644 index 0000000..7cdc515 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGInterpolationSetImpl.h @@ -0,0 +1,154 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace Kinematics + { + class InterpolationSet; + } +} + +class SENSEGLOVECOREIMPL_API FSGInterpolationSetImpl final +{ +public: + typedef SGCore::Kinematics::InterpolationSet FInterpolationSetType; + +public: + static FSGInterpolationSetImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGInterpolationSetImpl(); + + FSGInterpolationSetImpl(float From1, float From2, float To1, float To2); + + FSGInterpolationSetImpl(float From1, float From2, float To1, float To2, float Min, float Max); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGInterpolationSetImpl(const FInterpolationSetType& InterpolationSet); + +public: + /** + * The copy constructor. + */ + FSGInterpolationSetImpl(const FSGInterpolationSetImpl& Rhs); + + /** + * The move constructor. + */ + FSGInterpolationSetImpl(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGInterpolationSetImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGInterpolationSetImpl& operator=(const FSGInterpolationSetImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGInterpolationSetImpl& operator=(FSGInterpolationSetImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FInterpolationSetType& ToInterpolationSet() const; + +public: + float GetX0() const; + + void SetX0(float X0); + + float GetX1() const; + + void SetX1(float X1); + + float GetY0() const; + + void SetY0(float Y0); + + float GetY1() const; + + void SetY1(float Y1); + + float GetMin() const; + + void SetMin(float Min); + + float GetMax() const; + + void SetMax(float Max); + +public: + float Get(float Value, bool bLimit, bool bNormalizeAngle = false) const; + +public: + bool Equals(const FSGInterpolationSetImpl& InterpolationSetImpl) const; + +public: + FString ToString() const; + + FString ToString(bool bLimits) const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGJointKinematicsImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGJointKinematicsImpl.h new file mode 100644 index 0000000..5cc08b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGJointKinematicsImpl.h @@ -0,0 +1,71 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGTypes/SGCoreTypes.h" + +class FSGBasicHandModelImpl; + +namespace SGCore +{ + namespace Kinematics + { + class JointKinematics; + } +} + +class SENSEGLOVECOREIMPL_API FSGJointKinematicsImpl final +{ +public: + typedef SGCore::Kinematics::JointKinematics FJointKinematicsType; + +public: + static bool ForwardKinematics(const FVector& StartPosition, const FQuat& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + static bool ForwardKinematics( + const FSGBasicHandModelImpl& Profile, ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + +public: + FSGJointKinematicsImpl() = delete; + virtual ~FSGJointKinematicsImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGLibraryImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGLibraryImpl.h new file mode 100644 index 0000000..7069b68 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGLibraryImpl.h @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + class Library; +} + +class SENSEGLOVECOREIMPL_API FSGLibraryImpl final +{ +public: + typedef SGCore::Library FLibraryType; + +public: + static FString Version(); + + static ESGBackendType GetBackendType(); + + static FString BackendVersion(); + + static FString SGConnectVersion(); + +public: + FSGLibraryImpl() = delete; + virtual ~FSGLibraryImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h new file mode 100644 index 0000000..67de420 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveImpl.h @@ -0,0 +1,288 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" + +namespace SGCore +{ + namespace Nova + { + class Nova2Glove; + } +} + +class FSGBasicHandModelImpl; +class FSGHandInterpolatorImpl; +class FSGHandPoseImpl; +class FSGNova2GloveHandProfileImpl; +class FSGNova2GloveSensorDataImpl; +class FSGNovaGloveInfoImpl; +class FSGSensorNormalizationImpl; + +class SENSEGLOVECOREIMPL_API FSGNova2GloveImpl final : public FSGHapticGloveImpl +{ +#if ENGINE_MAJOR_VERSION >= 5 + friend class SharedPointerInternals::TIntrusiveReferenceController; +#else + friend class SharedPointerInternals::TIntrusiveReferenceController; +#endif /* ENGINE_MAJOR_VERSION >= 5 */ + +public: + typedef SGCore::Nova::Nova2Glove FNova2GloveType; + + typedef std::vector FNova2GloveVectorType; + + typedef std::shared_ptr FNova2GlovePtrType; + typedef std::vector FNova2GlovePtrVectorType; + +public: + static TSharedRef Parse(const FString& ConstantsString); + + static TArray GetNova2Gloves(); + + static bool GetNova2Glove(FSGNova2GloveImpl& OutGlove); + + static bool GetNova2Glove(bool bRightHanded, FSGNova2GloveImpl& OutGlove); + +public: + static void CalculateGloveLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + static void CalculateWristLocation( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation); + +public: + static ANSICHAR GetStreamByte(); + + static const TArray& GetNova2SensorRanges(); + +public: + static TArray ToNormalizedValues(const FSGNova2GloveSensorDataImpl& SensorData); + + static TArray ToNormalizedValues( + const FSGNova2GloveSensorDataImpl& SensorData, FSGSensorNormalizationImpl& OutSensorNormalizer); + +public: + static TArray> CalculateHandAngles( + const TArray& NormalizedValues, const FSGHandInterpolatorImpl& Interpolator, bool bInfluenceIndex); + + static TArray> ToNormalizedAngles( + const TArray& NormalizedData, const FSGNovaGloveInfoImpl& GloveInfo); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGNova2GloveImpl(); + + explicit FSGNova2GloveImpl(const FSGNovaGloveInfoImpl& DeviceInfo); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGNova2GloveImpl(const FNova2GloveType Nova2Glove); + + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGNova2GloveImpl(const FNova2GlovePtrType Nova2Glove); + +public: + /** + * The copy constructor. + */ + FSGNova2GloveImpl(const FSGNova2GloveImpl& Rhs); + + /** + * The move constructor. + */ + FSGNova2GloveImpl(FSGNova2GloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGNova2GloveImpl() override; + +public: + /** + * The copy assignment operator. + */ + FSGNova2GloveImpl& operator=(const FSGNova2GloveImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGNova2GloveImpl& operator=(FSGNova2GloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FNova2GloveType& ToNova2Glove() const; + + /** + * The cast to underlying pointer type method. + */ + FNova2GlovePtrType ToNova2GlovePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FNova2GlovePtrType ToNova2GlovePtrChecked() const; + +public: + virtual ESGDeviceType GetDeviceType() const override; + + virtual FString GetDeviceId() const override; + + virtual FString GetHardwareVersion() const override; + + virtual int32 GetFirmwareVersion() const override; + + virtual int32 GetSubFirmwareVersion() const override; + +public: + virtual bool HasBattery() const override; + + virtual bool IsCharging() override; + + virtual bool GetBatteryLevel(float& OutBatteryLevel) override; + +public: + virtual bool IsRight() const override; + + virtual bool GetImuRotation(FQuat& OutImu) override; + + virtual bool GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const override; + + virtual bool GetHandAngles(TArray>& OutHandAngles) const override; + +public: + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + virtual void EndCalibration() override; + + virtual void ResetCalibration() override; + +public: + virtual void StopHaptics() override; + + virtual void StopVibrations() override; + + virtual bool SendHaptics() override; + +public: + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const override; + + virtual bool SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location) override; + +public: + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + + virtual bool QueueSqueezeLevel(float SqueezeLevel01); + +public: + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + +public: + FSGNovaGloveInfoImpl GetGloveInfo() const; + + bool DoesIndexInfluenceOthers() const; + + void SetIndexInfluencesOthers(bool bInfluenceOthers); + + bool SupportsOnBoardNormalization() const; + +public: + bool GetSensorData(FSGNova2GloveSensorDataImpl& OutSensorData) const; + + bool GetNormalizedInput(TArray& OutNormalizedValues) const; + + virtual bool SendRawData(); + + virtual bool SendNormalizedData(); + +public: + virtual ESGNova2VibroMotor ToNovaMotor(ESGHapticLocation Location) const; + + virtual int32 ChannelIndex(ESGNova2VibroMotor Motor) const; + + virtual void ValidateWaveform(FSGCustomWaveformImpl& OutWaveform, ESGNova2VibroMotor Motor) const; + + virtual bool SendCustomWaveform_Nova2(FSGCustomWaveformImpl& OutWaveform, ESGNova2VibroMotor Motor, + bool bValidateWaveform = true); + +public: + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveSensorDataImpl.h new file mode 100644 index 0000000..777777b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNova2GloveSensorDataImpl.h @@ -0,0 +1,143 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace Nova + { + class Nova2GloveSensorData; + } +} + +class FSGNovaGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGNova2GloveSensorDataImpl final +{ +public: + typedef SGCore::Nova::Nova2GloveSensorData FNova2GloveSensorDataType; + +public: + static FSGNova2GloveSensorDataImpl Parse(const FString& RawData, const FSGNovaGloveInfoImpl& GloveInfo); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGNova2GloveSensorDataImpl(); + + FSGNova2GloveSensorDataImpl(const ESGNormalizationState NormalizationState, + const TArray>& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGNova2GloveSensorDataImpl(const FNova2GloveSensorDataType& Nova2GloveSensorData); + +public: + /** + * The copy constructor. + */ + FSGNova2GloveSensorDataImpl(const FSGNova2GloveSensorDataImpl& Rhs); + + /** + * The move constructor. + */ + FSGNova2GloveSensorDataImpl(FSGNova2GloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGNova2GloveSensorDataImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGNova2GloveSensorDataImpl& operator=(const FSGNova2GloveSensorDataImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGNova2GloveSensorDataImpl& operator=(FSGNova2GloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FNova2GloveSensorDataType& ToNova2GloveSensorData() const; + +public: + ESGNormalizationState GetSensorState() const; + + TArray> GetSensorValues() const; + float GetSensorValue(ESGFinger Finger, ESGNova2SensorLocation Location) const; + + int32 GetParsedValues() const; + + FQuat GetImuRotation() const; + + bool IsImuParsed() const; + +public: + float GetBatteryLevel() const; + + bool IsCharging() const; + +public: + bool Equals(const FSGNova2GloveSensorDataImpl& Nova2GloveSensorDataImpl) const; + +public: + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h new file mode 100644 index 0000000..ef2360b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveImpl.h @@ -0,0 +1,305 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" + +namespace SGCore +{ + namespace Nova + { + class NovaGlove; + } +} + +class FSGBasicHandModelImpl; +class FSGHandInterpolatorImpl; +class FSGHandPoseImpl; +class FSGNovaGloveHandProfileImpl; +class FSGNovaGloveInfoImpl; +class FSGNovaGloveSensorDataImpl; +class FSGSensorNormalizationImpl; +class FSGThresholdCommandImpl; + +class SENSEGLOVECOREIMPL_API FSGNovaGloveImpl final : public FSGHapticGloveImpl +{ +#if ENGINE_MAJOR_VERSION >= 5 + friend class SharedPointerInternals::TIntrusiveReferenceController; +#else + friend class SharedPointerInternals::TIntrusiveReferenceController; +#endif /* ENGINE_MAJOR_VERSION >= 5 */ + +public: + typedef SGCore::Nova::NovaGlove FNovaGloveType; + + typedef std::vector FNovaGloveVectorType; + + typedef std::shared_ptr FNovaGlovePtrType; + typedef std::vector FNovaGlovePtrVectorType; + +public: + static TSharedRef Parse(const FString& ConstantsString); + + static TArray GetNovaGloves(); + + static bool GetNovaGlove(FSGNovaGloveImpl& OutGlove); + + static bool GetNovaGlove(bool bRightHanded, FSGNovaGloveImpl& OutGlove); + +public: + static void CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + static void CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation); + +public: + static ANSICHAR GetHapticsByte(); + + static ANSICHAR GetThresholdsByte(); + + static ANSICHAR GetIgnoreThresholdsByte(); + + static const TArray& GetNovaSensorRanges(); + +public: + static TArray ToNormalizedValues(const FSGNovaGloveSensorDataImpl& SensorData); + + static TArray ToNormalizedValues( + const FSGNovaGloveSensorDataImpl& SensorData, FSGSensorNormalizationImpl& OutSensorNormalizer); + +public: + static TArray> CalculateHandAngles( + const TArray& NormalizedValues, const FSGHandInterpolatorImpl& Interpolator); + +public: + static FString ToNovaCommandAsFlexion(const FSGThresholdCommandImpl& Thresholds); + + static FString ToNovaCommandAsRaw( + const FSGThresholdCommandImpl& Thresholds, const FSGSensorNormalizationImpl& Interpolator); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGNovaGloveImpl(); + + explicit FSGNovaGloveImpl(const FSGNovaGloveInfoImpl& DeviceInfo); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGNovaGloveImpl(const FNovaGloveType NovaGlove); + + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGNovaGloveImpl(const FNovaGlovePtrType NovaGlove); + +public: + /** + * The copy constructor. + */ + FSGNovaGloveImpl(const FSGNovaGloveImpl& Rhs); + + /** + * The move constructor. + */ + FSGNovaGloveImpl(FSGNovaGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGNovaGloveImpl() override; + +public: + /** + * The copy assignment operator. + */ + FSGNovaGloveImpl& operator=(const FSGNovaGloveImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGNovaGloveImpl& operator=(FSGNovaGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FNovaGloveType& ToNovaGlove() const; + + /** + * The cast to underlying pointer type method. + */ + FNovaGlovePtrType ToNovaGlovePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FNovaGlovePtrType ToNovaGlovePtrChecked() const; + +public: + virtual ESGDeviceType GetDeviceType() const override; + + virtual FString GetDeviceId() const override; + + virtual FString GetHardwareVersion() const override; + + virtual int32 GetFirmwareVersion() const override; + + virtual int32 GetSubFirmwareVersion() const override; + +public: + virtual void SetDeviceIndex(int32 NewIndex) override; + +public: + virtual bool HasBattery() const override; + + virtual bool IsCharging() override; + + virtual bool GetBatteryLevel(float& OutBatteryLevel) override; + +public: + virtual bool IsRight() const override; + + virtual bool GetImuRotation(FQuat& OutImu) override; + + virtual bool GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const override; + + virtual bool GetHandAngles(TArray>& OutHandAngles) const override; + +public: + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + virtual void EndCalibration() override; + + virtual void ResetCalibration() override; + +public: + virtual void StopHaptics() override; + + virtual void StopVibrations() override; + + virtual bool SendHaptics() override; + +public: + virtual bool SupportsCustomWaveform(ESGHapticLocation AtLocation) const override; + + virtual bool SendCustomWaveform(FSGCustomWaveformImpl& OutWaveform, ESGHapticLocation Location) override; + +public: + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + +public: + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + +public: + FSGNovaGloveInfoImpl GetGloveInfo() const; + + bool SupportsThresholds() const; + + bool SupportsCustomWaveforms() const; + + bool SupportsOnBoardNormalization() const; + +public: + bool GetSensorData(FSGNovaGloveSensorDataImpl& OutSensorData) const; + + bool GetNormalizedInput(TArray& OutNormalizedValues) const; + +public: + virtual FString ToNovaCommand( + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel) const; + + virtual bool QueueVibroLevel(int32 Finger, float Amplitude); + + virtual bool QueueWristLevel(float Amplitude); + +public: + virtual ESGNovaVibroMotor ToNovaMotor(ESGHapticLocation Location) const; + + virtual int32 ChannelIndex(ESGNovaVibroMotor Motor) const; + + virtual void ValidateWaveform(FSGCustomWaveformImpl& OutWaveform, ESGNovaVibroMotor Motor) const; + + virtual bool SendCustomWaveform_Nova(FSGCustomWaveformImpl& OutWaveform, ESGNovaVibroMotor Motor, + bool bValidateWaveform = true); + +public: + bool QueueThresholdCommand_Flexion(int32 Finger, float FlexionThreshold); + + virtual bool QueueClearThreshold(int32 Finger); + +public: + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveInfoImpl.h new file mode 100644 index 0000000..87ab71d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveInfoImpl.h @@ -0,0 +1,146 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace Nova + { + class NovaGloveInfo; + } +} + +class SENSEGLOVECOREIMPL_API FSGNovaGloveInfoImpl final +{ +public: + typedef SGCore::Nova::NovaGloveInfo FNovaGloveInfoType; + +public: + static bool Parse(const FString& ConstantsString, FSGNovaGloveInfoImpl& OutGloveInfo); + + static FSGNovaGloveInfoImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGNovaGloveInfoImpl(); + + FSGNovaGloveInfoImpl(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, const FQuat& ImuCorrection, int32 NumberOfSensors); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGNovaGloveInfoImpl(const FNovaGloveInfoType& GloveInfo); + +public: + /** + * The copy constructor. + */ + FSGNovaGloveInfoImpl(const FSGNovaGloveInfoImpl& Rhs); + + /** + * The move constructor. + */ + FSGNovaGloveInfoImpl(FSGNovaGloveInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGNovaGloveInfoImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGNovaGloveInfoImpl& operator=(const FSGNovaGloveInfoImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGNovaGloveInfoImpl& operator=(FSGNovaGloveInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FNovaGloveInfoType& ToNovaGloveInfo() const; + +public: + FString GetDeviceId() const; + + FString GetHardwareVersion() const; + + int32 GetFirmwareVersion() const; + + int32 GetSubFirmwareVersion() const; + + bool IsRight() const; + + FQuat GetImuCorrection() const; + + int32 GetNumberOfSensors() const; + +public: + bool FirmwareNewerThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + bool FirmwareOlderThan(int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + +public: + bool Equals(const FSGNovaGloveInfoImpl& SGNovaGloveInfo) const; + +public: + FString ToString() const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveSensorDataImpl.h new file mode 100644 index 0000000..b6901b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGNovaGloveSensorDataImpl.h @@ -0,0 +1,149 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace Nova + { + class NovaGloveSensorData; + } +} + +class FSGNovaGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGNovaGloveSensorDataImpl final +{ +public: + typedef SGCore::Nova::NovaGloveSensorData FNovaGloveSensorDataType; + +public: + static const FSGNovaGloveSensorDataImpl& Empty(); + + static FSGNovaGloveSensorDataImpl Parse(const FString& RawData, const FSGNovaGloveInfoImpl& GloveInfo); + + static FSGNovaGloveSensorDataImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGNovaGloveSensorDataImpl(); + + FSGNovaGloveSensorDataImpl(const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGNovaGloveSensorDataImpl(const FNovaGloveSensorDataType& NovaGloveSensorData); + +public: + /** + * The copy constructor. + */ + FSGNovaGloveSensorDataImpl(const FSGNovaGloveSensorDataImpl& Rhs); + + /** + * The move constructor. + */ + FSGNovaGloveSensorDataImpl(FSGNovaGloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGNovaGloveSensorDataImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGNovaGloveSensorDataImpl& operator=(const FSGNovaGloveSensorDataImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGNovaGloveSensorDataImpl& operator=(FSGNovaGloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FNovaGloveSensorDataType& ToNovaGloveSensorData() const; + +public: + ESGNormalizationState GetSensorState() const; + + TArray GetSensorValues() const; + float GetSensorValue(ESGFinger Finger, ESGNovaSensorLocation Location) const; + + int32 GetParsedValues() const; + +public: + FQuat GetImuRotation() const; + + bool IsImuParsed() const; + +public: + float GetBatteryLevel() const; + + bool IsCharging() const; + +public: + bool Equals(const FSGNovaGloveSensorDataImpl& NovaGloveSensorDataImpl) const; + +public: + FString ToString() const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseComImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseComImpl.h new file mode 100644 index 0000000..499fdb7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseComImpl.h @@ -0,0 +1,66 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +namespace SGCore +{ + class SenseCom; +} + +class SENSEGLOVECOREIMPL_API FSGSenseComImpl final +{ +public: + typedef SGCore::SenseCom FSenseComType; + +public: + static bool RegisterExe(); + + static bool RegisterExe(const FString& ExePath); + + static bool GetExePath(FString& OutExePath); + + static bool ScanningActive(); + + static bool GetCurrentExeDirectory(FString& OutDirectory); + + static bool StartupSenseCom(); + +public: + FSGSenseComImpl() = delete; + virtual ~FSGSenseComImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h new file mode 100644 index 0000000..7587412 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveImpl.h @@ -0,0 +1,290 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "Math/Quat.h" +#include "Math/Vector.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/SharedPointer.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGCoreImpl/SGHapticGloveImpl.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace SG + { + class SenseGlove; + } +} + +class FSGBasicHandModelImpl; +class FSGHandInterpolatorImpl; +class FSGHandPoseImpl; +class FSGSenseGloveHandProfileImpl; +class FSGSenseGloveInfoImpl; +class FSGSenseGlovePoseImpl; +class FSGSenseGloveSensorDataImpl; +class FSGSenseGloveSensorNormalizerImpl; + +class SENSEGLOVECOREIMPL_API FSGSenseGloveImpl final : public FSGHapticGloveImpl +{ +#if ENGINE_MAJOR_VERSION >= 5 + friend class SharedPointerInternals::TIntrusiveReferenceController; +#else + friend class SharedPointerInternals::TIntrusiveReferenceController; +#endif /* ENGINE_MAJOR_VERSION >= 5 */ + +public: + typedef SGCore::SG::SenseGlove FSenseGloveType; + + typedef std::vector FSenseGloveVectorType; + + typedef std::shared_ptr FSenseGlovePtrType; + typedef std::vector FSenseGlovePtrVectorType; + +public: + static TSharedRef Parse(const FString& ConstantsString); + + static TArray GetSenseGloves(); + + static bool GetSenseGlove(FSGSenseGloveImpl& OutGlove); + + static bool GetSenseGlove(bool bRightHanded, FSGSenseGloveImpl& OutGlove); + +public: + static void CalculateGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + static void CalculateWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + bool bRightHanded, ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation); + +public: + static ANSICHAR GetHapticsByte(); + + static ANSICHAR GetThumperByte(); + + static const FVector& GetDefaultThimbleOffset(); + +public: + static FSGSenseGlovePoseImpl CalculateGlovePose(const FSGSenseGloveSensorDataImpl& SensorData, + const FSGSenseGloveInfoImpl& GloveModel); + + static FSGSenseGlovePoseImpl CalculateGlovePose(const TArray>& GloveAngles, + const FSGSenseGloveInfoImpl& GloveModel); + + static void NormalizeValues(const TArray& SumAngles, + const FSGSenseGloveSensorNormalizerImpl& Normalizer, + TArray& OutFlexions, TArray& OutAbductions); + +public: + static void CalculateHandAngles( + const FSGSenseGlovePoseImpl& GlovePose, const FSGSenseGloveSensorNormalizerImpl& Normalizer, + const FSGHandInterpolatorImpl& NormalizedToAngles, + TArray>& OutHandAngles); + + static void CalculateHandPose(const FSGSenseGlovePoseImpl& GlovePose, const FSGBasicHandModelImpl& HandModel, + const FSGSenseGloveSensorNormalizerImpl& Normalizer, + const FSGHandInterpolatorImpl& NormalizedToAngles, FSGHandPoseImpl& OutHandPose); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSenseGloveImpl(); + + explicit FSGSenseGloveImpl(const FSGSenseGloveInfoImpl& Model); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSenseGloveImpl(const FSenseGloveType SenseGlove); + + /** + * The cast from underlying pointer type constructor. + */ + explicit FSGSenseGloveImpl(const FSenseGlovePtrType SenseGlove); + +public: + /** + * The copy constructor. + */ + FSGSenseGloveImpl(const FSGSenseGloveImpl& Rhs); + + /** + * The move constructor. + */ + FSGSenseGloveImpl(FSGSenseGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSenseGloveImpl() override; + +public: + /** + * The copy assignment operator. + */ + FSGSenseGloveImpl& operator=(const FSGSenseGloveImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSenseGloveImpl& operator=(FSGSenseGloveImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSenseGloveType& ToSenseGlove() const; + + /** + * The cast to underlying pointer type method. + */ + FSenseGlovePtrType ToSenseGlovePtr() const; + + /** + * The checked cast to underlying pointer type method. + */ + FSenseGlovePtrType ToSenseGlovePtrChecked() const; + +public: + virtual ESGDeviceType GetDeviceType() const override; + + virtual FString GetDeviceId() const override; + + virtual FString GetHardwareVersion() const override; + + virtual int32 GetFirmwareVersion() const override; + + virtual int32 GetSubFirmwareVersion() const override; + +public: + virtual bool IsRight() const override; + + virtual bool GetImuRotation(FQuat& OutImu) override; + + virtual bool GetHandPose(const FSGBasicHandModelImpl& HandGeometry, FSGHandPoseImpl& OutHandPose) const override; + + virtual bool GetHandAngles(TArray>& OutHandAngles) const override; + +public: + virtual ESGHapticGloveCalibrationState GetCalibrationState() const override; + + virtual void EndCalibration() override; + + virtual void ResetCalibration() override; + +public: + virtual void StopHaptics() override; + + virtual void StopVibrations() override; + + virtual bool SendHaptics() override; + +public: + virtual bool QueueForceFeedbackLevels(const TArray& Levels01) override; + + virtual bool QueueForceFeedbackLevel(int32 Finger, float Level01) override; + + virtual bool QueueVibroLevels(const TArray& Amplitudes) override; + + virtual bool QueueVibroLevel(ESGHapticLocation Location, float Level01) override; + +public: + virtual void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const override; + + void GetGloveLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) const; + + virtual void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) const override; + + void GetWristLocation(const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) const; + +public: + FSGSenseGloveInfoImpl GetGloveInfo() const; + + TArray GetFingerThimbleOffsets() const; + + void SetFingerThimbleOffset(int32 Finger, const FVector& Offset); + + bool SupportsWristActuator() const; + +public: + bool GetSensorData(FSGSenseGloveSensorDataImpl& OutSensorData) const; + + bool GetGlovePose(FSGSenseGlovePoseImpl& OutGlovePose) const; + + bool GetGlovePose(const FSGSenseGloveSensorDataImpl& SensorData, FSGSenseGlovePoseImpl& OutGlovePose) const; + +public: + virtual bool QueueVibroLevel(int32 Finger, float Amplitude); + + virtual bool QueueThumperCommand(ESGSenseGloveThumperCommand Command); + +public: + virtual FString ToString() const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveInfoImpl.h new file mode 100644 index 0000000..bf36e58 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveInfoImpl.h @@ -0,0 +1,168 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace SG + { + class SenseGloveInfo; + } +} + +class SENSEGLOVECOREIMPL_API FSGSenseGloveInfoImpl final +{ +public: + typedef SGCore::SG::SenseGloveInfo FSenseGloveInfoType; + +public: + static bool Parse(const FString& ConstantsString, FSGSenseGloveInfoImpl& OutGloveInfo, + bool bUpdateOldModels = true); + + static FSGSenseGloveInfoImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSenseGloveInfoImpl(); + + FSGSenseGloveInfoImpl(const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, + const FQuat& ImuCorrection, + const TArray& StartPositions, + const TArray& StartRotations, + const TArray>& GloveLengths, + const TArray& Functions); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSenseGloveInfoImpl(const FSenseGloveInfoType& GloveInfo); + +public: + /** + * The copy constructor. + */ + FSGSenseGloveInfoImpl(const FSGSenseGloveInfoImpl& Rhs); + + /** + * The move constructor. + */ + FSGSenseGloveInfoImpl(FSGSenseGloveInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSenseGloveInfoImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGSenseGloveInfoImpl& operator=(const FSGSenseGloveInfoImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSenseGloveInfoImpl& operator=(FSGSenseGloveInfoImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSenseGloveInfoType& ToSenseGloveInfo() const; + +public: + FString GetDeviceId() const; + + FString GetHardwareVersion() const; + + int32 GetFirmwareVersion() const; + + int32 GetSubFirmwareVersion() const; + + bool IsRight() const; + + int32 GetNumberOfSensors() const; + + FQuat GetImuCorrection() const; + + TArray GetStartPositions() const; + + TArray GetStartRotations() const; + + TArray> GetGloveLengths() const; + + TArray GetFunctions() const; + +public: + FVector GetStartPosition(ESGFinger Finger) const; + + FQuat GetStartRotation(ESGFinger Finger) const; + + TArray GetGloveLengths(ESGFinger Finger) const; + +public: + TArray> ToGloveAngles(const TArray>& SensorAngles) const; + + bool Equals(const FSGSenseGloveInfoImpl& SGSenseGloveInfo, bool bGeometryOnly = false) const; + +public: + FString ToString(bool bShortNotation) const; + + FString ToString() const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGlovePoseImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGlovePoseImpl.h new file mode 100644 index 0000000..bef0aaa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGlovePoseImpl.h @@ -0,0 +1,148 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Vector.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace SG + { + class SenseGlovePose; + } +} + +class FSGSenseGloveHandProfileImpl; +class FSGSenseGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGSenseGlovePoseImpl final +{ +public: + typedef SGCore::SG::SenseGlovePose FSenseGlovePoseType; + +public: + static FSGSenseGlovePoseImpl IdlePose(const FSGSenseGloveInfoImpl& GloveInfo); + + static FSGSenseGlovePoseImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSenseGlovePoseImpl(); + + FSGSenseGlovePoseImpl(bool bRightHanded, + const TArray>& JointPositions, + const TArray>& JointRotations, + const TArray>& GloveAngles); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSenseGlovePoseImpl(const FSenseGlovePoseType& SenseGlovePose); + +public: + /** + * The copy constructor. + */ + FSGSenseGlovePoseImpl(const FSGSenseGlovePoseImpl& Rhs); + + /** + * The move constructor. + */ + FSGSenseGlovePoseImpl(FSGSenseGlovePoseImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSenseGlovePoseImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGSenseGlovePoseImpl& operator=(const FSGSenseGlovePoseImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSenseGlovePoseImpl& operator=(FSGSenseGlovePoseImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSenseGlovePoseType& ToSenseGlovePose() const; + +public: + bool IsRight() const; + + TArray> GetJointPositions() const; + + TArray> GetJointRotations() const; + + TArray> GetGloveAngles() const; + +public: + TArray GetThimblePositions() const; + + TArray GetThimbleRotations() const; + + TArray GetTotalGloveAngles() const; + + TArray CalculateFingertips(const TArray& FingerOffsets) const; + + bool Equals(const FSGSenseGlovePoseImpl& SenseGlovePoseImpl) const; + +public: + FString ToString(bool bShortFormat = true) const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorDataImpl.h new file mode 100644 index 0000000..0d664bf --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorDataImpl.h @@ -0,0 +1,144 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" +#include "SGTypes/SGCoreTypes.h" + +namespace SGCore +{ + namespace SG + { + class SenseGloveSensorData; + } +} + +class FSGSenseGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGSenseGloveSensorDataImpl final +{ +public: + typedef SGCore::SG::SenseGloveSensorData FSenseGloveSensorDataType; + +public: + static const FSGSenseGloveSensorDataImpl& Empty(); + + static FSGSenseGloveSensorDataImpl Parse(const FString& RawData, const FSGSenseGloveInfoImpl& GloveInfo); + + static FSGSenseGloveSensorDataImpl Deserialize(const FString& SerializedString); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSenseGloveSensorDataImpl(); + + FSGSenseGloveSensorDataImpl(const TArray>& SensorAngles, const FQuat& ImuRotation, + int32 ParsedValues, bool bImuParsed); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSenseGloveSensorDataImpl(const FSenseGloveSensorDataType& SenseGloveSensorData); + +public: + /** + * The copy constructor. + */ + FSGSenseGloveSensorDataImpl(const FSGSenseGloveSensorDataImpl& Rhs); + + /** + * The move constructor. + */ + FSGSenseGloveSensorDataImpl(FSGSenseGloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSenseGloveSensorDataImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGSenseGloveSensorDataImpl& operator=(const FSGSenseGloveSensorDataImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSenseGloveSensorDataImpl& operator=(FSGSenseGloveSensorDataImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSenseGloveSensorDataType& ToSenseGloveSensorData() const; + +public: + TArray> GetSensorAngles() const; + + TArray GetSensorAngles(ESGFinger Finger) const; + + TArray GetAngleSequence() const; + + FQuat GetImuRotation() const; + + int32 GetParsedValues() const; + +public: + bool IsImuParsed() const; + +public: + bool Equals(const FSGSenseGloveSensorDataImpl& SenseGloveSensorDataImpl) const; + +public: + FString ToString() const; + + FString Serialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h new file mode 100644 index 0000000..3a6c7ae --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h @@ -0,0 +1,117 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace SG + { + class SenseGloveSensorNormalizer; + } +} + +class FSGSenseGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGSenseGloveSensorNormalizerImpl final +{ +public: + typedef SGCore::SG::SenseGloveSensorNormalizer FSenseGloveSensorNormalizerType; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSenseGloveSensorNormalizerImpl(); + + explicit FSGSenseGloveSensorNormalizerImpl(bool bRightHanded); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSenseGloveSensorNormalizerImpl(const FSenseGloveSensorNormalizerType& SenseGloveSensorNormalizer); + +public: + /** + * The copy constructor. + */ + FSGSenseGloveSensorNormalizerImpl(const FSGSenseGloveSensorNormalizerImpl& Rhs); + + /** + * The move constructor. + */ + FSGSenseGloveSensorNormalizerImpl(FSGSenseGloveSensorNormalizerImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSenseGloveSensorNormalizerImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGSenseGloveSensorNormalizerImpl& operator=(const FSGSenseGloveSensorNormalizerImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSenseGloveSensorNormalizerImpl& operator=(FSGSenseGloveSensorNormalizerImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSenseGloveSensorNormalizerType& ToSenseGloveSensorNormalizer() const; + +public: + float NormalizeFlexion(int32 Finger, float SumFlexionAngles) const; + + float NormalizeAbduction(int32 Finger, float SumAbductionAngles) const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveVarsImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveVarsImpl.h new file mode 100644 index 0000000..2124bc2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSenseGloveVarsImpl.h @@ -0,0 +1,85 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +class FSGSenseGloveInfoImpl; + +namespace SGCore +{ + namespace SG + { + class SenseGloveVars; + } +} + +class SENSEGLOVECOREIMPL_API FSGSenseGloveVarsImpl final +{ +public: + typedef SGCore::SG::SenseGloveVars FSenseGloveVarsType; + +public: + static FString GetStandardConstantsString(const FString& HardwareVersion, float FirmwareVersion, bool bRightHanded); + + static FString GetSensorString(const FString& HardwareVersion, float FirmwareVersion); + + static TArray GetStartPositions(const FString& HardwareVersion, bool bRightHanded); + + static TArray GetStartRotations(const FString& HardwareVersion, bool bRightHanded); + + static TArray> GetGloveLengths(const FString& HardwareVersion); + + static int32 GetSensors(const FString& HardwareVersion); + + static FQuat GetImuCorrection(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + static TArray GetFunctions(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + static FSGSenseGloveInfoImpl GenerateGloveModel(const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, bool bRightHanded); + + static FSGSenseGloveInfoImpl GenerateGloveModel(const FString& HardwareVersion, int32 FirmwareVersion, + int32 SubFirmwareVersion, bool bRightHanded, + const FString& CustomId); + +public: + FSGSenseGloveVarsImpl() = delete; + virtual ~FSGSenseGloveVarsImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSensorNormalizationImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSensorNormalizationImpl.h new file mode 100644 index 0000000..72e2325 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGSensorNormalizationImpl.h @@ -0,0 +1,142 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace Util + { + class SensorNormalization; + } +} + +class FSGSenseGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGSensorNormalizationImpl final +{ +public: + typedef SGCore::Util::SensorNormalization FSensorNormalizationType; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSensorNormalizationImpl(); + + explicit FSGSensorNormalizationImpl(const TArray& MovementRanges); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGSensorNormalizationImpl(const FSensorNormalizationType& SensorNormalization); + +public: + /** + * The copy constructor. + */ + FSGSensorNormalizationImpl(const FSGSensorNormalizationImpl& Rhs); + + /** + * The move constructor. + */ + FSGSensorNormalizationImpl(FSGSensorNormalizationImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGSensorNormalizationImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGSensorNormalizationImpl& operator=(const FSGSensorNormalizationImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGSensorNormalizationImpl& operator=(FSGSensorNormalizationImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FSensorNormalizationType& ToSensorNormalization() const; + + /** + * The cast to underlying type method. + */ + FSensorNormalizationType& ToSensorNormalization(); + +public: + bool CollectsNormalization() const; + + void SetCollectNormalization(bool bCollectNormalization); + +public: + int32 GetLength() const; + + int32 GetMoveCount() const; + + bool AllSensorsMoving() const; + + void ResetNormalization(); + + void UpdateNormalization(float Value, int32 Index); + + float NormalizeValue(float Value, int32 Index); + + TArray NormalizeValues(const TArray& Values); + + bool MovedEnough(int32 Index) const; + + float Denormalize(float Value01, int32 Index, float FallbackValue = 1.0f) const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGThresholdCommandImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGThresholdCommandImpl.h new file mode 100644 index 0000000..44b4361 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGThresholdCommandImpl.h @@ -0,0 +1,141 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +namespace SGCore +{ + namespace Haptics + { + class ThresholdCommand; + } +} + +class FSGSenseGloveInfoImpl; + +class SENSEGLOVECOREIMPL_API FSGThresholdCommandImpl final +{ +public: + typedef SGCore::Haptics::ThresholdCommand FThresholdCommandType; + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGThresholdCommandImpl(); + FSGThresholdCommandImpl(const TArray& AffectedFingers, const TArray& ThresholdValues); + +public: + /** + * The cast from underlying type constructor. + */ + explicit FSGThresholdCommandImpl(const FThresholdCommandType& ThresholdCommand); + +public: + /** + * The copy constructor. + */ + FSGThresholdCommandImpl(const FSGThresholdCommandImpl& Rhs); + + /** + * The move constructor. + */ + FSGThresholdCommandImpl(FSGThresholdCommandImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGThresholdCommandImpl(); + +public: + /** + * The copy assignment operator. + */ + FSGThresholdCommandImpl& operator=(const FSGThresholdCommandImpl& Rhs); + + /** + * The move assignment operator. + */ + FSGThresholdCommandImpl& operator=(FSGThresholdCommandImpl&& Rhs) SG_NOEXCEPT; + +public: + /** + * The cast to underlying type method. + */ + const FThresholdCommandType& ToThresholdCommand() const; + + /** + * The cast to underlying type method. + */ + FThresholdCommandType& ToThresholdCommand(); + +public: + float GetThreshold(int32 Finger) const; + + void SetThreshold(int32 Finger, float ThresholdValue); + + TArray GetThresholds() const; + + void SetThresholds(const TArray& AffectedFingers, const TArray& ThresholdValues); + + bool GetFingerActive(int32 Finger) const; + + TArray GetActiveFingers() const; + + void ClearThreshold(int32 Finger); + + void ClearThresholds(); + +public: + bool Equals(const FSGThresholdCommandImpl& ThresholdCommand) const; + +public: + FString ToString() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h new file mode 100644 index 0000000..73eb783 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/Public/SGCoreImpl/SGTrackingImpl.h @@ -0,0 +1,168 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGBuildHacks/SGInclude_Core_Tracking.h" +#include "SGTypes/SGCoreTypes.h" + +class SENSEGLOVECOREIMPL_API FSGTrackingImpl +{ +public: + typedef SGCore::Tracking FTrackingType; + +public: + static void CalculateLocation( + const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation); + + static const TArray& GetSenseGloveFingerToGlovePositionOrigin(); + + static const TArray& GetSenseGloveFingerToGloveRotationOrigin(); + + static const FVector& GetSenseGloveWristPositionOffset(); + + static const FQuat& GetSenseGloveWristRotationOffset(); + + static void GetSenseGloveMountOffset(bool bRightHanded, ESGFinger ToFinger, + FVector& OutIPosition, FQuat& OutIRotation); + + static void GetSenseGloveTrackerMountOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + static const FVector& GetSenseGloveViveToAttachPosition(); + static const FQuat& GetSenseGloveViveToAttachRotation(); + + static const FVector& GetSenseGloveOculusTouchToAttachPosition(); + static const FQuat& GetSenseGloveOculusTouchToAttachRotation(); + + static const FVector& GetNovaToWristPositionOffset(); + static const FQuat& GetNovaToWristRotationOffset(); + + static const FVector& GetRightNovaViveToAttachPosition(); + static const FQuat& GetRightNovaViveToAttachRotation(); + + static const FVector& GetLeftNovaViveToAttachPosition(); + static const FQuat& GetLeftNovaViveToAttachRotation(); + + static const FVector& GetRightNovaQuest2ToAttachPosition(); + static const FQuat& GetRightNovaQuest2ToAttachRotation(); + + static const FVector& GetLeftNovaQuest2ToAttachPosition(); + static const FQuat& GetLeftNovaQuest2ToAttachRotation(); + + static const FVector& GetRightNovaPico2ToAttachPosition(); + static const FQuat& GetRightNovaPico2ToAttachRotation(); + + static const FQuat& GetLeftNovaPico2ToAttachRotation(); + + static const FVector& GetRightNovaQuestProToAttachPosition(); + static const FQuat& GetRightNovaQuestProToAttachRotation(); + + static const FVector& GetLeftNovaQuestProToAttachPosition(); + static const FQuat& GetLeftNovaQuestProToAttachRotation(); + + static const FVector& GetRightNovaViveFocus3ToAttachPosition(); + static const FQuat& GetRightNovaViveFocus3ToAttachRotation(); + + static const FVector& GetLeftNovaViveFocus3ToAttachPosition(); + static const FQuat& GetLeftNovaViveFocus3ToAttachRotation(); + + static const FVector& GetRightNovaQuest3ToAttachPosition(); + static const FQuat& GetRightNovaQuest3ToAttachRotation(); + + static const FVector& GetLeftNovaQuest3ToAttachPosition(); + static const FQuat& GetLeftNovaQuest3ToAttachRotation(); + + static void GetNovaGloveWristOffset(bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset); + + static void GetNovaGloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + static const FVector& GetRightNova2ToWristPositionOffset(); + static const FQuat& GetRightNova2ToWristRotationOffset(); + + static const FVector& GetLeftNova2ToWristPositionOffset(); + static const FQuat& GetLeftNova2ToWristRotationOffset(); + + static const FVector& GetRightNova2Quest2ToAttachPosition(); + static const FQuat& GetRightNova2Quest2ToAttachRotation(); + + static const FVector& GetLeftNova2Quest2ToAttachPosition(); + static const FQuat& GetLeftNova2Quest2ToAttachRotation(); + + static const FVector& GetRightNova2QuestProToAttachPosition(); + static const FQuat& GetRightNova2QuestProToAttachRotation(); + + static const FVector& GetLeftNova2QuestProToAttachPosition(); + static const FQuat& GetLeftNova2QuestProToAttachRotation(); + + static const FVector& GetRightNova2ViveTrackerToAttachPosition(); + static const FQuat& GetRightNova2ViveTrackerToAttachRotation(); + + static const FVector& GetLeftNova2ViveTrackerToAttachPosition(); + static const FQuat& GetLeftNova2ViveTrackerToAttachRotation(); + + static const FVector& GetRightNova2ViveWristTrackerToAttachPosition(); + static const FQuat& GetRightNova2ViveWristTrackerToAttachRotation(); + + static const FVector& GetRightNova2Quest3ToAttachPosition(); + static const FQuat& GetRightNova2Quest3ToAttachRotation(); + + static const FVector& GetLeftNova2Quest3ToAttachPosition(); + static const FQuat& GetLeftNova2Quest3ToAttachRotation(); + + static const FVector& GetLeftNova2ViveWristTrackerToAttachPosition(); + static const FQuat& GetLeftNova2ViveWristTrackerToAttachRotation(); + + static void GetNova2GloveWristOffset(bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + static void GetNova2GloveTrackerOffset(ESGPositionalTrackingHardware Hardware, bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, + FQuat& OutRotationOffset); + + static FString ToString(ESGPositionalTrackingHardware Hardware); + +public: + FSGTrackingImpl() = delete; + virtual ~FSGTrackingImpl() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreImpl/SenseGloveCoreImpl.Build.cs b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/SenseGloveCoreImpl.Build.cs new file mode 100644 index 0000000..f10d17c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreImpl/SenseGloveCoreImpl.Build.cs @@ -0,0 +1,202 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using UnrealBuildTool; + +public class SenseGloveCoreImpl : ModuleRules +{ + public SenseGloveCoreImpl(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + bEnableExceptions = true; + bUseRTTI = true; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveTypes", + "SenseGloveUtils", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + "SenseGloveInterop", + } + ); + + AddCoreLibrary(Target); + + PublicDefinitions.Add("SENSEGLOVE_BUILDING_CORE_IMPL_MODULE"); + PublicDefinitions.Add("SENSEGLOVE_UNREAL_ENGINE_PLUGIN"); + } + + private void AddCoreLibrary(ReadOnlyTargetRules Target) + { + string PluginRootDirectory = Path.GetFullPath(Path.Combine(ModuleDirectory, "..", "..")); + string SourceDirectory = Path.GetFullPath(Path.Combine(PluginRootDirectory, "Source")); + string ThirdPartyDirectory = Path.GetFullPath(Path.Combine(SourceDirectory, "ThirdParty")); + string LibraryPath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "lib")); + string LibraryPathAnroidArm64 = ""; + string LibraryPathAnroidx64 = ""; + string LibraryName = "sgcore"; + + bool bIsAndroid = Target.IsInPlatformGroup(UnrealPlatformGroup.Android); + bool bIsLinux = Target.Platform == UnrealTargetPlatform.Linux; + bool bIsLinuxArm64 = Target.Platform == UnrealTargetPlatform.LinuxArm64; + bool bIsWin64 = Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) && + Target.WindowsPlatform.Architecture == UnrealArch.X64; + bool bIsDebugBuild = (Target.Configuration == UnrealTargetConfiguration.Debug); + + if (bIsAndroid) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "android")); + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "r25b")); + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPath, "arm64")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPath, "x64")); + + LibraryName = string.Format("lib{0}.a", LibraryName); + } + else if (bIsLinux) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "x86-64")); + } + else if (bIsLinuxArm64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "linux")); + LibraryName = string.Format("lib{0}.a", LibraryName); + +#if UE_5_3_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v22")); +#elif UE_5_2_OR_LATER + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "v21")); +#else + Debug.Assert(false, "Unsupported engine version or compiler!"); +#endif + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "aarch64")); + } + else if (bIsWin64) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "win64")); + switch (Target.WindowsPlatform.Compiler) + { + case WindowsCompiler.VisualStudio2022: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc143")); + break; +#if ! UE_5_4_OR_LATER + case WindowsCompiler.VisualStudio2019: + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "msvc142")); + break; +#endif + default: + Debug.Assert(false, "Unsupported engine version or compiler!"); + break; + } + + LibraryName = string.Format("{0}.lib", LibraryName); + } + else + { + Debug.Assert(false, "Unsupported platform!"); + } + + string IncludePath = Path.GetFullPath(Path.Combine(ThirdPartyDirectory, "include")); + PrivateIncludePaths.Add(IncludePath); + + if (bIsAndroid) + { + if (bIsDebugBuild) + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "debug")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "debug")); + } + else + { + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, "release")); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, "release")); + } + + LibraryPathAnroidArm64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidArm64, LibraryName)); + LibraryPathAnroidx64 = Path.GetFullPath(Path.Combine(LibraryPathAnroidx64, LibraryName)); + + PublicAdditionalLibraries.Add(LibraryPathAnroidArm64); + PublicAdditionalLibraries.Add(LibraryPathAnroidx64); + } + else + { + if (bIsDebugBuild) + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "debug")); + } + else + { + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, "release")); + } + + LibraryPath = Path.GetFullPath(Path.Combine(LibraryPath, LibraryName)); + PublicAdditionalLibraries.Add(LibraryPath); + } + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGAnatomyKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGAnatomyKismetLibrary.cpp new file mode 100644 index 0000000..d095ce9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGAnatomyKismetLibrary.cpp @@ -0,0 +1,107 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGAnatomyKismetLibrary.h" + +#include "SGCore/SGAnatomy.h" +#include "SGUtils/SGArrayUtils.h" + +float USGAnatomyKismetLibrary::GetTotalFingerFlexion() +{ + return FSGAnatomy::GetTotalFingerFlexion(); +} + +float USGAnatomyKismetLibrary::GetTotalFingerExtension() +{ + return FSGAnatomy::GetTotalFingerExtension(); +} + +float USGAnatomyKismetLibrary::GetTotalThumbFlexion() +{ + return FSGAnatomy::GetTotalThumbFlexion(); +} + +float USGAnatomyKismetLibrary::GetTotalThumbExtension() +{ + return FSGAnatomy::GetTotalThumbExtension(); +} + +float USGAnatomyKismetLibrary::GetFingerJointLimit(const bool bRightHanded, const int32 Joint, const int32 Movement, + const bool bMax) +{ + return FSGAnatomy::GetFingerJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float USGAnatomyKismetLibrary::GetThumbJointLimit(const bool bRightHanded, const int32 Joint, const int32 Movement, + const bool bMax) +{ + return FSGAnatomy::GetThumbJointLimit(bRightHanded, Joint, Movement, bMax); +} + +float USGAnatomyKismetLibrary::ClampJointAngle( + const float Value, const int32 Finger, const bool bRightHand, const int32 Joint, const int32 Movement) +{ + return FSGAnatomy::ClampJointAngle(Value, Finger, bRightHand, Joint, Movement); +} + +float USGAnatomyKismetLibrary::NormalizeFingerFlexion(const float FlexionInDegrees) +{ + return FSGAnatomy::NormalizeFingerFlexion(FlexionInDegrees); +} + +float USGAnatomyKismetLibrary::NormalizeThumbFlexion(const float FlexionInDegrees) +{ + return FSGAnatomy::NormalizeThumbFlexion(FlexionInDegrees); +} + +TArray USGAnatomyKismetLibrary::GetDefaultHandAngles(const bool bRightHanded) +{ + return FSGArrayUtils::ToNestedBPArray(FSGAnatomy::GetDefaultHandAngles(bRightHanded)); +} + +TArray USGAnatomyKismetLibrary::GetFlatHandAngles(const bool bRightHanded) +{ + return FSGArrayUtils::ToNestedBPArray(FSGAnatomy::GetFlatHandAngles(bRightHanded)); +} + +TArray USGAnatomyKismetLibrary::GetThumbsUpHandAngles(const bool bRightHanded) +{ + return FSGArrayUtils::ToNestedBPArray(FSGAnatomy::GetThumbsUpHandAngles(bRightHanded)); +} + +TArray USGAnatomyKismetLibrary::GetFistHandAngles(const bool bRightHanded) +{ + return FSGArrayUtils::ToNestedBPArray(FSGAnatomy::GetFistHandAngles(bRightHanded)); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBasicHandModelKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBasicHandModelKismetLibrary.cpp new file mode 100644 index 0000000..8b36f66 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBasicHandModelKismetLibrary.cpp @@ -0,0 +1,237 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGBasicHandModelKismetLibrary.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGUtils/SGArrayUtils.h" + +USGBasicHandModel* USGBasicHandModelKismetLibrary::MakeBasicHandModel(UObject* WorldContextObject) +{ + return USGBasicHandModel::NewBasicHandModel(WorldContextObject); +} + +USGBasicHandModel* USGBasicHandModelKismetLibrary::MakeBasicHandModel_bRH_L_SP( + UObject* WorldContextObject, + const bool bRightHanded, const TArray& Lengths, const TArray& StartPositions) +{ + return USGBasicHandModel::NewBasicHandModel(WorldContextObject, bRightHanded, Lengths, StartPositions); +} + +USGBasicHandModel* USGBasicHandModelKismetLibrary::MakeBasicHandModel_bRH_L_SP_TArrayFQuat_SR( + UObject* WorldContextObject, + const bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations) +{ + return USGBasicHandModel::NewBasicHandModel(WorldContextObject, bRightHanded, Lengths, + StartPositions, StartRotations); +} + +USGBasicHandModel* USGBasicHandModelKismetLibrary::MakeBasicHandModel_bRH_L_SP_TArrayFRotator_SR( + UObject* WorldContextObject, + const bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations) +{ + return USGBasicHandModel::NewBasicHandModel(WorldContextObject, bRightHanded, Lengths, + StartPositions, StartRotations); +} + +USGBasicHandModel* USGBasicHandModelKismetLibrary::Default(UObject* WorldContextObject, const bool bRightHanded) +{ + return USGBasicHandModel::Default(WorldContextObject, bRightHanded); +} + +USGBasicHandModel* USGBasicHandModelKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGBasicHandModel::Deserialize(WorldContextObject, SerializedString); +} + +TArray USGBasicHandModelKismetLibrary::GetBaseFingerLengths() +{ + return FSGArrayUtils::ToNestedBPArray(USGBasicHandModel::GetBaseFingerLengths()); +} + +TArray USGBasicHandModelKismetLibrary::GetBaseJointPositions() +{ + return USGBasicHandModel::GetBaseJointPositions(); +} + +TArray USGBasicHandModelKismetLibrary::GetBaseJointAngles() +{ + return USGBasicHandModel::GetBaseJointAngles(); +} + +bool USGBasicHandModelKismetLibrary::IsRight(const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->IsRight(); +} + +TArray USGBasicHandModelKismetLibrary::GetFingerLengths(const USGBasicHandModel* BasicHandModel) +{ + return FSGArrayUtils::ToNestedBPArray(BasicHandModel->GetFingerLengths()); +} + +TArray USGBasicHandModelKismetLibrary::GetFingerLengths_F(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->GetFingerLengths(Finger); +} + +void USGBasicHandModelKismetLibrary::SetFingerLengths_ESGFinger_F_L(USGBasicHandModel* BasicHandModel, + const ESGFinger Finger, + const TArray& Lengths) +{ + BasicHandModel->SetFingerLengths(Finger, Lengths); +} + +void USGBasicHandModelKismetLibrary::SetFingerLengths_uint8_F_L(USGBasicHandModel* BasicHandModel, + const uint8 Finger, const TArray& Lengths) +{ + BasicHandModel->SetFingerLengths(Finger, Lengths); +} + +TArray USGBasicHandModelKismetLibrary::GetFingerRatios(const USGBasicHandModel* BasicHandModel) const +{ + return FSGArrayUtils::ToNestedBPArray(BasicHandModel->GetFingerRatios()); +} + +TArray USGBasicHandModelKismetLibrary::GetFingerRatios_F(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->GetFingerRatios(Finger); +} + +TArray USGBasicHandModelKismetLibrary::GetStartJointPositions(const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->GetStartJointPositions(); +} + +void USGBasicHandModelKismetLibrary::SetStartJointPosition_ESGFinger_F_P(USGBasicHandModel* BasicHandModel, + const ESGFinger Finger, + const FVector& Position) +{ + BasicHandModel->SetStartJointPosition(Finger, Position); +} + +void USGBasicHandModelKismetLibrary::SetStartJointPosition_uint8_F_P(USGBasicHandModel* BasicHandModel, + const uint8 Finger, const FVector& Position) +{ + BasicHandModel->SetStartJointPosition(Finger, Position); +} + +TArray USGBasicHandModelKismetLibrary::GetStartJointRotations_TArrayFQuat( + const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->GetStartJointRotationsQ(); +} + +TArray USGBasicHandModelKismetLibrary::GetStartJointRotations_TArrayFRotator( + const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->GetStartJointRotations(); +} + +FVector USGBasicHandModelKismetLibrary::GetJointPosition(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->GetJointPosition(Finger); +} + +void USGBasicHandModelKismetLibrary::SetJointPosition(USGBasicHandModel* BasicHandModel, const FVector& NewPosition, + const ESGFinger Finger) +{ + return BasicHandModel->SetJointPosition(NewPosition, Finger); +} + +FQuat USGBasicHandModelKismetLibrary::GetJointRotation_FQuat(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->GetJointRotationQ(Finger); +} + +FRotator USGBasicHandModelKismetLibrary::GetJointRotation_FRotator(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->GetJointRotation(Finger); +} + +void USGBasicHandModelKismetLibrary::SetJointRotation_FQuat_NR_F(USGBasicHandModel* BasicHandModel, + const FQuat& NewRotation, const ESGFinger Finger) +{ + return BasicHandModel->SetJointRotation(NewRotation, Finger); +} + +void USGBasicHandModelKismetLibrary::SetJointRotation_FRotator_NR_F(USGBasicHandModel* BasicHandModel, + const FRotator& NewRotation, const ESGFinger Finger) +{ + return BasicHandModel->SetJointRotation(NewRotation, Finger); +} + +TArray USGBasicHandModelKismetLibrary::GetTotalLengths(const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->GetTotalLengths(); +} + +float USGBasicHandModelKismetLibrary::GetTotalLength(const USGBasicHandModel* BasicHandModel, const ESGFinger Finger) +{ + return BasicHandModel->GetTotalLength(Finger); +} + +TArray USGBasicHandModelKismetLibrary::Get3DLengths(const USGBasicHandModel* BasicHandModel, + const ESGFinger Finger) +{ + return BasicHandModel->Get3DLengths(Finger); +} + +bool USGBasicHandModelKismetLibrary::Equals(const USGBasicHandModel* A, const USGBasicHandModel* B) +{ + return A->Equals(B); +} + +FString USGBasicHandModelKismetLibrary::ToString(const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->ToString(); +} + +FString USGBasicHandModelKismetLibrary::ToString_bLO(const USGBasicHandModel* BasicHandModel, const bool bLengthsOnly) +{ + return BasicHandModel->ToString(bLengthsOnly); +} + +FString USGBasicHandModelKismetLibrary::SGSerialize(const USGBasicHandModel* BasicHandModel) +{ + return BasicHandModel->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBetaDeviceKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBetaDeviceKismetLibrary.cpp new file mode 100644 index 0000000..c6b9866 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGBetaDeviceKismetLibrary.cpp @@ -0,0 +1,93 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGBetaDeviceKismetLibrary.h" + +#include "SGCore/SGBetaDevice.h" + +USGBetaDevice* USGBetaDeviceKismetLibrary::Parse(UObject* WorldContextObject, const FString& String) +{ + return USGBetaDevice::Parse(WorldContextObject, String); +} + +ESGDeviceType USGBetaDeviceKismetLibrary::GetDeviceType(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetDeviceType(); +} + +FString USGBetaDeviceKismetLibrary::GetDeviceId(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetDeviceId(); +} + +FString USGBetaDeviceKismetLibrary::GetHardwareVersion(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetHardwareVersion(); +} + +int32 USGBetaDeviceKismetLibrary::GetFirmwareVersion(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetFirmwareVersion(); +} + +int32 USGBetaDeviceKismetLibrary::GetSubFirmwareVersion(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetSubFirmwareVersion(); +} + +FString USGBetaDeviceKismetLibrary::GetConstantsString(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetConstantsString(); +} + +FString USGBetaDeviceKismetLibrary::GetSensorData(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetSensorData(); +} + +FString USGBetaDeviceKismetLibrary::GetLastCommand(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->GetLastCommand(); +} + +bool USGBetaDeviceKismetLibrary::SendHaptics(const USGBetaDevice* BetaDevice, const FString& Command) +{ + return BetaDevice->SendHaptics(Command); +} + +FString USGBetaDeviceKismetLibrary::ToString(const USGBetaDevice* BetaDevice) +{ + return BetaDevice->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGCustomWaveformKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGCustomWaveformKismetLibrary.cpp new file mode 100644 index 0000000..63073e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGCustomWaveformKismetLibrary.cpp @@ -0,0 +1,195 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGCustomWaveformKismetLibrary.h" + +#include "SGCore/SGCustomWaveform.h" + +USGCustomWaveform* USGCustomWaveformKismetLibrary::MakeCustomWaveform(UObject* WorldContextObject) +{ + return USGCustomWaveform::NewCustomWaveform(WorldContextObject); +} + +USGCustomWaveform* USGCustomWaveformKismetLibrary::MakeCustomWaveform_A_D( + UObject* WorldContextObject, const float Amplitude, const float Duration) +{ + return USGCustomWaveform::NewCustomWaveform(WorldContextObject, Amplitude, Duration); +} + +USGCustomWaveform* USGCustomWaveformKismetLibrary::MakeCustomWaveform_A_D_F( + UObject* WorldContextObject, const float Amplitude, const float Duration, const float Frequency) +{ + return USGCustomWaveform::NewCustomWaveform(WorldContextObject, Amplitude, Duration, Frequency); +} + +FString USGCustomWaveformKismetLibrary::ToString_T(const ESGWaveformType Type) +{ + return USGCustomWaveform::ToString(Type); +} + +float USGCustomWaveformKismetLibrary::GetAmplitude(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetAmplitude(); +} + +void USGCustomWaveformKismetLibrary::SetAmplitude(USGCustomWaveform* CustomWaveform, const float Amplitude) +{ + CustomWaveform->SetAmplitude(Amplitude); +} + +ESGWaveformType USGCustomWaveformKismetLibrary::GetWaveType(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetWaveType(); +} + +void USGCustomWaveformKismetLibrary::SetWaveType(USGCustomWaveform* CustomWaveform, const ESGWaveformType Type) +{ + CustomWaveform->SetWaveType(Type); +} + +bool USGCustomWaveformKismetLibrary::IsInfinite(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->IsInfinite(); +} + +void USGCustomWaveformKismetLibrary::SetInfinite(USGCustomWaveform* CustomWaveform, const bool bInfinite) +{ + CustomWaveform->SetInfinite(bInfinite); +} + +int32 USGCustomWaveformKismetLibrary::GetRepeatAmount(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetRepeatAmount(); +} + +void USGCustomWaveformKismetLibrary::SetRepeatAmount(USGCustomWaveform* CustomWaveform, const int32 Amount) +{ + CustomWaveform->SetRepeatAmount(Amount); +} + +float USGCustomWaveformKismetLibrary::GetAttackTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetAttackTime(); +} + +void USGCustomWaveformKismetLibrary::SetAttackTime(USGCustomWaveform* CustomWaveform, const float Time) +{ + CustomWaveform->SetAttackTime(Time); +} + +float USGCustomWaveformKismetLibrary::GetSustainTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetSustainTime(); +} + +void USGCustomWaveformKismetLibrary::SetSustainTime(USGCustomWaveform* CustomWaveform, const float Time) +{ + CustomWaveform->SetSustainTime(Time); +} + +float USGCustomWaveformKismetLibrary::GetDecayTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetDecayTime(); +} + +void USGCustomWaveformKismetLibrary::SetDecayTime(USGCustomWaveform* CustomWaveform, const float Time) +{ + CustomWaveform->SetDecayTime(Time); +} + +float USGCustomWaveformKismetLibrary::GetFrequencyStart(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetFrequencyStart(); +} + +void USGCustomWaveformKismetLibrary::SetFrequencyStart(USGCustomWaveform* CustomWaveform, const float Frequency) +{ + CustomWaveform->SetFrequencyStart(Frequency); +} + +float USGCustomWaveformKismetLibrary::GetFrequencyEnd(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetFrequencyEnd(); +} + +void USGCustomWaveformKismetLibrary::SetFrequencyEnd(USGCustomWaveform* CustomWaveform, const float Frequency) +{ + CustomWaveform->SetFrequencyEnd(Frequency); +} + +float USGCustomWaveformKismetLibrary::GetFrequencySwitchTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetFrequencySwitchTime(); +} + +void USGCustomWaveformKismetLibrary::SetFrequencySwitchTime(USGCustomWaveform* CustomWaveform, const float Time) +{ + CustomWaveform->SetFrequencySwitchTime(Time); +} + +float USGCustomWaveformKismetLibrary::GetFrequencySwitchFactor(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetFrequencySwitchFactor(); +} + +void USGCustomWaveformKismetLibrary::SetFrequencySwitchFactor(USGCustomWaveform* CustomWaveform, const float Time) +{ + CustomWaveform->SetFrequencySwitchFactor(Time); +} + +float USGCustomWaveformKismetLibrary::GetEffectTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetEffectTime(); +} + +float USGCustomWaveformKismetLibrary::GetTotalEffectTime(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->GetTotalEffectTime(); +} + +bool USGCustomWaveformKismetLibrary::FrequencyJumps(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->FrequencyJumps(); +} + +bool USGCustomWaveformKismetLibrary::Equals(const USGCustomWaveform* A, const USGCustomWaveform* B) +{ + return A->Equals(B); +} + +FString USGCustomWaveformKismetLibrary::ToString(const USGCustomWaveform* CustomWaveform) +{ + return CustomWaveform->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceKismetLibrary.cpp new file mode 100644 index 0000000..29bd45b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceKismetLibrary.cpp @@ -0,0 +1,182 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGDeviceKismetLibrary.h" + +#include "SGCore/SGDevice.h" +#include "SGCore/SGHapticChannelInfo.h" + +void USGDeviceKismetLibrary::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + return USGDevice::ParseFirmware(RawFirmware, OutMainVersion, OutSubVersion); +} + +bool USGDeviceKismetLibrary::FirmwareNewerThan_MF_MF_RM_RS_bI(const int32 MyFirmwareMain, const int32 MyFirmwareSub, + const int32 ReferenceMain, const int32 ReferenceSub, + const bool bInclusive) +{ + return USGDevice::FirmwareNewerThan(MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +bool USGDeviceKismetLibrary::FirmwareOlderThan_MF_MF_RM_RS_bI(const int32 MyFirmwareMain, const int32 MyFirmwareSub, + const int32 ReferenceMain, const int32 ReferenceSub, + const bool bInclusive) +{ + return USGDevice::FirmwareOlderThan(MyFirmwareMain, MyFirmwareSub, ReferenceMain, ReferenceSub, bInclusive); +} + +FString USGDeviceKismetLibrary::ToString_DT(const ESGDeviceType DeviceType) +{ + return USGDevice::ToString(DeviceType); +} + +ESGDeviceType USGDeviceKismetLibrary::GetDeviceType(const USGDevice* SGDevice) +{ + return SGDevice->GetDeviceType(); +} + +FString USGDeviceKismetLibrary::GetDeviceId(const USGDevice* SGDevice) +{ + return SGDevice->GetDeviceId(); +} + +FString USGDeviceKismetLibrary::GetHardwareVersion(const USGDevice* SGDevice) +{ + return SGDevice->GetHardwareVersion(); +} + +int32 USGDeviceKismetLibrary::GetFirmwareVersion(const USGDevice* SGDevice) +{ + return SGDevice->GetFirmwareVersion(); +} + +int32 USGDeviceKismetLibrary::GetSubFirmwareVersion(const USGDevice* SGDevice) +{ + return SGDevice->GetSubFirmwareVersion(); +} + +FString USGDeviceKismetLibrary::GetFirmwareString(const USGDevice* SGDevice) +{ + return SGDevice->GetFirmwareString(); +} + +bool USGDeviceKismetLibrary::FirmwareNewerThan_FM_FS_bI(const USGDevice* SGDevice, + const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) +{ + return SGDevice->FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGDeviceKismetLibrary::FirmwareOlderThan_FM_FS_bI(const USGDevice* SGDevice, + const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) +{ + return SGDevice->FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} + +FString USGDeviceKismetLibrary::GetAddress(const USGDevice* SGDevice) +{ + return SGDevice->GetAddress(); +} + +bool USGDeviceKismetLibrary::IsConnected(const USGDevice* SGDevice) +{ + return SGDevice->IsConnected(); +} + +ESGConnectionType USGDeviceKismetLibrary::GetConnectionType(const USGDevice* SGDevice) +{ + return SGDevice->GetConnectionType(); +} + +int32 USGDeviceKismetLibrary::PacketsPerSecondReceived(const USGDevice* SGDevice) +{ + return SGDevice->PacketsPerSecondReceived(); +} + +int32 USGDeviceKismetLibrary::PacketsPerSecondSent(const USGDevice* SGDevice) +{ + return SGDevice->PacketsPerSecondSent(); +} + +int32 USGDeviceKismetLibrary::GetDeviceIndex(const USGDevice* SGDevice) +{ + return SGDevice->GetDeviceIndex(); +} + +void USGDeviceKismetLibrary::SetDeviceIndex(USGDevice* SGDevice, const int32 NewIndex) +{ + SGDevice->SetDeviceIndex(NewIndex); +} + +bool USGDeviceKismetLibrary::IsWireless(const USGDevice* SGDevice) +{ + return SGDevice->IsWireless(); +} + +bool USGDeviceKismetLibrary::HasBattery(const USGDevice* SGDevice) +{ + return SGDevice->HasBattery(); +} + +bool USGDeviceKismetLibrary::IsCharging(USGDevice* SGDevice) +{ + return SGDevice->IsCharging(); +} + +bool USGDeviceKismetLibrary::GetBatteryLevel(USGDevice* SGDevice, float& OutLevel) +{ + return SGDevice->GetBatteryLevel(OutLevel); +} + +void USGDeviceKismetLibrary::SetHapticChannels(USGDevice* SGDevice, const USGHapticChannelInfo* Channels) +{ + SGDevice->SetHapticChannels(Channels); +} + +int32 USGDeviceKismetLibrary::GetHapticChannelCount(const USGDevice* SGDevice) +{ + return SGDevice->GetHapticChannelCount(); +} + +int32 USGDeviceKismetLibrary::GetHapticChannelCount_CT(const USGDevice* SGDevice, ESGHapticChannelType ChannelType) +{ + return SGDevice->GetHapticChannelCount(ChannelType); +} + +FString USGDeviceKismetLibrary::ToString(const USGDevice* SGDevice) +{ + return SGDevice->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceListKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceListKismetLibrary.cpp new file mode 100644 index 0000000..29d4497 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceListKismetLibrary.cpp @@ -0,0 +1,119 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGDeviceListKismetLibrary.h" + +#include "SGCore/SGDevice.h" +#include "SGCore/SGDeviceList.h" + +int32 USGDeviceListKismetLibrary::ActiveDevices() +{ + return FSGDeviceList::ActiveDevices(); +} + +bool USGDeviceListKismetLibrary::SenseCommRunning() +{ + return FSGDeviceList::SenseCommRunning(); +} + +void USGDeviceListKismetLibrary::Dispose() +{ + FSGDeviceList::Dispose(); +} + +void USGDeviceListKismetLibrary::Reinitialize() +{ + FSGDeviceList::Reinitialize(); +} + +TArray USGDeviceListKismetLibrary::GetDevices(UObject* WorldContextObject) +{ + return FSGDeviceList::GetDevices(WorldContextObject); +} + +TArray USGDeviceListKismetLibrary::GetDevices_TSubclassOfUSGDevice_DT( + UObject* WorldContextObject, const TSubclassOf& DeviceType) +{ + return FSGDeviceList::GetDevices(WorldContextObject, DeviceType); +} + +TArray USGDeviceListKismetLibrary::GetDevices_ESGDeviceType_DT( + UObject* WorldContextObject, const ESGDeviceType DeviceType) +{ + return FSGDeviceList::GetDevices(WorldContextObject, DeviceType); +} + +bool USGDeviceListKismetLibrary::GetSensorDataString(const int32 IpcIndex, const FString& IpcAddress, + FString& OutString) +{ + return FSGDeviceList::GetSensorDataString(IpcIndex, IpcAddress, OutString); +} + +bool USGDeviceListKismetLibrary::SendHaptics( + const int32 IpcIndex, const FString& IpcAddress, const int32 ChannelIndex, const FString& Commands) +{ + return FSGDeviceList::SendHaptics(IpcIndex, IpcAddress, ChannelIndex, Commands); +} + +FString USGDeviceListKismetLibrary::GetDeviceStringAt(const int32 IpcIndex, const FString& IpcAddress, + const int32 Index) +{ + return FSGDeviceList::GetDeviceStringAt(IpcIndex, IpcAddress, Index); +} + +FString USGDeviceListKismetLibrary::GetAddress(const int32 IpcIndex, const FString& IpcAddress) +{ + return FSGDeviceList::GetAddress(IpcIndex, IpcAddress); +} + +ESGConnectionType USGDeviceListKismetLibrary::GetConnectionType(const int32 IpcIndex, const FString& IpcAddress) +{ + return FSGDeviceList::GetConnectionType(IpcIndex, IpcAddress); +} + +bool USGDeviceListKismetLibrary::IsConnected(const int32 IpcIndex, const FString& IpcAddress) +{ + return FSGDeviceList::IsConnected(IpcIndex, IpcAddress); +} + +int32 USGDeviceListKismetLibrary::PacketsPerSecondReceived(const int32 IpcIndex, const FString& IpcAddress) +{ + return FSGDeviceList::PacketsPerSecondReceived(IpcIndex, IpcAddress); +} + +int32 USGDeviceListKismetLibrary::PacketsPerSecondSent(const int32 IpcIndex, const FString& IpcAddress) +{ + return FSGDeviceList::PacketsPerSecondSent(IpcIndex, IpcAddress); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceModelKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceModelKismetLibrary.cpp new file mode 100644 index 0000000..f54e697 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGDeviceModelKismetLibrary.cpp @@ -0,0 +1,94 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGDeviceModelKismetLibrary.h" + +#include "SGCore/SGDeviceModel.h" + +USGDeviceModel* USGDeviceModelKismetLibrary::MakeDeviceModel(UObject* WorldContextObject) +{ + return USGDeviceModel::NewDeviceModel(WorldContextObject); +} + +USGDeviceModel* USGDeviceModelKismetLibrary::MakeDeviceModel_I_HV_FV_SFV( + UObject* WorldContextObject, + const FString& Id, const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + return USGDeviceModel::NewDeviceModel(WorldContextObject, Id, HardwareVersion, FirmwareVersion, SubFirmwareVersion); +} + +TArray USGDeviceModelKismetLibrary::ParseFunctions(const int32 Value, const int32 Size) +{ + return USGDeviceModel::ParseFunctions(Value, Size); +} + +void USGDeviceModelKismetLibrary::ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion) +{ + USGDeviceModel::ParseFirmware(RawFirmware, OutMainVersion, OutSubVersion); +} + +FString USGDeviceModelKismetLibrary::GetDeviceId(const USGDeviceModel* DeviceModel) +{ + return DeviceModel->GetDeviceId(); +} + +FString USGDeviceModelKismetLibrary::GetHardwareVersion(const USGDeviceModel* DeviceModel) +{ + return DeviceModel->GetHardwareVersion(); +} + +int32 USGDeviceModelKismetLibrary::GetFirmwareVersion(const USGDeviceModel* DeviceModel) +{ + return DeviceModel->GetFirmwareVersion(); +} + +int32 USGDeviceModelKismetLibrary::GetSubFirmwareVersion(const USGDeviceModel* DeviceModel) +{ + return DeviceModel->GetSubFirmwareVersion(); +} + +bool USGDeviceModelKismetLibrary::FirmwareNewerThan(const USGDeviceModel* DeviceModel, + const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) +{ + return DeviceModel->FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGDeviceModelKismetLibrary::FirmwareOlderThan(const USGDeviceModel* DeviceModel, + const int32 FirmwareMain, const int32 FirmwareSub, + const bool bInclusive) +{ + return DeviceModel->FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandInterpolatorKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandInterpolatorKismetLibrary.cpp new file mode 100644 index 0000000..0bd24b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandInterpolatorKismetLibrary.cpp @@ -0,0 +1,97 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGHandInterpolatorKismetLibrary.h" + +#include "SGCore/SGHandInterpolator.h" +#include "SGUtils/SGArrayUtils.h" + +USGHandInterpolator* USGHandInterpolatorKismetLibrary::MakeHandInterpolator(UObject* WorldContextObject) +{ + return USGHandInterpolator::NewHandInterpolator(WorldContextObject); +} + +USGHandInterpolator* USGHandInterpolatorKismetLibrary::MakeHandInterpolator_bRH( + UObject* WorldContextObject, const bool bRightHanded) +{ + return USGHandInterpolator::NewHandInterpolator(WorldContextObject, bRightHanded); +} + +USGHandInterpolator* USGHandInterpolatorKismetLibrary::Deserialize( + UObject* WorldContextObject, const FString& SerializedString, const bool bRightHanded) +{ + return USGHandInterpolator::Deserialize(WorldContextObject, SerializedString, bRightHanded); +} + +float USGHandInterpolatorKismetLibrary::CalculateAngle_M_ESGFingerMovement_V_bAL( + const USGHandInterpolator* HandInterpolator, + const ESGFingerMovement Movement, const float Value, const bool bApplyLimits) +{ + return HandInterpolator->CalculateAngle(Movement, Value, bApplyLimits); +} + +float USGHandInterpolatorKismetLibrary::CalculateAngle_M_ESGFingerMovement_V_bAL( + const USGHandInterpolator* HandInterpolator, + const ESGThumbMovement Movement, const float Value, const bool bApplyLimits) +{ + return HandInterpolator->CalculateAngle(Movement, Value, bApplyLimits); +} + +TArray USGHandInterpolatorKismetLibrary::InterpolateHandAngles( + const USGHandInterpolator* HandInterpolator, + const TArray& Flexions, const TArray& Abductions, const float CmcTwist) const +{ + TArray> FlexionsNestedArray{ + FSGArrayUtils::FromNestedBPArray< + float, FSGFloatArray, &FSGFloatArray::FloatArray>(Flexions) + }; + + const TArray Angles{ + FSGArrayUtils::ToNestedBPArray( + HandInterpolator->InterpolateHandAngles(MoveTemp(FlexionsNestedArray), Abductions, CmcTwist)) + }; + + return Angles; +} + +bool USGHandInterpolatorKismetLibrary::Equals(const USGHandInterpolator* A, const USGHandInterpolator* B) +{ + return A->Equals(B); +} + +FString USGHandInterpolatorKismetLibrary::SGSerialize(const USGHandInterpolator* HandInterpolator) +{ + return HandInterpolator->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp new file mode 100644 index 0000000..1f8da29 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandLayerKismetLibrary.cpp @@ -0,0 +1,180 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGHandLayerKismetLibrary.h" + +#include "SGCore/SGCustomWaveform.h" +#include "SGCore/SGHandLayer.h" +#include "SGCore/SGHandPose.h" + +bool USGHandLayerKismetLibrary::DeviceConnected(const bool bRightHanded) +{ + return FSGHandLayer::DeviceConnected(bRightHanded); +} + +ESGDeviceType USGHandLayerKismetLibrary::GetDeviceType(const bool bRightHanded) +{ + return FSGHandLayer::GetDeviceType(bRightHanded); +} + +bool USGHandLayerKismetLibrary::GetFirstGloveHandedness() +{ + return FSGHandLayer::GetFirstGloveHandedness(); +} + +int32 USGHandLayerKismetLibrary::GlovesConnected() +{ + return FSGHandLayer::GlovesConnected(); +} + +bool USGHandLayerKismetLibrary::GetGloveInstance(UObject* WorldContextObject, + const bool bRightHanded, USGHapticGlove*& OutGlove) +{ + return FSGHandLayer::GetGloveInstance(WorldContextObject, bRightHanded, OutGlove); +} + +ESGHapticGloveCalibrationState USGHandLayerKismetLibrary::GetCalibrationState(const bool bRightHanded) +{ + return FSGHandLayer::GetCalibrationState(bRightHanded); +} + +FString USGHandLayerKismetLibrary::GetCalibrationInstructions(const bool bRightHanded) +{ + return FSGHandLayer::GetCalibrationInstructions(bRightHanded); +} + +void USGHandLayerKismetLibrary::ResetCalibration(const bool bRightHanded) +{ + FSGHandLayer::ResetCalibration(bRightHanded); +} + +void USGHandLayerKismetLibrary::EndCalibration(const bool bRightHanded) +{ + FSGHandLayer::EndCalibration(bRightHanded); +} + +bool USGHandLayerKismetLibrary::GetHandPose(UObject* WorldContextObject, + const bool bRightHanded, USGHandPose*& OutHandPose) +{ + return FSGHandLayer::GetHandPose(WorldContextObject, bRightHanded, OutHandPose); +} + +void USGHandLayerKismetLibrary::GetWristLocation(const bool bRightHanded, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + FSGHandLayer::GetWristLocation(bRightHanded, ReferencePosition, ReferenceRotation, TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGHandLayerKismetLibrary::StopAllHaptics(const bool bRightHanded) +{ + FSGHandLayer::StopAllHaptics(bRightHanded); +} + +bool USGHandLayerKismetLibrary::SendHaptics(const bool bRightHanded) +{ + return FSGHandLayer::SendHaptics(bRightHanded); +} + +bool USGHandLayerKismetLibrary::SupportsCustomWaveform(const bool bRightHanded, const ESGHapticLocation AtLocation) +{ + return FSGHandLayer::SupportsCustomWaveform(bRightHanded, AtLocation); +} + +bool USGHandLayerKismetLibrary::SendCustomWaveform( + const bool bRightHanded, USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + return FSGHandLayer::SendCustomWaveform(bRightHanded, OutWaveform, Location); +} + +bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_ForceFeedbackLevels(bRightHanded, Levels01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_ForceFeedbackLevel( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_ForceFeedbackLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevels( + const bool bRightHanded, const TArray& Levels01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevels(bRightHanded, Levels01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevel_bRH_F_L01_bSI( + const bool bRightHanded, const int32 Finger, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevel(bRightHanded, Finger, Level01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_VibroLevel_bRH_AL_L01_bSI( + const bool bRightHanded, const ESGHapticLocation AtLocation, const float Level01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_VibroLevel(bRightHanded, AtLocation, Level01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::SupportsWristSqueeze(const bool bRightHanded) +{ + return FSGHandLayer::SupportsWristSqueeze(bRightHanded); +} + +bool USGHandLayerKismetLibrary::QueueCommand_WristSqueeze( + const bool bRightHanded, const float SqueezeLevel01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_WristSqueeze(bRightHanded, SqueezeLevel01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::SupportsFlexionLocks(const bool bRightHanded) +{ + return FSGHandLayer::SupportsFlexionLocks(bRightHanded); +} + +bool USGHandLayerKismetLibrary::QueueCommand_FlexionLock( + const bool bRightHanded, const int32 Finger, const float Flexion01, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_FlexionLock(bRightHanded, Finger, Flexion01, bSendImmediate); +} + +bool USGHandLayerKismetLibrary::QueueCommand_ClearFlexionLock( + const bool bRightHanded, const int32 Finger, const bool bSendImmediate) +{ + return FSGHandLayer::QueueCommand_ClearFlexionLock(bRightHanded, Finger, bSendImmediate); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandPoseKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandPoseKismetLibrary.cpp new file mode 100644 index 0000000..5e90e59 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHandPoseKismetLibrary.cpp @@ -0,0 +1,183 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGHandPoseKismetLibrary.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGHandPose.h" +#include "SGUtils/SGArrayUtils.h" + +USGHandPose* USGHandPoseKismetLibrary::MakeHandPose(UObject* WorldContextObject) +{ + return USGHandPose::NewHandPose(WorldContextObject); +} + +USGHandPose* USGHandPoseKismetLibrary::MakeHandPose_bRH_JP_FSGQuatArray_JR_HA( + UObject* WorldContextObject, + const bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) +{ + return USGHandPose::NewHandPose(WorldContextObject, bRightHanded, JointPositions, JointRotations, HandAngles); +} + +USGHandPose* USGHandPoseKismetLibrary::MakeHandPose_bRH_JP_FSGRotatorArray_JR_HA( + UObject* WorldContextObject, + const bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles) +{ + return USGHandPose::NewHandPose(WorldContextObject, bRightHanded, JointPositions, JointRotations, HandAngles); +} + +USGHandPose* USGHandPoseKismetLibrary::Deserialize(UObject* WorldContextObject, const FString& SerializedString) +{ + return USGHandPose::Deserialize(WorldContextObject, SerializedString); +} + +USGHandPose* USGHandPoseKismetLibrary::FromHandAngles_HA_bRH_HD( + UObject* WorldContextObject, + const TArray& HandAngles, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + TArray> HandAnglesNestedArray{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + return USGHandPose::FromHandAngles(WorldContextObject, MoveTemp(HandAnglesNestedArray), bRightHanded, + HandDimensions); +} + +USGHandPose* USGHandPoseKismetLibrary::FromHandAngles_HA_bRH( + UObject* WorldContextObject, const TArray& HandAngles, const bool bRightHanded) +{ + TArray> HandAnglesNestedArray{ + FSGArrayUtils::FromNestedBPArray(HandAngles) + }; + return USGHandPose::FromHandAngles(WorldContextObject, MoveTemp(HandAnglesNestedArray), bRightHanded); +} + +USGHandPose* USGHandPoseKismetLibrary::DefaultIdle_bRH_HD( + UObject* WorldContextObject, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + return USGHandPose::DefaultIdle(WorldContextObject, bRightHanded, HandDimensions); +} + +USGHandPose* USGHandPoseKismetLibrary::DefaultIdle_bRH(UObject* WorldContextObject, const bool bRightHanded) +{ + return USGHandPose::DefaultIdle(WorldContextObject, bRightHanded); +} + +USGHandPose* USGHandPoseKismetLibrary::FlatHand_bRH_HD( + UObject* WorldContextObject, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + return USGHandPose::FlatHand(WorldContextObject, bRightHanded, HandDimensions); +} + +USGHandPose* USGHandPoseKismetLibrary::FlatHand_bRH(UObject* WorldContextObject, const bool bRightHanded) +{ + return USGHandPose::FlatHand(WorldContextObject, bRightHanded); +} + +USGHandPose* USGHandPoseKismetLibrary::ThumbsUp_bRH_HD( + UObject* WorldContextObject, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + return USGHandPose::ThumbsUp(WorldContextObject, bRightHanded, HandDimensions); +} + +USGHandPose* USGHandPoseKismetLibrary::ThumbsUp_bRH(UObject* WorldContextObject, const bool bRightHanded) +{ + return USGHandPose::ThumbsUp(WorldContextObject, bRightHanded); +} + +USGHandPose* USGHandPoseKismetLibrary::Fist_bRH_HD( + UObject* WorldContextObject, const bool bRightHanded, const USGBasicHandModel* HandDimensions) +{ + return USGHandPose::Fist(WorldContextObject, bRightHanded, HandDimensions); +} + +USGHandPose* USGHandPoseKismetLibrary::Fist_bRH(UObject* WorldContextObject, const bool bRightHanded) +{ + return USGHandPose::Fist(WorldContextObject, bRightHanded); +} + +bool USGHandPoseKismetLibrary::IsRight(const USGHandPose* HandPose) +{ + return HandPose->IsRight(); +} + +TArray USGHandPoseKismetLibrary::GetJointPositions(const USGHandPose* HandPose) +{ + return FSGArrayUtils::ToNestedBPArray(HandPose->GetJointPositions()); +} + +TArray USGHandPoseKismetLibrary::GetJointRotationsQ(const USGHandPose* HandPose) +{ + return FSGArrayUtils::ToNestedBPArray(HandPose->GetJointRotationsQ()); +} + +TArray USGHandPoseKismetLibrary::GetJointRotations(const USGHandPose* HandPose) +{ + return FSGArrayUtils::ToNestedBPArray(HandPose->GetJointRotations()); +} + +TArray USGHandPoseKismetLibrary::GetHandAngles(const USGHandPose* HandPose) +{ + return FSGArrayUtils::ToNestedBPArray(HandPose->GetHandAngles()); +} + +bool USGHandPoseKismetLibrary::Equals(const USGHandPose* A, const USGHandPose* B) +{ + return A->Equals(B); +} + +float USGHandPoseKismetLibrary::GetNormalizedFlexion_F_bC01( + const USGHandPose* HandPose, const ESGFinger Finger, const bool bClamp01) +{ + return HandPose->GetNormalizedFlexion(Finger, bClamp01); +} + +TArray USGHandPoseKismetLibrary::GetNormalizedFlexion_bC01( + const USGHandPose* HandPose, const bool bClamp01) +{ + return HandPose->GetNormalizedFlexion(bClamp01); +} + +FString USGHandPoseKismetLibrary::ToString(const USGHandPose* HandPose, const bool bShortFormat) +{ + return HandPose->ToString(bShortFormat); +} + +FString USGHandPoseKismetLibrary::SGSerialize(const USGHandPose* HandPose) +{ + return HandPose->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticChannelInfoKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticChannelInfoKismetLibrary.cpp new file mode 100644 index 0000000..4e55f6f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticChannelInfoKismetLibrary.cpp @@ -0,0 +1,109 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGHapticChannelInfoKismetLibrary.h" + +#include "SGCore/SGHapticChannelInfo.h" + +USGHapticChannelInfo* USGHapticChannelInfoKismetLibrary::MakeHapticChannelInfo(UObject* WorldContextObject) +{ + return USGHapticChannelInfo::NewHapticChannelInfo(WorldContextObject); +} + +USGHapticChannelInfo* USGHapticChannelInfoKismetLibrary::MakeHapticChannelInfo_SI_FAFI( + UObject* WorldContextObject, + const TArray& StreamIndex, const TArray& FireAndForgetIndex) +{ + return USGHapticChannelInfo::NewHapticChannelInfo(WorldContextObject, StreamIndex, FireAndForgetIndex); +} + +FString USGHapticChannelInfoKismetLibrary::GenerateAddress(const int32 DeviceIndex, const int32 ChannelIndex) +{ + return USGHapticChannelInfo::GenerateAddress(DeviceIndex, ChannelIndex); +} + +USGHapticChannelInfo* USGHapticChannelInfoKismetLibrary::Parse(UObject* WorldContextObject, const FString& IpcString) +{ + return USGHapticChannelInfo::Parse(WorldContextObject, IpcString); +} + +int32 USGHapticChannelInfoKismetLibrary::GetStreamingType() +{ + return USGHapticChannelInfo::GetStreamingType(); +} + +int32 USGHapticChannelInfoKismetLibrary::GetFireAndForgetType() +{ + return USGHapticChannelInfo::GetFireAndForgetType(); +} + +int32 USGHapticChannelInfoKismetLibrary::GetStreamChannelCount(const USGHapticChannelInfo* HapticChannelInfo) +{ + return HapticChannelInfo->GetStreamChannelCount(); +} + +int32 USGHapticChannelInfoKismetLibrary::GetFireAndForgetChannelCount(const USGHapticChannelInfo* HapticChannelInfo) +{ + return HapticChannelInfo->GetFireAndForgetChannelCount(); +} + +int32 USGHapticChannelInfoKismetLibrary::GetTotalChannelCount(const USGHapticChannelInfo* HapticChannelInfo) +{ + return HapticChannelInfo->GetTotalChannelCount(); +} + +FString USGHapticChannelInfoKismetLibrary::GetAddress_Unguarded(const USGHapticChannelInfo* HapticChannelInfo, + const ESGHapticChannelType Type, const int32 TypeIndex) +{ + return HapticChannelInfo->GetAddress_Unguarded(Type, TypeIndex); +} + +void USGHapticChannelInfoKismetLibrary::GetIpcParams_Unguarded(USGHapticChannelInfo* HapticChannelInfo, + const ESGHapticChannelType Type, const int32 TypeIndex, + int32& OutIndex, FString& OutAddressString) +{ + HapticChannelInfo->GetIpcParams_Unguarded(Type, TypeIndex, OutIndex, OutAddressString); +} + +void USGHapticChannelInfoKismetLibrary::RegenerateAddresses(USGHapticChannelInfo* HapticChannelInfo, + const int32 ForDeviceIndex) +{ + HapticChannelInfo->RegenerateAddresses(ForDeviceIndex); +} + +TArray USGHapticChannelInfoKismetLibrary::GetAllAddresses(const USGHapticChannelInfo* HapticChannelInfo) +{ + return HapticChannelInfo->GetAllAddresses(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp new file mode 100644 index 0000000..6bc8f35 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGHapticGloveKismetLibrary.cpp @@ -0,0 +1,259 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGHapticGloveKismetLibrary.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGHapticGlove.h" +#include "SGUtils/SGArrayUtils.h" + +TArray USGHapticGloveKismetLibrary::GetHapticGloves(UObject* WorldContextObject, + const bool bConnectedOnly) +{ + return USGHapticGlove::GetHapticGloves(WorldContextObject, bConnectedOnly); +} + +bool USGHapticGloveKismetLibrary::GetGlove_OutG(UObject* WorldContextObject, USGHapticGlove*& OutGlove) +{ + return USGHapticGlove::GetGlove(WorldContextObject, OutGlove); +} + +bool USGHapticGloveKismetLibrary::GetGlove_bRH_OutG(UObject* WorldContextObject, + const bool bRightHanded, USGHapticGlove*& OutGlove) +{ + return USGHapticGlove::GetGlove(WorldContextObject, bRightHanded, OutGlove); +} + +FString USGHapticGloveKismetLibrary::ToString_S(const ESGHapticGloveCalibrationState State) +{ + return USGHapticGlove::ToString(State); +} + +FString USGHapticGloveKismetLibrary::ToString_L(const ESGHapticLocation Location) +{ + return USGHapticGlove::ToString(Location); +} + +ESGDeviceType USGHapticGloveKismetLibrary::GetDeviceType(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetDeviceType(); +} + +FString USGHapticGloveKismetLibrary::GetDeviceId(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetDeviceId(); +} + +FString USGHapticGloveKismetLibrary::GetHardwareVersion(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetHardwareVersion(); +} + +int32 USGHapticGloveKismetLibrary::GetFirmwareVersion(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetFirmwareVersion(); +} + +int32 USGHapticGloveKismetLibrary::GetSubFirmwareVersion(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetSubFirmwareVersion(); +} + +bool USGHapticGloveKismetLibrary::IsRight(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->IsRight(); +} + +bool USGHapticGloveKismetLibrary::GetImuRotation_FQuat_OutI(USGHapticGlove* HapticGlove, FQuat& OutImu) +{ + return HapticGlove->GetImuRotation(OutImu); +} + +bool USGHapticGloveKismetLibrary::GetImuRotation_FRotator_OutI(USGHapticGlove* HapticGlove, FRotator& OutImu) +{ + return HapticGlove->GetImuRotation(OutImu); +} + +bool USGHapticGloveKismetLibrary::GetHandPose_HG_OutHP( + UObject* WorldContextObject, + const USGHapticGlove* HapticGlove, const USGBasicHandModel* HandGeometry, USGHandPose*& OutHandPose) +{ + return HapticGlove->GetHandPose(WorldContextObject, HandGeometry, OutHandPose); +} + +bool USGHapticGloveKismetLibrary::GetHandPose_OutHP( + UObject* WorldContextObject, USGHapticGlove* HapticGlove, USGHandPose*& OutHandPose) +{ + return HapticGlove->GetHandPose(WorldContextObject, OutHandPose); +} + +bool USGHapticGloveKismetLibrary::GetHandAngles(const USGHapticGlove* HapticGlove, + TArray& OutHandAngles) +{ + TArray> HandAnglesNestedArray; + const bool bResult = HapticGlove->GetHandAngles(HandAnglesNestedArray); + OutHandAngles = FSGArrayUtils::ToNestedBPArray(MoveTemp(HandAnglesNestedArray)); + return bResult; +} + +USGBasicHandModel* USGHapticGloveKismetLibrary::GetHandGeometry(UObject* WorldContextObject, + const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetHandGeometry(WorldContextObject); +} + +void USGHapticGloveKismetLibrary::SetHandGeometry(USGHapticGlove* HapticGlove, const USGBasicHandModel* HandGeometry) +{ + HapticGlove->SetHandGeometry(HandGeometry); +} + +ESGHapticGloveCalibrationState USGHapticGloveKismetLibrary::GetCalibrationState(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetCalibrationState(); +} + +void USGHapticGloveKismetLibrary::EndCalibration(USGHapticGlove* HapticGlove) +{ + HapticGlove->EndCalibration(); +} + +void USGHapticGloveKismetLibrary::ResetCalibration(USGHapticGlove* HapticGlove) +{ + HapticGlove->ResetCalibration(); +} + +FString USGHapticGloveKismetLibrary::GetCalibrationInstruction(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->GetCalibrationInstruction(); +} + +void USGHapticGloveKismetLibrary::StopHaptics(USGHapticGlove* HapticGlove) +{ + return HapticGlove->StopHaptics(); +} + +void USGHapticGloveKismetLibrary::StopVibrations(USGHapticGlove* HapticGlove) +{ + return HapticGlove->StopVibrations(); +} + +bool USGHapticGloveKismetLibrary::SendHaptics(USGHapticGlove* HapticGlove) +{ + return HapticGlove->SendHaptics(); +} + +bool USGHapticGloveKismetLibrary::SupportsCustomWaveform(const USGHapticGlove* HapticGlove, + const ESGHapticLocation AtLocation) +{ + return HapticGlove->SupportsCustomWaveform(AtLocation); +} + +bool USGHapticGloveKismetLibrary::SendCustomWaveform(USGHapticGlove* HapticGlove, + USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + return HapticGlove->SendCustomWaveform(OutWaveform, Location); +} + +bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevels(USGHapticGlove* HapticGlove, const TArray& Levels01) +{ + return HapticGlove->QueueForceFeedbackLevels(Levels01); +} + +bool USGHapticGloveKismetLibrary::QueueForceFeedbackLevel(USGHapticGlove* HapticGlove, + const int32 Finger, const float Level01) +{ + return HapticGlove->QueueForceFeedbackLevel(Finger, Level01); +} + +bool USGHapticGloveKismetLibrary::QueueVibroLevels(USGHapticGlove* HapticGlove, const TArray& Levels01) +{ + return HapticGlove->QueueVibroLevels(Levels01); +} + +bool USGHapticGloveKismetLibrary::QueueVibroLevel(USGHapticGlove* HapticGlove, + const ESGHapticLocation Location, const float Level01) +{ + return HapticGlove->QueueVibroLevel(Location, Level01); +} + +void USGHapticGloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_OutWP_OutWR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + HapticGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGHapticGloveKismetLibrary::GetWristLocation_RP_FRotator_RR_TH_OutWP_OutWR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + HapticGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGHapticGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_OutGR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + HapticGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGHapticGloveKismetLibrary::GetGloveLocation_RP_FRotator_RR_TH_OutGP_OutGR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + HapticGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +FString USGHapticGloveKismetLibrary::ToString(const USGHapticGlove* HapticGlove) +{ + return HapticGlove->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGInterpolationSetKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGInterpolationSetKismetLibrary.cpp new file mode 100644 index 0000000..2fa23d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGInterpolationSetKismetLibrary.cpp @@ -0,0 +1,148 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGInterpolationSetKismetLibrary.h" + +#include "SGCore/SGInterpolationSet.h" + +USGInterpolationSet* USGInterpolationSetKismetLibrary::MakeInterpolationSet(UObject* WorldContextObject) +{ + return USGInterpolationSet::NewInterpolationSet(WorldContextObject); +} + +USGInterpolationSet* USGInterpolationSetKismetLibrary::MakeInterpolationSet_F1_F2_T1_T2( + UObject* WorldContextObject, const float From1, const float From2, const float To1, const float To2) +{ + return USGInterpolationSet::NewInterpolationSet(WorldContextObject, From1, From2, To1, To2); +} + +USGInterpolationSet* USGInterpolationSetKismetLibrary::MakeInterpolationSet_F1_F2_T1_T2_M_M( + UObject* WorldContextObject, + const float From1, const float From2, const float To1, const float To2, const float Min, const float Max) +{ + return USGInterpolationSet::NewInterpolationSet(WorldContextObject, From1, From2, To1, To2, Min, Max); +} + +USGInterpolationSet* USGInterpolationSetKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGInterpolationSet::Deserialize(WorldContextObject, SerializedString); +} + +float USGInterpolationSetKismetLibrary::GetX0(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetX0(); +} + +void USGInterpolationSetKismetLibrary::SetX0(USGInterpolationSet* InterpolationSet, const float X0) +{ + InterpolationSet->SetX0(X0); +} + +float USGInterpolationSetKismetLibrary::GetX1(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetX1(); +} + +void USGInterpolationSetKismetLibrary::SetX1(USGInterpolationSet* InterpolationSet, const float X1) +{ + InterpolationSet->SetX1(X1); +} + +float USGInterpolationSetKismetLibrary::GetY0(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetY0(); +} + +void USGInterpolationSetKismetLibrary::SetY0(USGInterpolationSet* InterpolationSet, const float Y0) +{ + InterpolationSet->SetY0(Y0); +} + +float USGInterpolationSetKismetLibrary::GetY1(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetY1(); +} + +void USGInterpolationSetKismetLibrary::SetY1(USGInterpolationSet* InterpolationSet, const float Y1) +{ + InterpolationSet->SetY1(Y1); +} + +float USGInterpolationSetKismetLibrary::GetMin(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetMin(); +} + +void USGInterpolationSetKismetLibrary::SetMin(USGInterpolationSet* InterpolationSet, const float Min) +{ + InterpolationSet->SetMin(Min); +} + +float USGInterpolationSetKismetLibrary::GetMax(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->GetMax(); +} + +void USGInterpolationSetKismetLibrary::SetMax(USGInterpolationSet* InterpolationSet, const float Max) +{ + InterpolationSet->SetMax(Max); +} + +int32 USGInterpolationSetKismetLibrary::Get(const USGInterpolationSet* InterpolationSet, const float Value, + const bool bLimit, const bool bNormalizeAngle) +{ + return InterpolationSet->Get(Value, bLimit, bNormalizeAngle); +} + +bool USGInterpolationSetKismetLibrary::Equals(const USGInterpolationSet* A, const USGInterpolationSet* B) +{ + return A->Equals(B); +} + +FString USGInterpolationSetKismetLibrary::ToString(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->ToString(); +} + +FString USGInterpolationSetKismetLibrary::ToString_bL(const USGInterpolationSet* InterpolationSet, const bool bLimits) +{ + return InterpolationSet->ToString(bLimits); +} + +FString USGInterpolationSetKismetLibrary::SGSerialize(const USGInterpolationSet* InterpolationSet) +{ + return InterpolationSet->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGJointKinematicsKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGJointKinematicsKismetLibrary.cpp new file mode 100644 index 0000000..f13ed2a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGJointKinematicsKismetLibrary.cpp @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGJointKinematicsKismetLibrary.h" + +#include "SGCore/SGJointKinematics.h" + +bool USGJointKinematicsKismetLibrary::ForwardKinematics_SP_FQuat_SR_JL_JA_OutNP_TArrayFQuat_OutNR( + const FVector& StartPosition, const FQuat& StartRotation, const TArray& JointLengths, + const TArray& JointAngles, TArray& OutNewPositions, TArray& OutNewRotations) +{ + return FSGJointKinematics::ForwardKinematics(StartPosition, StartRotation, JointLengths, JointAngles, + OutNewPositions, OutNewRotations); +} + +bool USGJointKinematicsKismetLibrary::ForwardKinematics_SP_FRotator_SR_JL_JA_OutNP_TArrayFRotator_OutNR( + const FVector& StartPosition, const FRotator& StartRotation, const TArray& JointLengths, + const TArray& JointAngles, TArray& OutNewPositions, TArray& OutNewRotations) +{ + return FSGJointKinematics::ForwardKinematics(StartPosition, StartRotation, JointLengths, JointAngles, + OutNewPositions, OutNewRotations); +} + +bool +USGJointKinematicsKismetLibrary::ForwardKinematics_P_F_JA_OutNP_TArrayFQuat_OutNR( + const USGBasicHandModel* Profile, const ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + return FSGJointKinematics::ForwardKinematics(Profile, Finger, JointAngles, OutNewPositions, OutNewRotations); +} + +bool +USGJointKinematicsKismetLibrary::ForwardKinematics_P_F_JA_OutNP_TArrayFRotator_OutNR( + const USGBasicHandModel* Profile, const ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations) +{ + return FSGJointKinematics::ForwardKinematics(Profile, Finger, JointAngles, OutNewPositions, OutNewRotations); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGLibraryKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGLibraryKismetLibrary.cpp new file mode 100644 index 0000000..915e398 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGLibraryKismetLibrary.cpp @@ -0,0 +1,53 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGLibraryKismetLibrary.h" + +#include "SGCore/SGLibrary.h" + +FString USGLibraryKismetLibrary::GetVersion() +{ + return FSGLibrary::GetVersion(); +} + +FString USGLibraryKismetLibrary::GetBackendVersion() +{ + return FSGLibrary::GetBackendVersion(); +} + +FString USGLibraryKismetLibrary::GetSGConnectVersion() +{ + return FSGLibrary::GetSGConnectVersion(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp new file mode 100644 index 0000000..74830a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveKismetLibrary.cpp @@ -0,0 +1,389 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGNova2GloveKismetLibrary.h" + +#include "SGCore/SGHandPose.h" +#include "SGCore/SGNova2Glove.h" +#include "SGCore/SGNova2GloveSensorData.h" +#include "SGUtils/SGArrayUtils.h" + +USGDevice* USGNova2GloveKismetLibrary::Parse(UObject* WorldContextObject, const FString& ConstantsString) +{ + return USGNova2Glove::Parse(WorldContextObject, ConstantsString); +} + +TArray USGNova2GloveKismetLibrary::GetNova2Gloves(UObject* WorldContextObject) +{ + return USGNova2Glove::GetNova2Gloves(WorldContextObject); +} + +bool USGNova2GloveKismetLibrary::GetNova2Glove_OutG(UObject* WorldContextObject, USGNova2Glove*& OutGlove) +{ + return USGNova2Glove::GetNova2Glove(WorldContextObject, OutGlove); +} + +bool USGNova2GloveKismetLibrary::GetNova2Glove_bRH_OutG(UObject* WorldContextObject, + const bool bRightHanded, USGNova2Glove*& OutGlove) +{ + return USGNova2Glove::GetNova2Glove(WorldContextObject, bRightHanded, OutGlove); +} + +void USGNova2GloveKismetLibrary::CalculateGloveLocation_RP_FQuat_RR_TH_bRH_HW_OutGP_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + USGNova2Glove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, HardwareVersion, + OutGlovePosition, OutGloveRotation); +} + +void USGNova2GloveKismetLibrary::CalculateGloveLocation_RP_FRotator_RR_TH_bRH_HW_OutGP_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + USGNova2Glove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, HardwareVersion, + OutGlovePosition, OutGloveRotation); +} + +void USGNova2GloveKismetLibrary::CalculateWristLocation_RP_FQuat_RR_TH_bRH_HW_OutWP_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + USGNova2Glove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, HardwareVersion, + OutWristPosition, OutWristRotation); +} + +void USGNova2GloveKismetLibrary::CalculateWristLocation_RP_FRotator_RR_TH_bRH_HW_OutWP_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + USGNova2Glove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, HardwareVersion, + OutWristPosition, OutWristRotation); +} + +FString USGNova2GloveKismetLibrary::GetStreamByte() +{ + return FString::Printf(TEXT("%c"), USGNova2Glove::GetStreamByte()); +} + +TArray USGNova2GloveKismetLibrary::GetNova2SensorRanges() +{ + return USGNova2Glove::GetNova2SensorRanges(); +} + +TArray USGNova2GloveKismetLibrary::ToNormalizedValues_SD(const USGNova2GloveSensorData* SensorData) +{ + return USGNova2Glove::ToNormalizedValues(SensorData); +} + +TArray USGNova2GloveKismetLibrary::ToNormalizedValues_SD_OutSN( + UObject* WorldContextObject, + const USGNova2GloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer) +{ + return USGNova2Glove::ToNormalizedValues(WorldContextObject, SensorData, OutSensorNormalizer); +} + +TArray USGNova2GloveKismetLibrary::CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator, const bool bInfluenceIndex) +{ + const TArray HandAngles{ + FSGArrayUtils::ToNestedBPArray( + USGNova2Glove::CalculateHandAngles(NormalizedValues, Interpolator, bInfluenceIndex)) + }; + return HandAngles; +} + +TArray USGNova2GloveKismetLibrary::ToNormalizedAngles( + const TArray& NormalizedData, const USGNovaGloveInfo* GloveInfo) +{ + return FSGArrayUtils::ToNestedBPArray( + USGNova2Glove::ToNormalizedAngles(NormalizedData, GloveInfo)); +} + +ESGDeviceType USGNova2GloveKismetLibrary::GetDeviceType(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetDeviceType(); +} + +FString USGNova2GloveKismetLibrary::GetDeviceId(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetDeviceId(); +} + +FString USGNova2GloveKismetLibrary::GetHardwareVersion(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetHardwareVersion(); +} + +int32 USGNova2GloveKismetLibrary::GetFirmwareVersion(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetFirmwareVersion(); +} + +int32 USGNova2GloveKismetLibrary::GetSubFirmwareVersion(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetSubFirmwareVersion(); +} + +bool USGNova2GloveKismetLibrary::HasBattery(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->HasBattery(); +} + +bool USGNova2GloveKismetLibrary::IsCharging(USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->IsCharging(); +} + +bool USGNova2GloveKismetLibrary::GetBatteryLevel(USGNova2Glove* Nova2Glove, float& OutBatteryLevel) +{ + return Nova2Glove->GetBatteryLevel(OutBatteryLevel); +} + +bool USGNova2GloveKismetLibrary::IsRight(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->IsRight(); +} + +bool USGNova2GloveKismetLibrary::GetImuRotation_FQuat_OutI(USGNova2Glove* Nova2Glove, FQuat& OutImu) +{ + return Nova2Glove->GetImuRotation(OutImu); +} + +bool USGNova2GloveKismetLibrary::GetImuRotation_FRotator_OutI(USGNova2Glove* Nova2Glove, FRotator& OutImu) +{ + return Nova2Glove->GetImuRotation(OutImu); +} + +bool USGNova2GloveKismetLibrary::GetHandPose( + UObject* WorldContextObject, + USGNova2Glove* Nova2Glove, const USGBasicHandModel* HandModel, USGHandPose*& OutHandPose) +{ + return Nova2Glove->GetHandPose(WorldContextObject, HandModel, OutHandPose); +} + +bool USGNova2GloveKismetLibrary::GetHandAngles(const USGNova2Glove* Nova2Glove, TArray& OutHandAngles) +{ + TArray> HandAnglesNestedArray; + const bool bResult = Nova2Glove->GetHandAngles(HandAnglesNestedArray); + OutHandAngles = FSGArrayUtils::ToNestedBPArray(MoveTemp(HandAnglesNestedArray)); + return bResult; +} + +ESGHapticGloveCalibrationState USGNova2GloveKismetLibrary::GetCalibrationState(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetCalibrationState(); +} + +void USGNova2GloveKismetLibrary::EndCalibration(USGNova2Glove* Nova2Glove) +{ + Nova2Glove->EndCalibration(); +} + +void USGNova2GloveKismetLibrary::ResetCalibration(USGNova2Glove* Nova2Glove) +{ + Nova2Glove->ResetCalibration(); +} + +void USGNova2GloveKismetLibrary::StopHaptics(USGNova2Glove* Nova2Glove) +{ + Nova2Glove->StopHaptics(); +} + +void USGNova2GloveKismetLibrary::StopVibrations(USGNova2Glove* Nova2Glove) +{ + Nova2Glove->StopVibrations(); +} + +bool USGNova2GloveKismetLibrary::SendHaptics(USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->SendHaptics(); +} + +bool USGNova2GloveKismetLibrary::SupportsCustomWaveform(const USGNova2Glove* Nova2Glove, + const ESGHapticLocation AtLocation) +{ + return Nova2Glove->SupportsCustomWaveform(AtLocation); +} + +bool USGNova2GloveKismetLibrary::SendCustomWaveform(USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + return Nova2Glove->SendCustomWaveform(OutWaveform, Location); +} + +bool USGNova2GloveKismetLibrary::QueueForceFeedbackLevels(USGNova2Glove* Nova2Glove, const TArray& Levels01) +{ + return Nova2Glove->QueueForceFeedbackLevels(Levels01); +} + +bool USGNova2GloveKismetLibrary::QueueForceFeedbackLevel( + USGNova2Glove* Nova2Glove, const int32 Finger, const float Level01) +{ + return Nova2Glove->QueueForceFeedbackLevel(Finger, Level01); +} + +bool USGNova2GloveKismetLibrary::QueueVibroLevels(USGNova2Glove* Nova2Glove, const TArray& Amplitudes) +{ + return Nova2Glove->QueueVibroLevels(Amplitudes); +} + +bool USGNova2GloveKismetLibrary::QueueVibroLevel(USGNova2Glove* Nova2Glove, + const ESGHapticLocation Location, const float Level01) +{ + return Nova2Glove->QueueVibroLevel(Location, Level01); +} + +void USGNova2GloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + Nova2Glove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGNova2GloveKismetLibrary::GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + Nova2Glove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGNova2GloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + Nova2Glove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGNova2GloveKismetLibrary::GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + Nova2Glove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +USGNovaGloveInfo* USGNova2GloveKismetLibrary::GetGloveInfo(UObject* WorldContextObject, const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->GetGloveInfo(WorldContextObject); +} + +bool USGNova2GloveKismetLibrary::DoesIndexInfluenceOthers(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->DoesIndexInfluenceOthers(); +} + +void USGNova2GloveKismetLibrary::SetIndexInfluencesOthers(USGNova2Glove* Nova2Glove, const bool bInfluenceOthers) +{ + Nova2Glove->SetIndexInfluencesOthers(bInfluenceOthers); +} + +bool USGNova2GloveKismetLibrary::SupportsOnBoardNormalization(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->SupportsOnBoardNormalization(); +} + +bool USGNova2GloveKismetLibrary::GetSensorData( + UObject* WorldContextObject, USGNova2Glove* Nova2Glove, USGNova2GloveSensorData*& OutSensorData) +{ + return Nova2Glove->GetSensorData(WorldContextObject, OutSensorData); +} + +bool USGNova2GloveKismetLibrary::GetNormalizedInput(const USGNova2Glove* Nova2Glove, TArray& OutNormalizedValues) +{ + return Nova2Glove->GetNormalizedInput(OutNormalizedValues); +} + +bool USGNova2GloveKismetLibrary::SendRawData(USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->SendRawData(); +} + +bool USGNova2GloveKismetLibrary::SendNormalizedData(USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->SendNormalizedData(); +} + +ESGNova2VibroMotor USGNova2GloveKismetLibrary::ToNovaMotor(const USGNova2Glove* Nova2Glove, + const ESGHapticLocation Location) +{ + return Nova2Glove->ToNovaMotor(Location); +} + +int32 USGNova2GloveKismetLibrary::ChannelIndex(const USGNova2Glove* Nova2Glove, const ESGNova2VibroMotor Motor) +{ + return Nova2Glove->ChannelIndex(Motor); +} + +void USGNova2GloveKismetLibrary::ValidateWaveform(const USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, const ESGNova2VibroMotor Motor) +{ + Nova2Glove->ValidateWaveform(OutWaveform, Motor); +} + +bool USGNova2GloveKismetLibrary::SendCustomWaveform_Nova2( + USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, const ESGNova2VibroMotor Motor, const bool bValidateWaveform) +{ + return Nova2Glove->SendCustomWaveform_Nova2(OutWaveform, Motor, bValidateWaveform); +} + +FString USGNova2GloveKismetLibrary::ToString(const USGNova2Glove* Nova2Glove) +{ + return Nova2Glove->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.cpp new file mode 100644 index 0000000..d093a51 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.cpp @@ -0,0 +1,131 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.h" + +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCore/SGNova2GloveSensorData.h" +#include "SGUtils/SGArrayUtils.h" + +USGNova2GloveSensorData* USGNova2GloveSensorDataKismetLibrary::MakeNova2GloveSensorData(UObject* WorldContextObject) +{ + return USGNova2GloveSensorData::NewNova2GloveSensorData(WorldContextObject); +} + +USGNova2GloveSensorData* USGNova2GloveSensorDataKismetLibrary::MakeNova2GloveSensorData_NS_V_PV_FQuat_IR_bIP_BL_bC( + UObject* WorldContextObject, const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + return USGNova2GloveSensorData::NewNova2GloveSensorData( + WorldContextObject, + NormalizationState, Values, ParsedValues, ImuRotation, bImuParsed, BatteryLevel, bCharging); +} + +USGNova2GloveSensorData* USGNova2GloveSensorDataKismetLibrary::MakeNova2GloveSensorData_NS_V_PV_FRotator_IR_bIP_BL_b( + UObject* WorldContextObject, const ESGNormalizationState NormalizationState, + const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + return USGNova2GloveSensorData::NewNova2GloveSensorData( + WorldContextObject, + NormalizationState, Values, ParsedValues, ImuRotation, bImuParsed, BatteryLevel, bCharging); +} + +USGNova2GloveSensorData* USGNova2GloveSensorDataKismetLibrary::Parse( + UObject* WorldContextObject, const FString& RawData, const USGNovaGloveInfo* GloveInfo) +{ + return USGNova2GloveSensorData::Parse(WorldContextObject, RawData, GloveInfo); +} + +ESGNormalizationState USGNova2GloveSensorDataKismetLibrary::GetSensorState( + const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->GetSensorState(); +} + +TArray USGNova2GloveSensorDataKismetLibrary::GetSensorValues( + const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return FSGArrayUtils::ToNestedBPArray(Nova2GloveSensorData->GetSensorValues()); +} + +float USGNova2GloveSensorDataKismetLibrary::GetSensorValue( + const USGNova2GloveSensorData* Nova2GloveSensorData, + const ESGFinger Finger, const ESGNova2SensorLocation Location) +{ + return Nova2GloveSensorData->GetSensorValue(Finger, Location); +} + +int32 USGNova2GloveSensorDataKismetLibrary::GetParsedValues(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->GetParsedValues(); +} + +FQuat USGNova2GloveSensorDataKismetLibrary::GetImuRotation_FQuat(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->GetImuRotationQ(); +} + +FRotator USGNova2GloveSensorDataKismetLibrary::GetImuRotation_FRotator( + const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->GetImuRotation(); +} + +bool USGNova2GloveSensorDataKismetLibrary::IsImuParsed(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->IsImuParsed(); +} + +float USGNova2GloveSensorDataKismetLibrary::GetBatteryLevel(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->GetBatteryLevel(); +} + +bool USGNova2GloveSensorDataKismetLibrary::IsCharging(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->IsCharging(); +} + +bool USGNova2GloveSensorDataKismetLibrary::Equals(const USGNova2GloveSensorData* A, const USGNova2GloveSensorData* B) +{ + return A->Equals(B); +} + +FString USGNova2GloveSensorDataKismetLibrary::ToString(const USGNova2GloveSensorData* Nova2GloveSensorData) +{ + return Nova2GloveSensorData->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveInfoKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveInfoKismetLibrary.cpp new file mode 100644 index 0000000..b1553aa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveInfoKismetLibrary.cpp @@ -0,0 +1,135 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGNovaGloveInfoKismetLibrary.h" + +#include "SGCore/SGNovaGloveInfo.h" + +USGNovaGloveInfo* USGNovaGloveInfoKismetLibrary::MakeNovaGloveInfo(UObject* WorldContextObject) +{ + return USGNovaGloveInfo::NewNovaGloveInfo(WorldContextObject); +} + +USGNovaGloveInfo* USGNovaGloveInfoKismetLibrary::MakeNovaGloveInfo_DI_HV_FV_SFV_bRH_IC_NOS( + UObject* WorldContextObject, + const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FQuat& ImuCorrection, const int32 NumberOfSensors) +{ + return USGNovaGloveInfo::NewNovaGloveInfo(WorldContextObject, + DeviceId, HardwareVersion, FirmwareVersion, SubFirmwareVersion, + bRightHanded, ImuCorrection, NumberOfSensors); +} + +bool USGNovaGloveInfoKismetLibrary::Parse(UObject* WorldContextObject, + const FString& ConstantsString, USGNovaGloveInfo*& OutGloveInfo) +{ + return USGNovaGloveInfo::Parse(WorldContextObject, ConstantsString, OutGloveInfo); +} + +USGNovaGloveInfo* USGNovaGloveInfoKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGNovaGloveInfo::Deserialize(WorldContextObject, SerializedString); +} + +FString USGNovaGloveInfoKismetLibrary::GetDeviceId(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetDeviceId(); +} + +FString USGNovaGloveInfoKismetLibrary::GetHardwareVersion(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetHardwareVersion(); +} + +int32 USGNovaGloveInfoKismetLibrary::GetFirmwareVersion(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetFirmwareVersion(); +} + +int32 USGNovaGloveInfoKismetLibrary::GetSubFirmwareVersion(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetSubFirmwareVersion(); +} + +bool USGNovaGloveInfoKismetLibrary::IsRight(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->IsRight(); +} + +FQuat USGNovaGloveInfoKismetLibrary::GetImuCorrection_FQuat(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetImuCorrectionQ(); +} + +FRotator USGNovaGloveInfoKismetLibrary::GetImuCorrection_FRotator(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetImuCorrection(); +} + +int32 USGNovaGloveInfoKismetLibrary::GetNumberOfSensors(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->GetNumberOfSensors(); +} + +bool USGNovaGloveInfoKismetLibrary::FirmwareNewerThan( + const USGNovaGloveInfo* NovaGloveInfo, + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return NovaGloveInfo->FirmwareNewerThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGNovaGloveInfoKismetLibrary::FirmwareOlderThan( + const USGNovaGloveInfo* NovaGloveInfo, + const int32 FirmwareMain, const int32 FirmwareSub, const bool bInclusive) const +{ + return NovaGloveInfo->FirmwareOlderThan(FirmwareMain, FirmwareSub, bInclusive); +} + +bool USGNovaGloveInfoKismetLibrary::Equals(const USGNovaGloveInfo* A, const USGNovaGloveInfo* B) +{ + return A->Equals(B); +} + +FString USGNovaGloveInfoKismetLibrary::ToString(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->ToString(); +} + +FString USGNovaGloveInfoKismetLibrary::SGSerialize(const USGNovaGloveInfo* NovaGloveInfo) +{ + return NovaGloveInfo->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp new file mode 100644 index 0000000..9f6f980 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveKismetLibrary.cpp @@ -0,0 +1,421 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGNovaGloveKismetLibrary.h" + +#include "SGCore/SGHandPose.h" +#include "SGCore/SGNovaGlove.h" +#include "SGCore/SGNovaGloveSensorData.h" +#include "SGUtils/SGArrayUtils.h" + +USGDevice* USGNovaGloveKismetLibrary::Parse(UObject* WorldContextObject, const FString& ConstantsString) +{ + return USGNovaGlove::Parse(WorldContextObject, ConstantsString); +} + +TArray USGNovaGloveKismetLibrary::GetNovaGloves(UObject* WorldContextObject) +{ + return USGNovaGlove::GetNovaGloves(WorldContextObject); +} + +bool USGNovaGloveKismetLibrary::GetNovaGlove_OutG(UObject* WorldContextObject, USGNovaGlove*& OutGlove) +{ + return USGNovaGlove::GetNovaGlove(WorldContextObject, OutGlove); +} + +bool USGNovaGloveKismetLibrary::GetNovaGlove_bRH_OutG(UObject* WorldContextObject, + const bool bRightHanded, USGNovaGlove*& OutGlove) +{ + return USGNovaGlove::GetNovaGlove(WorldContextObject, bRightHanded, OutGlove); +} + +void USGNovaGloveKismetLibrary::CalculateGloveLocation_RP_FQuat_RR_TH_bRH_OutGP_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + USGNovaGlove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, + OutGlovePosition, OutGloveRotation); +} + +void USGNovaGloveKismetLibrary::CalculateGloveLocation_RP_FRotator_RR_TH_bRH_OutGP_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + USGNovaGlove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, + OutGlovePosition, OutGloveRotation); +} + +void USGNovaGloveKismetLibrary::CalculateWristLocation_RP_FQuat_RR_TH_bRH_OutWP_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + USGNovaGlove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, + OutWristPosition, OutWristRotation); +} + +void USGNovaGloveKismetLibrary::CalculateWristLocation_RP_FRotator_RR_TH_bRH_OutWP_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + USGNovaGlove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, + OutWristPosition, OutWristRotation); +} + +FString USGNovaGloveKismetLibrary::GetHapticsByte() +{ + return FString::Printf(TEXT("%c"), USGNovaGlove::GetHapticsByte()); +} + +FString USGNovaGloveKismetLibrary::GetThresholdsByte() +{ + return FString::Printf(TEXT("%c"), USGNovaGlove::GetThresholdsByte()); +} + +FString USGNovaGloveKismetLibrary::GetIgnoreThresholdsByte() +{ + return FString::Printf(TEXT("%c"), USGNovaGlove::GetIgnoreThresholdsByte()); +} + +TArray USGNovaGloveKismetLibrary::GetNovaSensorRanges() +{ + return USGNovaGlove::GetNovaSensorRanges(); +} + +TArray USGNovaGloveKismetLibrary::ToNormalizedValues_SD(const USGNovaGloveSensorData* SensorData) +{ + return USGNovaGlove::ToNormalizedValues(SensorData); +} + +TArray USGNovaGloveKismetLibrary::ToNormalizedValues_SD_OutSN( + UObject* WorldContextObject, + const USGNovaGloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer) +{ + return USGNovaGlove::ToNormalizedValues(WorldContextObject, SensorData, OutSensorNormalizer); +} + +TArray USGNovaGloveKismetLibrary::CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator) +{ + const TArray HandAngles{ + FSGArrayUtils::ToNestedBPArray( + USGNovaGlove::CalculateHandAngles(NormalizedValues, Interpolator)) + }; + return HandAngles; +} + +FString USGNovaGloveKismetLibrary::ToNovaCommandAsFlexion(const USGThresholdCommand* Thresholds) +{ + return USGNovaGlove::ToNovaCommandAsFlexion(Thresholds); +} + +FString USGNovaGloveKismetLibrary::ToNovaCommandAsRaw( + const USGThresholdCommand* Thresholds, const USGSensorNormalization* Interpolator) +{ + return USGNovaGlove::ToNovaCommandAsRaw(Thresholds, Interpolator); +} + +ESGDeviceType USGNovaGloveKismetLibrary::GetDeviceType(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetDeviceType(); +} + +FString USGNovaGloveKismetLibrary::GetDeviceId(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetDeviceId(); +} + +FString USGNovaGloveKismetLibrary::GetHardwareVersion(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetHardwareVersion(); +} + +int32 USGNovaGloveKismetLibrary::GetFirmwareVersion(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetFirmwareVersion(); +} + +int32 USGNovaGloveKismetLibrary::GetSubFirmwareVersion(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetSubFirmwareVersion(); +} + +void USGNovaGloveKismetLibrary::SetDeviceIndex(USGNovaGlove* NovaGlove, const int32 NewIndex) +{ + NovaGlove->SetDeviceIndex(NewIndex); +} + +bool USGNovaGloveKismetLibrary::HasBattery(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->HasBattery(); +} + +bool USGNovaGloveKismetLibrary::IsCharging(USGNovaGlove* NovaGlove) +{ + return NovaGlove->IsCharging(); +} + +bool USGNovaGloveKismetLibrary::GetBatteryLevel(USGNovaGlove* NovaGlove, float& OutBatteryLevel) +{ + return NovaGlove->GetBatteryLevel(OutBatteryLevel); +} + +bool USGNovaGloveKismetLibrary::IsRight(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->IsRight(); +} + +bool USGNovaGloveKismetLibrary::GetImuRotation_FQuat_OutI(USGNovaGlove* NovaGlove, FQuat& OutImu) +{ + return NovaGlove->GetImuRotation(OutImu); +} + +bool USGNovaGloveKismetLibrary::GetImuRotation_FRotator_OutI(USGNovaGlove* NovaGlove, FRotator& OutImu) +{ + return NovaGlove->GetImuRotation(OutImu); +} + +bool USGNovaGloveKismetLibrary::GetHandPose( + UObject* WorldContextObject, + USGNovaGlove* NovaGlove, const USGBasicHandModel* HandModel, USGHandPose*& OutHandPose) +{ + return NovaGlove->GetHandPose(WorldContextObject, HandModel, OutHandPose); +} + +bool USGNovaGloveKismetLibrary::GetHandAngles(const USGNovaGlove* NovaGlove, TArray& OutHandAngles) +{ + TArray> HandAnglesNestedArray; + const bool bResult = NovaGlove->GetHandAngles(HandAnglesNestedArray); + OutHandAngles = FSGArrayUtils::ToNestedBPArray(MoveTemp(HandAnglesNestedArray)); + return bResult; +} + +ESGHapticGloveCalibrationState USGNovaGloveKismetLibrary::GetCalibrationState(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetCalibrationState(); +} + +void USGNovaGloveKismetLibrary::EndCalibration(USGNovaGlove* NovaGlove) +{ + NovaGlove->EndCalibration(); +} + +void USGNovaGloveKismetLibrary::ResetCalibration(USGNovaGlove* NovaGlove) +{ + NovaGlove->ResetCalibration(); +} + +void USGNovaGloveKismetLibrary::StopHaptics(USGNovaGlove* NovaGlove) +{ + NovaGlove->StopHaptics(); +} + +void USGNovaGloveKismetLibrary::StopVibrations(USGNovaGlove* NovaGlove) +{ + NovaGlove->StopVibrations(); +} + +bool USGNovaGloveKismetLibrary::SendHaptics(USGNovaGlove* NovaGlove) +{ + return NovaGlove->SendHaptics(); +} + +bool USGNovaGloveKismetLibrary::SupportsCustomWaveform(const USGNovaGlove* NovaGlove, + const ESGHapticLocation AtLocation) +{ + return NovaGlove->SupportsCustomWaveform(AtLocation); +} + +bool USGNovaGloveKismetLibrary::SendCustomWaveform(USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, const ESGHapticLocation Location) +{ + return NovaGlove->SendCustomWaveform(OutWaveform, Location); +} + +bool USGNovaGloveKismetLibrary::QueueForceFeedbackLevels(USGNovaGlove* NovaGlove, const TArray& Levels01) +{ + return NovaGlove->QueueForceFeedbackLevels(Levels01); +} + +bool USGNovaGloveKismetLibrary::QueueForceFeedbackLevel( + USGNovaGlove* NovaGlove, const int32 Finger, const float Level01) +{ + return NovaGlove->QueueForceFeedbackLevel(Finger, Level01); +} + +bool USGNovaGloveKismetLibrary::QueueVibroLevels(USGNovaGlove* NovaGlove, const TArray& Amplitudes) +{ + return NovaGlove->QueueVibroLevels(Amplitudes); +} + +bool USGNovaGloveKismetLibrary::QueueVibroLevel_L_L(USGNovaGlove* NovaGlove, + const ESGHapticLocation Location, const float Level01) +{ + return NovaGlove->QueueVibroLevel(Location, Level01); +} + +void USGNovaGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + NovaGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGNovaGloveKismetLibrary::GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + NovaGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGNovaGloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + NovaGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGNovaGloveKismetLibrary::GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + NovaGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +USGNovaGloveInfo* USGNovaGloveKismetLibrary::GetGloveInfo(UObject* WorldContextObject, const USGNovaGlove* NovaGlove) +{ + return NovaGlove->GetGloveInfo(WorldContextObject); +} + +bool USGNovaGloveKismetLibrary::SupportsThresholds(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->SupportsThresholds(); +} + +bool USGNovaGloveKismetLibrary::SupportsCustomWaveforms(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->SupportsCustomWaveforms(); +} + +bool USGNovaGloveKismetLibrary::SupportsOnBoardNormalization(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->SupportsOnBoardNormalization(); +} + +bool USGNovaGloveKismetLibrary::GetSensorData( + UObject* WorldContextObject, USGNovaGlove* NovaGlove, USGNovaGloveSensorData*& OutSensorData) +{ + return NovaGlove->GetSensorData(WorldContextObject, OutSensorData); +} + +FString USGNovaGloveKismetLibrary::ToNovaCommand( + const USGNovaGlove* NovaGlove, + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, const float WristLevel) +{ + return NovaGlove->ToNovaCommand(ForceFeedbackLevels, BuzzLevels, WristLevel); +} + +bool USGNovaGloveKismetLibrary::QueueVibroLevel_F_A(USGNovaGlove* NovaGlove, const int32 Finger, const float Amplitude) +{ + return NovaGlove->QueueVibroLevel(Finger, Amplitude); +} + +bool USGNovaGloveKismetLibrary::QueueWristLevel(USGNovaGlove* NovaGlove, const float Amplitude) +{ + return NovaGlove->QueueWristLevel(Amplitude); +} + +ESGNovaVibroMotor USGNovaGloveKismetLibrary::ToNovaMotor(const USGNovaGlove* NovaGlove, + const ESGHapticLocation Location) +{ + return NovaGlove->ToNovaMotor(Location); +} + +int32 USGNovaGloveKismetLibrary::ChannelIndex(const USGNovaGlove* NovaGlove, const ESGNovaVibroMotor Motor) +{ + return NovaGlove->ChannelIndex(Motor); +} + +void USGNovaGloveKismetLibrary::ValidateWaveform(const USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, const ESGNovaVibroMotor Motor) +{ + NovaGlove->ValidateWaveform(OutWaveform, Motor); +} + +bool USGNovaGloveKismetLibrary::SendCustomWaveform_Nova( + USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, const ESGNovaVibroMotor Motor, const bool bValidateWaveform) +{ + return NovaGlove->SendCustomWaveform_Nova(OutWaveform, Motor, bValidateWaveform); +} + +bool USGNovaGloveKismetLibrary::QueueThresholdCommand_Flexion(USGNovaGlove* NovaGlove, + const int32 Finger, const float FlexionThreshold) +{ + return NovaGlove->QueueThresholdCommand_Flexion(Finger, FlexionThreshold); +} + +bool USGNovaGloveKismetLibrary::QueueClearThreshold(USGNovaGlove* NovaGlove, const int32 Finger) +{ + return NovaGlove->QueueClearThreshold(Finger); +} + +FString USGNovaGloveKismetLibrary::ToString(const USGNovaGlove* NovaGlove) +{ + return NovaGlove->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.cpp new file mode 100644 index 0000000..7910e2c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.cpp @@ -0,0 +1,134 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.h" + +#include "SGCore/SGNovaGloveInfo.h" +#include "SGCore/SGNovaGloveSensorData.h" + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::MakeNovaGloveSensorData(UObject* WorldContextObject) +{ + return USGNovaGloveSensorData::NewNovaGloveSensorData(WorldContextObject); +} + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::MakeNovaGloveSensorData_V_PV_FQuat_IR_bIP_BL_bC( + UObject* WorldContextObject, const TArray& Values, const int32 ParsedValues, + const FQuat& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + return USGNovaGloveSensorData::NewNovaGloveSensorData( + WorldContextObject, Values, ParsedValues, ImuRotation, bImuParsed, BatteryLevel, bCharging); +} + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::MakeNovaGloveSensorData_V_PV_FRotator_IR_bIP_BL_b( + UObject* WorldContextObject, const TArray& Values, const int32 ParsedValues, + const FRotator& ImuRotation, const bool bImuParsed, const float BatteryLevel, const bool bCharging) +{ + return USGNovaGloveSensorData::NewNovaGloveSensorData( + WorldContextObject, Values, ParsedValues, ImuRotation, bImuParsed, BatteryLevel, bCharging); +} + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::Empty(UObject* WorldContextObject) +{ + return USGNovaGloveSensorData::Empty(WorldContextObject); +} + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::Parse( + UObject* WorldContextObject, const FString& RawData, const USGNovaGloveInfo* GloveInfo) +{ + return USGNovaGloveSensorData::Parse(WorldContextObject, RawData, GloveInfo); +} + +USGNovaGloveSensorData* USGNovaGloveSensorDataKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGNovaGloveSensorData::Deserialize(WorldContextObject, SerializedString); +} + +TArray USGNovaGloveSensorDataKismetLibrary::GetSensorValues( + const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->GetSensorValues(); +} + +float USGNovaGloveSensorDataKismetLibrary::GetSensorValue(const USGNovaGloveSensorData* NovaGloveSensorData, + const ESGFinger Finger, const ESGNovaSensorLocation Location) +{ + return NovaGloveSensorData->GetSensorValue(Finger, Location); +} + +int32 USGNovaGloveSensorDataKismetLibrary::GetParsedValues(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->GetParsedValues(); +} + +FQuat USGNovaGloveSensorDataKismetLibrary::GetImuRotation_FQuat(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->GetImuRotationQ(); +} + +FRotator USGNovaGloveSensorDataKismetLibrary::GetImuRotation_FRotator(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->GetImuRotation(); +} + +bool USGNovaGloveSensorDataKismetLibrary::IsImuParsed(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->IsImuParsed(); +} + +float USGNovaGloveSensorDataKismetLibrary::GetBatteryLevel(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->GetBatteryLevel(); +} + +bool USGNovaGloveSensorDataKismetLibrary::IsCharging(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->IsCharging(); +} + +bool USGNovaGloveSensorDataKismetLibrary::Equals(const USGNovaGloveSensorData* A, const USGNovaGloveSensorData* B) +{ + return A->Equals(B); +} + +FString USGNovaGloveSensorDataKismetLibrary::ToString(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->ToString(); +} + +FString USGNovaGloveSensorDataKismetLibrary::SGSerialize(const USGNovaGloveSensorData* NovaGloveSensorData) +{ + return NovaGloveSensorData->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseComKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseComKismetLibrary.cpp new file mode 100644 index 0000000..725bdad --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseComKismetLibrary.cpp @@ -0,0 +1,68 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseComKismetLibrary.h" + +#include "SGCore/SGSenseCom.h" + +bool USGSenseComKismetLibrary::RegisterExe() +{ + return FSGSenseCom::RegisterExe(); +} + +bool USGSenseComKismetLibrary::RegisterExe_EP(const FString& ExePath) +{ + return FSGSenseCom::RegisterExe(ExePath); +} + +bool USGSenseComKismetLibrary::GetExePath(FString& OutExePath) +{ + return FSGSenseCom::GetExePath(OutExePath); +} + +bool USGSenseComKismetLibrary::ScanningActive() +{ + return FSGSenseCom::ScanningActive(); +} + +bool USGSenseComKismetLibrary::GetCurrentExeDirectory(FString& OutDirectory) +{ + return FSGSenseCom::GetCurrentExeDirectory(OutDirectory); +} + +bool USGSenseComKismetLibrary::StartupSenseCom() +{ + return FSGSenseCom::StartupSenseCom(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveInfoKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveInfoKismetLibrary.cpp new file mode 100644 index 0000000..2653c96 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveInfoKismetLibrary.cpp @@ -0,0 +1,211 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGloveInfoKismetLibrary.h" + +#include "SGCore/SGSenseGloveInfo.h" +#include "SGUtils/SGArrayUtils.h" + +USGSenseGloveInfo* USGSenseGloveInfoKismetLibrary::MakeSenseGloveInfo(UObject* WorldContextObject) +{ + return USGSenseGloveInfo::NewSenseGloveInfo(WorldContextObject); +} + +USGSenseGloveInfo* +USGSenseGloveInfoKismetLibrary::MakeSenseGloveInfo_DI_HV_FV_SFV_bRH_NOS_FQuat_IC_SP_TArrayFQuat_SR_GL_F( + UObject* WorldContextObject, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions) +{ + return USGSenseGloveInfo::NewSenseGloveInfo(WorldContextObject, DeviceId, + HardwareVersion, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, ImuCorrection, + StartPositions, StartRotations, + GloveLengths, Functions); +} + +USGSenseGloveInfo* +USGSenseGloveInfoKismetLibrary::MakeSenseGloveInfo_DI_HV_FV_SFV_bRH_NOS_FRotator_IC_SP_TArrayFRotator_SR_GL_F( + UObject* WorldContextObject, const FString& DeviceId, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions) +{ + return USGSenseGloveInfo::NewSenseGloveInfo(WorldContextObject, DeviceId, + HardwareVersion, FirmwareVersion, SubFirmwareVersion, + bRightHanded, NumberOfSensors, ImuCorrection, + StartPositions, StartRotations, + GloveLengths, Functions); +} + +bool USGSenseGloveInfoKismetLibrary::Parse(UObject* WorldContextObject, + const FString& ConstantsString, USGSenseGloveInfo*& OutGloveInfo, + const bool bUpdateOldModels) +{ + return USGSenseGloveInfo::Parse(WorldContextObject, ConstantsString, OutGloveInfo, bUpdateOldModels); +} + +USGSenseGloveInfo* USGSenseGloveInfoKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGSenseGloveInfo::Deserialize(WorldContextObject, SerializedString); +} + +FString USGSenseGloveInfoKismetLibrary::GetDeviceId(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetDeviceId(); +} + +FString USGSenseGloveInfoKismetLibrary::GetHardwareVersion(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetHardwareVersion(); +} + +int32 USGSenseGloveInfoKismetLibrary::GetFirmwareVersion(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetFirmwareVersion(); +} + +int32 USGSenseGloveInfoKismetLibrary::GetSubFirmwareVersion(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetSubFirmwareVersion(); +} + +bool USGSenseGloveInfoKismetLibrary::IsRight(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->IsRight(); +} + +int32 USGSenseGloveInfoKismetLibrary::GetNumberOfSensors(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetNumberOfSensors(); +} + +FQuat USGSenseGloveInfoKismetLibrary::GetImuCorrection_FQuat(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetImuCorrectionQ(); +} + +FRotator USGSenseGloveInfoKismetLibrary::GetImuCorrection_FRotator(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetImuCorrection(); +} + +TArray USGSenseGloveInfoKismetLibrary::GetStartPositions(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetStartPositions(); +} + +TArray USGSenseGloveInfoKismetLibrary::GetStartRotations_TArrayFQuat(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetStartRotationsQ(); +} + +TArray USGSenseGloveInfoKismetLibrary::GetStartRotations_TArrayFRotator( + const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetStartRotations(); +} + +TArray USGSenseGloveInfoKismetLibrary::GetGloveLengths(const USGSenseGloveInfo* SenseGloveInfo) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGloveInfo->GetGloveLengths()); +} + +TArray USGSenseGloveInfoKismetLibrary::GetFunctions(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->GetFunctions(); +} + +FVector USGSenseGloveInfoKismetLibrary::GetStartPosition(const USGSenseGloveInfo* SenseGloveInfo, + const ESGFinger Finger) +{ + return SenseGloveInfo->GetStartPosition(Finger); +} + +FQuat USGSenseGloveInfoKismetLibrary::GetStartRotation_FQuat(const USGSenseGloveInfo* SenseGloveInfo, + const ESGFinger Finger) +{ + return SenseGloveInfo->GetStartRotationQ(Finger); +} + +FRotator USGSenseGloveInfoKismetLibrary::GetStartRotation_FRotator(const USGSenseGloveInfo* SenseGloveInfo, + const ESGFinger Finger) +{ + return SenseGloveInfo->GetStartRotation(Finger); +} + +TArray USGSenseGloveInfoKismetLibrary::GetGloveLengths_F(const USGSenseGloveInfo* SenseGloveInfo, + const ESGFinger Finger) +{ + return SenseGloveInfo->GetGloveLengths(Finger); +} + +TArray USGSenseGloveInfoKismetLibrary::ToGloveAngles(const USGSenseGloveInfo* SenseGloveInfo, + const TArray& SensorAngles) +{ + TArray> SensorAnglesNestedArray{ + FSGArrayUtils::FromNestedBPArray< + float, FSGFloatArray, &FSGFloatArray::FloatArray>(SensorAngles) + }; + const TArray GloveAngles{ + FSGArrayUtils::ToNestedBPArray( + SenseGloveInfo->ToGloveAngles(MoveTemp(SensorAnglesNestedArray))) + }; + return GloveAngles; +} + +bool USGSenseGloveInfoKismetLibrary::Equals(const USGSenseGloveInfo* A, const USGSenseGloveInfo* B) +{ + return A->Equals(B); +} + +FString USGSenseGloveInfoKismetLibrary::ToString_bSN(const USGSenseGloveInfo* SenseGloveInfo, const bool bShortNotation) +{ + return SenseGloveInfo->ToString(bShortNotation); +} + +FString USGSenseGloveInfoKismetLibrary::ToString(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->ToString(); +} + +FString USGSenseGloveInfoKismetLibrary::SGSerialize(const USGSenseGloveInfo* SenseGloveInfo) +{ + return SenseGloveInfo->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp new file mode 100644 index 0000000..2fa50a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveKismetLibrary.cpp @@ -0,0 +1,430 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGloveKismetLibrary.h" + +#include "SGCore/SGDevice.h" +#include "SGCore/SGHandInterpolator.h" +#include "SGCore/SGHandPose.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCore/SGSenseGloveSensorNormalizer.h" +#include "SGUtils/SGArrayUtils.h" + +USGDevice* USGSenseGloveKismetLibrary::Parse(UObject* WorldContextObject, const FString& ConstantsString) +{ + return USGSenseGlove::Parse(WorldContextObject, ConstantsString); +} + +TArray USGSenseGloveKismetLibrary::GetSenseGloves(UObject* WorldContextObject) +{ + return USGSenseGlove::GetSenseGloves(WorldContextObject); +} + +bool USGSenseGloveKismetLibrary::GetSenseGlove_OutG(UObject* WorldContextObject, USGSenseGlove*& OutGlove) +{ + return USGSenseGlove::GetSenseGlove(WorldContextObject, OutGlove); +} + +bool USGSenseGloveKismetLibrary::GetSenseGlove_bRH_OutG(UObject* WorldContextObject, + const bool bRightHanded, USGSenseGlove*& OutGlove) +{ + return USGSenseGlove::GetSenseGlove(WorldContextObject, bRightHanded, OutGlove); +} + +void USGSenseGloveKismetLibrary::CalculateGloveLocation_RP_FQuat_RR_TH_bRH_MO_OutGP_FQuat_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + USGSenseGlove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, MountedOn, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::CalculateGloveLocation_RP_FRotator_RR_TH_bRH_MO_OutGP_FRotator_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + USGSenseGlove::CalculateGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, MountedOn, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::CalculateWristLocation_RP_FQuat_RR_TH_bRH_MO_GWPOffset_FQuat_GWRO_OutWP_FQuat_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + USGSenseGlove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, MountedOn, + GloveWristPositionOffset, GloveWristRotationOffset, + OutWristPosition, OutWristRotation); +} + +void +USGSenseGloveKismetLibrary::CalculateWristLocation_RP_FRotator_RR_TH_bRH_MO_GWPOffset_FRotator_GWRO_OutWP_FRotator_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const bool bRightHanded, const ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + USGSenseGlove::CalculateWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, bRightHanded, MountedOn, + GloveWristPositionOffset, GloveWristRotationOffset, + OutWristPosition, OutWristRotation); +} + +FString USGSenseGloveKismetLibrary::GetHapticsByte() +{ + return FString::Printf(TEXT("%c"), USGSenseGlove::GetHapticsByte()); +} + +FString USGSenseGloveKismetLibrary::GetThumperByte() +{ + return FString::Printf(TEXT("%c"), USGSenseGlove::GetThumperByte()); +} + +FVector USGSenseGloveKismetLibrary::GetDefaultThimbleOffset() +{ + return USGSenseGlove::GetDefaultThimbleOffset(); +} + +USGSenseGlovePose* USGSenseGloveKismetLibrary::CalculateGlovePose_SD_GM( + UObject* WorldContextObject, + const USGSenseGloveSensorData* SensorData, const USGSenseGloveInfo* GloveModel) +{ + return USGSenseGlove::CalculateGlovePose(WorldContextObject, SensorData, GloveModel); +} + +USGSenseGlovePose* USGSenseGloveKismetLibrary::CalculateGlovePose_GA_GM( + UObject* WorldContextObject, + const TArray& GloveAngles, const USGSenseGloveInfo* GloveModel) +{ + TArray> GloveAnglesNestedArray{ + FSGArrayUtils::FromNestedBPArray(GloveAngles) + }; + return USGSenseGlove::CalculateGlovePose(WorldContextObject, MoveTemp(GloveAnglesNestedArray), GloveModel); +} + +void USGSenseGloveKismetLibrary::NormalizeValues( + const TArray& SumAngles, const USGSenseGloveSensorNormalizer* Normalizer, + TArray& OutFlexions, TArray& OutAbductions) +{ + USGSenseGlove::NormalizeValues(SumAngles, Normalizer, OutFlexions, OutAbductions); +} + +void USGSenseGloveKismetLibrary::CalculateHandAngles( + const USGSenseGlovePose* GlovePose, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + TArray& OutHandAngles) +{ + TArray> OutHandAnglesArray; + USGSenseGlove::CalculateHandAngles(GlovePose, Normalizer, NormalizedToAngles, OutHandAnglesArray); + + TArray OutHandHandAnglesNestedArray{ + FSGArrayUtils::ToNestedBPArray(OutHandAnglesArray) + }; + OutHandAngles = MoveTemp(OutHandHandAnglesNestedArray); +} + +void USGSenseGloveKismetLibrary::CalculateHandPose( + UObject* WorldContextObject, + const USGSenseGlovePose* GlovePose, const USGBasicHandModel* HandModel, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + USGHandPose*& OutHandPose) +{ + USGSenseGlove::CalculateHandPose( + WorldContextObject, + GlovePose, HandModel, Normalizer, NormalizedToAngles, OutHandPose); +} + +ESGDeviceType USGSenseGloveKismetLibrary::GetDeviceType(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetDeviceType(); +} + +FString USGSenseGloveKismetLibrary::GetDeviceId(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetDeviceId(); +} + +FString USGSenseGloveKismetLibrary::GetHardwareVersion(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetHardwareVersion(); +} + +int32 USGSenseGloveKismetLibrary::GetFirmwareVersion(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetFirmwareVersion(); +} + +int32 USGSenseGloveKismetLibrary::GetSubFirmwareVersion(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetSubFirmwareVersion(); +} + +bool USGSenseGloveKismetLibrary::IsRight(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->IsRight(); +} + +bool USGSenseGloveKismetLibrary::GetImuRotation_FQuat_OutI(USGSenseGlove* SenseGlove, FQuat& OutImu) +{ + return SenseGlove->GetImuRotation(OutImu); +} + +bool USGSenseGloveKismetLibrary::GetImuRotation_FRotator_OutI(USGSenseGlove* SenseGlove, FRotator& OutImu) +{ + return SenseGlove->GetImuRotation(OutImu); +} + +bool USGSenseGloveKismetLibrary::GetHandPose( + UObject* WorldContextObject, USGSenseGlove* SenseGlove, const USGBasicHandModel* HandModel, + USGHandPose*& OutHandPose) +{ + return SenseGlove->GetHandPose(WorldContextObject, HandModel, OutHandPose); +} + +bool USGSenseGloveKismetLibrary::GetHandAngles(const USGSenseGlove* SenseGlove, TArray& OutHandAngles) +{ + TArray> HandAnglesNestedArray; + const bool bResult = SenseGlove->GetHandAngles(HandAnglesNestedArray); + OutHandAngles = FSGArrayUtils::ToNestedBPArray(MoveTemp(HandAnglesNestedArray)); + return bResult; +} + +ESGHapticGloveCalibrationState USGSenseGloveKismetLibrary::GetCalibrationState(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetCalibrationState(); +} + +void USGSenseGloveKismetLibrary::EndCalibration(USGSenseGlove* SenseGlove) +{ + SenseGlove->EndCalibration(); +} + +void USGSenseGloveKismetLibrary::ResetCalibration(USGSenseGlove* SenseGlove) +{ + SenseGlove->ResetCalibration(); +} + +void USGSenseGloveKismetLibrary::StopHaptics(USGSenseGlove* SenseGlove) +{ + SenseGlove->StopHaptics(); +} + +void USGSenseGloveKismetLibrary::StopVibrations(USGSenseGlove* SenseGlove) +{ + SenseGlove->StopVibrations(); +} + +bool USGSenseGloveKismetLibrary::SendHaptics(USGSenseGlove* SenseGlove) +{ + return SenseGlove->SendHaptics(); +} + +bool USGSenseGloveKismetLibrary::QueueForceFeedbackLevels(USGSenseGlove* SenseGlove, const TArray& Levels01) +{ + return SenseGlove->QueueForceFeedbackLevels(Levels01); +} + +bool USGSenseGloveKismetLibrary::QueueForceFeedbackLevel(USGSenseGlove* SenseGlove, + const int32 Finger, const float Level01) +{ + return SenseGlove->QueueForceFeedbackLevel(Finger, Level01); +} + +bool USGSenseGloveKismetLibrary::QueueVibroLevels(USGSenseGlove* SenseGlove, const TArray& Amplitudes) +{ + return SenseGlove->QueueVibroLevels(Amplitudes); +} + +bool USGSenseGloveKismetLibrary::QueueVibroLevel_L_L(USGSenseGlove* SenseGlove, + const ESGHapticLocation Location, const float Level01) +{ + return SenseGlove->QueueVibroLevel(Location, Level01); +} + +void USGSenseGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + SenseGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation) +{ + SenseGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::GetGloveLocation_RP_FQuat_RR_TH_MO_OutGP_FQuat_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation) +{ + SenseGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, MountedOn, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::GetGloveLocation_RP_FRotator_RR_TH_MO_OutGP_FRotator_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, const ESGFinger MountedOn, FVector& OutGlovePosition, + FRotator& OutGloveRotation) +{ + SenseGlove->GetGloveLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, MountedOn, + OutGlovePosition, OutGloveRotation); +} + +void USGSenseGloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + SenseGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGSenseGloveKismetLibrary::GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + SenseGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + OutWristPosition, OutWristRotation); +} + +void USGSenseGloveKismetLibrary::GetWristLocation_RP_FQuat_RR_TH_GWPO_FQuat_GWRO_OutWP_FQuat_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation) +{ + SenseGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + GloveWristPositionOffset, GloveWristRotationOffset, + OutWristPosition, OutWristRotation); +} + +void USGSenseGloveKismetLibrary::GetWristLocation_RP_FRotator_RR_TH_GWPO_FRotator_GWRO_OutWP_FRotator_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + const ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation) +{ + SenseGlove->GetWristLocation(ReferencePosition, ReferenceRotation, + TrackingHardware, + GloveWristPositionOffset, GloveWristRotationOffset, + OutWristPosition, OutWristRotation); +} + +USGSenseGloveInfo* USGSenseGloveKismetLibrary::GetGloveInfo( + UObject* WorldContextObject, const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetGloveInfo(WorldContextObject); +} + +TArray USGSenseGloveKismetLibrary::GetFingerThimbleOffsets(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->GetFingerThimbleOffsets(); +} + +void USGSenseGloveKismetLibrary::SetFingerThimbleOffset(USGSenseGlove* SenseGlove, + const int32 Finger, const FVector& Offset) +{ + SenseGlove->SetFingerThimbleOffset(Finger, Offset); +} + +bool USGSenseGloveKismetLibrary::SupportsWristActuator(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->SupportsWristActuator(); +} + +bool USGSenseGloveKismetLibrary::GetSensorData(UObject* WorldContextObject, const USGSenseGlove* SenseGlove, + USGSenseGloveSensorData*& OutSensorData) +{ + return SenseGlove->GetSensorData(WorldContextObject, OutSensorData); +} + +bool USGSenseGloveKismetLibrary::GetGlovePose_OutGP(UObject* WorldContextObject, USGSenseGlove* SenseGlove, + USGSenseGlovePose*& OutGlovePose) +{ + return SenseGlove->GetGlovePose(WorldContextObject, OutGlovePose); +} + +bool USGSenseGloveKismetLibrary::GetGlovePose_SD_OutGP( + UObject* WorldContextObject, USGSenseGlove* SenseGlove, + const USGSenseGloveSensorData* SensorData, USGSenseGlovePose*& OutGlovePose) +{ + return SenseGlove->GetGlovePose(WorldContextObject, SensorData, OutGlovePose); +} + +bool USGSenseGloveKismetLibrary::QueueVibroLevel_F_A(USGSenseGlove* SenseGlove, const int32 Finger, + const float Amplitude) +{ + return SenseGlove->QueueVibroLevel(Finger, Amplitude); +} + +bool USGSenseGloveKismetLibrary::QueueThumperCommand(USGSenseGlove* SenseGlove, + const ESGSenseGloveThumperCommand Command) +{ + return SenseGlove->QueueThumperCommand(Command); +} + +FString USGSenseGloveKismetLibrary::ToString(const USGSenseGlove* SenseGlove) +{ + return SenseGlove->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGlovePoseKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGlovePoseKismetLibrary.cpp new file mode 100644 index 0000000..3e36389 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGlovePoseKismetLibrary.cpp @@ -0,0 +1,142 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGlovePoseKismetLibrary.h" + +#include "SGCore/SGSenseGlovePose.h" +#include "SGUtils/SGArrayUtils.h" + +USGSenseGlovePose* USGSenseGlovePoseKismetLibrary::MakeSenseGlovePose(UObject* WorldContextObject) +{ + return USGSenseGlovePose::NewSenseGlovePose(WorldContextObject); +} + +USGSenseGlovePose* USGSenseGlovePoseKismetLibrary::MakeSenseGlovePose_bRH_JP_TArrayFSGQuatArray_JR_GA( + UObject* WorldContextObject, const bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& GloveAngles) +{ + return USGSenseGlovePose::NewSenseGlovePose(WorldContextObject, bRightHanded, + JointPositions, JointRotations, GloveAngles); +} + +USGSenseGlovePose* USGSenseGlovePoseKismetLibrary::MakeSenseGlovePose_bRH_JP_TArrayFSGRotatorArray_JR_GA( + UObject* WorldContextObject, const bool bRightHanded, + const TArray& JointPositions, const TArray& JointRotations, + const TArray& GloveAngles) +{ + return USGSenseGlovePose::NewSenseGlovePose(WorldContextObject, bRightHanded, + JointPositions, JointRotations, GloveAngles); +} + +USGSenseGlovePose* USGSenseGlovePoseKismetLibrary::IdlePose(UObject* WorldContextObject, + const USGSenseGloveInfo* GloveInfo) +{ + return USGSenseGlovePose::IdlePose(WorldContextObject, GloveInfo); +} + +USGSenseGlovePose* USGSenseGlovePoseKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGSenseGlovePose::Deserialize(WorldContextObject, SerializedString); +} + +bool USGSenseGlovePoseKismetLibrary::IsRight(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->IsRight(); +} + +TArray USGSenseGlovePoseKismetLibrary::GetJointPositions(const USGSenseGlovePose* SenseGlovePose) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGlovePose->GetJointPositions()); +} + +TArray USGSenseGlovePoseKismetLibrary::GetJointRotations_TArrayFSGQuatArray( + const USGSenseGlovePose* SenseGlovePose) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGlovePose->GetJointRotationsQ()); +} + +TArray USGSenseGlovePoseKismetLibrary::GetJointRotations_TArrayFSGRotatorArray( + const USGSenseGlovePose* SenseGlovePose) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGlovePose->GetJointRotations()); +} + +TArray USGSenseGlovePoseKismetLibrary::GetGloveAngles(const USGSenseGlovePose* SenseGlovePose) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGlovePose->GetGloveAngles()); +} + +TArray USGSenseGlovePoseKismetLibrary::GetThimblePositions(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->GetThimblePositions(); +} + +TArray USGSenseGlovePoseKismetLibrary::GetThimbleRotations_FQuat(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->GetThimbleRotationsQ(); +} + +TArray USGSenseGlovePoseKismetLibrary::GetThimbleRotations_FRotator(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->GetThimbleRotations(); +} + +TArray USGSenseGlovePoseKismetLibrary::GetTotalGloveAngles(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->GetTotalGloveAngles(); +} + +TArray USGSenseGlovePoseKismetLibrary::CalculateFingertips( + const USGSenseGlovePose* SenseGlovePose, const TArray& FingerOffsets) +{ + return SenseGlovePose->CalculateFingertips(FingerOffsets); +} + +bool USGSenseGlovePoseKismetLibrary::Equals(const USGSenseGlovePose* A, const USGSenseGlovePose* B) +{ + return A->Equals(B); +} + +FString USGSenseGlovePoseKismetLibrary::ToString(const USGSenseGlovePose* SenseGlovePose, const bool bShortFormat) +{ + return SenseGlovePose->ToString(bShortFormat); +} + +FString USGSenseGlovePoseKismetLibrary::SGSerialize(const USGSenseGlovePose* SenseGlovePose) +{ + return SenseGlovePose->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.cpp new file mode 100644 index 0000000..04af2dd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.cpp @@ -0,0 +1,134 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.h" + +#include "SGCore/SGSenseGloveSensorData.h" +#include "SGUtils/SGArrayUtils.h" + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::MakeSenseGloveSensorData(UObject* WorldContextObject) +{ + return USGSenseGloveSensorData::NewSenseGloveSensorData(WorldContextObject); +} + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::MakeSenseGloveSensorData_SA_FQuatImuRotation_PV_bIP( + UObject* WorldContextObject, + const TArray& SensorAngles, + const FQuat& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + return USGSenseGloveSensorData::NewSenseGloveSensorData(WorldContextObject, SensorAngles, + ImuRotation, ParsedValues, bImuParsed); +} + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::MakeSenseGloveSensorData_SA_FRotatorImuRotation_PV_bIP( + UObject* WorldContextObject, + const TArray& SensorAngles, + const FRotator& ImuRotation, const int32 ParsedValues, const bool bImuParsed) +{ + return USGSenseGloveSensorData::NewSenseGloveSensorData(WorldContextObject, SensorAngles, + ImuRotation, ParsedValues, bImuParsed); +} + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::Empty(UObject* WorldContextObject) +{ + return USGSenseGloveSensorData::Empty(WorldContextObject); +} + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::Parse( + UObject* WorldContextObject, + const FString& RawData, const USGSenseGloveInfo* GloveInfo) +{ + return USGSenseGloveSensorData::Parse(WorldContextObject, RawData, GloveInfo); +} + +USGSenseGloveSensorData* USGSenseGloveSensorDataKismetLibrary::Deserialize(UObject* WorldContextObject, + const FString& SerializedString) +{ + return USGSenseGloveSensorData::Deserialize(WorldContextObject, SerializedString); +} + +TArray USGSenseGloveSensorDataKismetLibrary::GetSensorAngles( + const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return FSGArrayUtils::ToNestedBPArray(SenseGloveSensorData->GetSensorAngles()); +} + +TArray USGSenseGloveSensorDataKismetLibrary::GetSensorAngles_F( + const USGSenseGloveSensorData* SenseGloveSensorData, const ESGFinger Finger) +{ + return SenseGloveSensorData->GetSensorAngles(Finger); +} + +TArray USGSenseGloveSensorDataKismetLibrary::GetAngleSequence( + const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->GetAngleSequence(); +} + +FQuat USGSenseGloveSensorDataKismetLibrary::GetImuRotation_FQuat(const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->GetImuRotationQ(); +} + +FRotator USGSenseGloveSensorDataKismetLibrary::GetImuRotation_FRotator( + const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->GetImuRotation(); +} + +int32 USGSenseGloveSensorDataKismetLibrary::GetParsedValues(const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->GetParsedValues(); +} + +bool USGSenseGloveSensorDataKismetLibrary::IsImuParsed(const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->IsImuParsed(); +} + +bool USGSenseGloveSensorDataKismetLibrary::Equals(const USGSenseGloveSensorData* A, const USGSenseGloveSensorData* B) +{ + return A->Equals(B); +} + +FString USGSenseGloveSensorDataKismetLibrary::ToString(const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->ToString(); +} + +FString USGSenseGloveSensorDataKismetLibrary::SGSerialize(const USGSenseGloveSensorData* SenseGloveSensorData) +{ + return SenseGloveSensorData->SGSerialize(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.cpp new file mode 100644 index 0000000..40587b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.h" + +#include "SGCore/SGSenseGloveSensorNormalizer.h" + +USGSenseGloveSensorNormalizer* USGSenseGloveSensorNormalizerKismetLibrary::MakeSenseGloveSensorNormalizer( + UObject* WorldContextObject) +{ + return USGSenseGloveSensorNormalizer::NewSenseGloveSensorNormalizer(WorldContextObject); +} + +USGSenseGloveSensorNormalizer* USGSenseGloveSensorNormalizerKismetLibrary::MakeSenseGloveSensorNormalizer_bRH( + UObject* WorldContextObject, const bool bRightHanded) +{ + return USGSenseGloveSensorNormalizer::NewSenseGloveSensorNormalizer(WorldContextObject, bRightHanded); +} + +float USGSenseGloveSensorNormalizerKismetLibrary::NormalizeFlexion( + const USGSenseGloveSensorNormalizer* SenseGloveSensorNormalizer, const int32 Finger, const float SumFlexionAngles) +{ + return SenseGloveSensorNormalizer->NormalizeFlexion(Finger, SumFlexionAngles); +} + +float USGSenseGloveSensorNormalizerKismetLibrary::NormalizeAbduction( + const USGSenseGloveSensorNormalizer* SenseGloveSensorNormalizer, const int32 Finger, const float SumAbductionAngles) +{ + return SenseGloveSensorNormalizer->NormalizeFlexion(Finger, SumAbductionAngles); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveVarsKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveVarsKismetLibrary.cpp new file mode 100644 index 0000000..2dc7119 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSenseGloveVarsKismetLibrary.cpp @@ -0,0 +1,117 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSenseGloveVarsKismetLibrary.h" + +#include "SGCore/SGSenseGloveInfo.h" +#include "SGCore/SGSenseGloveVars.h" +#include "SGUtils/SGArrayUtils.h" + +FString USGSenseGloveVarsKismetLibrary::GetStandardConstantsString(const FString& HardwareVersion, + const float FirmwareVersion, const bool bRightHanded) +{ + return FSGSenseGloveVars::GetStandardConstantsString(HardwareVersion, FirmwareVersion, bRightHanded); +} + +FString USGSenseGloveVarsKismetLibrary::GetSensorString(const FString& HardwareVersion, const float FirmwareVersion) +{ + return FSGSenseGloveVars::GetSensorString(HardwareVersion, FirmwareVersion); +} + +TArray USGSenseGloveVarsKismetLibrary::GetStartPositions(const FString& HardwareVersion, + const bool bRightHanded) +{ + return FSGSenseGloveVars::GetStartPositions(HardwareVersion, bRightHanded); +} + +TArray USGSenseGloveVarsKismetLibrary::GetStartRotations_TArrayFQuat( + const FString& HardwareVersion, const bool bRightHanded) +{ + return FSGSenseGloveVars::GetStartRotationsQ(HardwareVersion, bRightHanded); +} + +TArray USGSenseGloveVarsKismetLibrary::GetStartRotations_TArrayFRotator( + const FString& HardwareVersion, const bool bRightHanded) +{ + return FSGSenseGloveVars::GetStartRotations(HardwareVersion, bRightHanded); +} + +TArray USGSenseGloveVarsKismetLibrary::GetGloveLengths(const FString& HardwareVersion) +{ + return FSGArrayUtils::ToNestedBPArray(FSGSenseGloveVars::GetGloveLengths(HardwareVersion)); +} + +int32 USGSenseGloveVarsKismetLibrary::GetSensors(const FString& HardwareVersion) +{ + return FSGSenseGloveVars::GetSensors(HardwareVersion); +} + +FQuat USGSenseGloveVarsKismetLibrary::GetImuCorrection_FQuat(const FString& HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + return FSGSenseGloveVars::GetImuCorrectionQ(HardwareVersion, FirmwareVersion, SubFirmwareVersion); +} + +FRotator USGSenseGloveVarsKismetLibrary::GetImuCorrection_FRotator(const FString& HardwareVersion, + const int32 FirmwareVersion, + const int32 SubFirmwareVersion) +{ + return FSGSenseGloveVars::GetImuCorrection(HardwareVersion, FirmwareVersion, SubFirmwareVersion); +} + +TArray USGSenseGloveVarsKismetLibrary::GetFunctions(const FString& HardwareVersion, + const int32 FirmwareVersion, const int32 SubFirmwareVersion) +{ + return FSGSenseGloveVars::GetFunctions(HardwareVersion, FirmwareVersion, SubFirmwareVersion); +} + +USGSenseGloveInfo* USGSenseGloveVarsKismetLibrary::GenerateGloveModel_HV_FV_SFV_bRH( + UObject* WorldContextObject, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded) +{ + return FSGSenseGloveVars::GenerateGloveModel(WorldContextObject, + HardwareVersion, FirmwareVersion, SubFirmwareVersion, bRightHanded); +} + +USGSenseGloveInfo* USGSenseGloveVarsKismetLibrary::GenerateGloveModel_HV_FV_SFV_bRH_CI( + UObject* WorldContextObject, + const FString& HardwareVersion, const int32 FirmwareVersion, const int32 SubFirmwareVersion, + const bool bRightHanded, const FString& CustomId) +{ + return FSGSenseGloveVars::GenerateGloveModel( + WorldContextObject, HardwareVersion, FirmwareVersion, SubFirmwareVersion, bRightHanded, CustomId); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSensorNormalizationKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSensorNormalizationKismetLibrary.cpp new file mode 100644 index 0000000..52f4965 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGSensorNormalizationKismetLibrary.cpp @@ -0,0 +1,111 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGSensorNormalizationKismetLibrary.h" + +#include "SGCore/SGSensorNormalization.h" + +USGSensorNormalization* USGSensorNormalizationKismetLibrary::MakeSensorNormalization(UObject* WorldContextObject) +{ + return USGSensorNormalization::NewSensorNormalization(WorldContextObject); +} + +USGSensorNormalization* USGSensorNormalizationKismetLibrary::MakeSensorNormalization_MR( + UObject* WorldContextObject, const TArray& MovementRanges) +{ + return USGSensorNormalization::NewSensorNormalization(WorldContextObject, MovementRanges); +} + +bool USGSensorNormalizationKismetLibrary::CollectsNormalization(const USGSensorNormalization* SensorNormalization) +{ + return SensorNormalization->CollectsNormalization(); +} + +void USGSensorNormalizationKismetLibrary::SetCollectNormalization(USGSensorNormalization* SensorNormalization, + const bool bCollectNormalization) +{ + SensorNormalization->SetCollectNormalization(bCollectNormalization); +} + +int32 USGSensorNormalizationKismetLibrary::GetLength(const USGSensorNormalization* SensorNormalization) +{ + return SensorNormalization->GetLength(); +} + +int32 USGSensorNormalizationKismetLibrary::GetMoveCount(const USGSensorNormalization* SensorNormalization) +{ + return SensorNormalization->GetMoveCount(); +} + +bool USGSensorNormalizationKismetLibrary::AllSensorsMoving(const USGSensorNormalization* SensorNormalization) +{ + return SensorNormalization->AllSensorsMoving(); +} + +void USGSensorNormalizationKismetLibrary::ResetNormalization(USGSensorNormalization* SensorNormalization) +{ + SensorNormalization->ResetNormalization(); +} + +void USGSensorNormalizationKismetLibrary::UpdateNormalization(USGSensorNormalization* SensorNormalization, + const float Value, const int32 Index) +{ + SensorNormalization->UpdateNormalization(Value, Index); +} + +float USGSensorNormalizationKismetLibrary::NormalizeValue(USGSensorNormalization* SensorNormalization, + const float Value, const int32 Index) +{ + return SensorNormalization->NormalizeValue(Value, Index); +} + +TArray USGSensorNormalizationKismetLibrary::NormalizeValues(USGSensorNormalization* SensorNormalization, + const TArray& Values) +{ + return SensorNormalization->NormalizeValues(Values); +} + +bool USGSensorNormalizationKismetLibrary::MovedEnough(const USGSensorNormalization* SensorNormalization, + const int32 Index) +{ + return SensorNormalization->MovedEnough(Index); +} + +float USGSensorNormalizationKismetLibrary::Denormalize( + const USGSensorNormalization* SensorNormalization, + const float Value01, const int32 Index, const float FallbackValue) +{ + return SensorNormalization->Denormalize(Value01, Index, FallbackValue); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGThresholdCommandKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGThresholdCommandKismetLibrary.cpp new file mode 100644 index 0000000..be598f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGThresholdCommandKismetLibrary.cpp @@ -0,0 +1,103 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGThresholdCommandKismetLibrary.h" + +#include "SGCore/SGThresholdCommand.h" + +USGThresholdCommand* USGThresholdCommandKismetLibrary::MakeThresholdCommand(UObject* WorldContextObject) +{ + return USGThresholdCommand::NewThresholdCommand(WorldContextObject); +} + +USGThresholdCommand* USGThresholdCommandKismetLibrary::MakeThresholdCommand_AF_TV( + UObject* WorldContextObject, + const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + return USGThresholdCommand::NewThresholdCommand(WorldContextObject, AffectedFingers, ThresholdValues); +} + +float USGThresholdCommandKismetLibrary::GetThreshold(const USGThresholdCommand* ThresholdCommand, const int32 Finger) +{ + return ThresholdCommand->GetThreshold(Finger); +} + +void USGThresholdCommandKismetLibrary::SetThreshold(USGThresholdCommand* ThresholdCommand, + const int32 Finger, const float ThresholdValue) +{ + ThresholdCommand->SetThreshold(Finger, ThresholdValue); +} + +TArray USGThresholdCommandKismetLibrary::GetThresholds(const USGThresholdCommand* ThresholdCommand) +{ + return ThresholdCommand->GetThresholds(); +} + +void USGThresholdCommandKismetLibrary::SetThresholds( + USGThresholdCommand* ThresholdCommand, + const TArray& AffectedFingers, const TArray& ThresholdValues) +{ + ThresholdCommand->SetThresholds(AffectedFingers, ThresholdValues); +} + +bool USGThresholdCommandKismetLibrary::GetFingerActive(const USGThresholdCommand* ThresholdCommand, const int32 Finger) +{ + return ThresholdCommand->GetFingerActive(Finger); +} + +TArray USGThresholdCommandKismetLibrary::GetActiveFingers(const USGThresholdCommand* ThresholdCommand) +{ + return ThresholdCommand->GetActiveFingers(); +} + +void USGThresholdCommandKismetLibrary::ClearThreshold(USGThresholdCommand* ThresholdCommand, const int32 Finger) +{ + ThresholdCommand->ClearThreshold(Finger); +} + +void USGThresholdCommandKismetLibrary::ClearThresholds(USGThresholdCommand* ThresholdCommand) +{ + ThresholdCommand->ClearThresholds(); +} + +bool USGThresholdCommandKismetLibrary::Equals(const USGThresholdCommand* A, const USGThresholdCommand* B) +{ + return A->Equals(B); +} + +FString USGThresholdCommandKismetLibrary::ToString(const USGThresholdCommand* ThresholdCommand) +{ + return ThresholdCommand->ToString(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp new file mode 100644 index 0000000..21fcc15 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SGCoreKismet/SGTrackingKismetLibrary.cpp @@ -0,0 +1,580 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGCoreKismet/SGTrackingKismetLibrary.h" + +#include "SGCore/SGTracking.h" + +void USGTrackingKismetLibrary::CalculateLocation_TP_FQuat_TR_PO_FQuat_RO_OutNP_FQuat_OutNR( + const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation) +{ + return FSGTracking::CalculateLocation(TrackedPosition, TrackedRotation, PositionOffset, RotationOffset, + OutNewPosition, OutNewRotation); +} + +void USGTrackingKismetLibrary::CalculateLocation_TP_FRotator_TR_PO_FRotator_RO_OutNP_FRotator_OutNR( + const FVector& TrackedPosition, const FRotator& TrackedRotation, + const FVector& PositionOffset, const FRotator& RotationOffset, + FVector& OutNewPosition, FRotator& OutNewRotation) +{ + return FSGTracking::CalculateLocation(TrackedPosition, TrackedRotation, PositionOffset, RotationOffset, + OutNewPosition, OutNewRotation); +} + +TArray USGTrackingKismetLibrary::GetSenseGloveFingerToGlovePositionOrigin() +{ + return FSGTracking::GetSenseGloveFingerToGlovePositionOrigin(); +} + +TArray USGTrackingKismetLibrary::GetSenseGloveFingerToGloveRotationOrigin_TArrayFQuat() +{ + return FSGTracking::GetSenseGloveFingerToGloveRotationOriginQ(); +} + +TArray USGTrackingKismetLibrary::GetSenseGloveFingerToGloveRotationOrigin_TArrayFRotator() +{ + return FSGTracking::GetSenseGloveFingerToGloveRotationOrigin(); +} + +FVector USGTrackingKismetLibrary::GetSenseGloveWristPositionOffset() +{ + return FSGTracking::GetSenseGloveWristPositionOffset(); +} + +FQuat USGTrackingKismetLibrary::GetSenseGloveWristRotationOffset_FQuat() +{ + return FSGTracking::GetSenseGloveWristRotationOffsetQ(); +} + +FRotator USGTrackingKismetLibrary::GetSenseGloveWristRotationOffset_FRotator() +{ + return FSGTracking::GetSenseGloveWristRotationOffset(); +} + +void USGTrackingKismetLibrary::GetSenseGloveMountOffset_bRH_TF_OutIP_FQuat_OutIR( + const bool bRightHanded, const ESGFinger ToFinger, + FVector& OutIPosition, FQuat& OutIRotation) +{ + return FSGTracking::GetSenseGloveMountOffset(bRightHanded, ToFinger, OutIPosition, OutIRotation); +} + +void USGTrackingKismetLibrary::GetSenseGloveMountOffset_bRH_TF_OutIP_FRotator_OutIR( + const bool bRightHanded, const ESGFinger ToFinger, + FVector& OutIPosition, FRotator& OutIRotation) +{ + return FSGTracking::GetSenseGloveMountOffset(bRightHanded, ToFinger, OutIPosition, OutIRotation); +} + +void USGTrackingKismetLibrary::GetSenseGloveTrackerMountOffset_H_bRH_OutPO_FQuat_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + return FSGTracking::GetSenseGloveTrackerMountOffset(Hardware, bRightHanded, + OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetSenseGloveTrackerMountOffset_H_bRH_OutPO_FRotator_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + return FSGTracking::GetSenseGloveTrackerMountOffset(Hardware, bRightHanded, + OutPositionOffset, OutRotationOffset); +} + +FVector USGTrackingKismetLibrary::GetSenseGloveViveToAttachPosition() +{ + return FSGTracking::GetSenseGloveViveToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetSenseGloveViveToAttachRotation_FQuat() +{ + return FSGTracking::GetSenseGloveViveToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetSenseGloveViveToAttachRotation_FRotator() +{ + return FSGTracking::GetSenseGloveViveToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetSenseGloveOculusTouchToAttachPosition() +{ + return FSGTracking::GetSenseGloveOculusTouchToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetSenseGloveOculusTouchToAttachRotation_FQuat() +{ + return FSGTracking::GetSenseGloveOculusTouchToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetSenseGloveOculusTouchToAttachRotation_FRotator() +{ + return FSGTracking::GetSenseGloveOculusTouchToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetNovaToWristPositionOffset() +{ + return FSGTracking::GetNovaToWristPositionOffset(); +} + +FQuat USGTrackingKismetLibrary::GetNovaToWristRotationOffset_FQuat() +{ + return FSGTracking::GetNovaToWristRotationOffsetQ(); +} + +FRotator USGTrackingKismetLibrary::GetNovaToWristRotationOffset_FRotator() +{ + return FSGTracking::GetNovaToWristRotationOffset(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaViveToAttachPosition() +{ + return FSGTracking::GetRightNovaViveToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaViveToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaViveToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaViveToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaViveToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaViveToAttachPosition() +{ + return FSGTracking::GetLeftNovaViveToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaViveToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaViveToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaViveToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaViveToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaQuest2ToAttachPosition() +{ + return FSGTracking::GetRightNovaQuest2ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaQuest2ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaQuest2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaQuest2ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaQuest2ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaQuest2ToAttachPosition() +{ + return FSGTracking::GetLeftNovaQuest2ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaQuest2ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaQuest2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaQuest2ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaQuest2ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaPico2ToAttachPosition() +{ + return FSGTracking::GetRightNovaPico2ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaPico2ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaPico2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaPico2ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaPico2ToAttachRotation(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaPico2ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaPico2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaPico2ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaPico2ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaQuestProToAttachPosition() +{ + return FSGTracking::GetRightNovaQuestProToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaQuestProToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaQuestProToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaQuestProToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaQuestProToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaQuestProToAttachPosition() +{ + return FSGTracking::GetLeftNovaQuestProToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaQuestProToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaQuestProToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaQuestProToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaQuestProToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaViveFocus3ToAttachPosition() +{ + return FSGTracking::GetRightNovaViveFocus3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaViveFocus3ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaViveFocus3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaViveFocus3ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaViveFocus3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaViveFocus3ToAttachPosition() +{ + return FSGTracking::GetLeftNovaViveFocus3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaViveFocus3ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaViveFocus3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaViveFocus3ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaViveFocus3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachPosition() +{ + return FSGTracking::GetRightNovaQuest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNovaQuest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNovaQuest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNovaQuest3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachPosition() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNovaQuest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNovaQuest3ToAttachRotation(); +} + +void USGTrackingKismetLibrary::GetNovaGloveWristOffset_bRH_OutPO_FQuat_OutRO( + const bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + return FSGTracking::GetNovaGloveWristOffset(bRightHanded, OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetNovaGloveWristOffset_bRH_OutPO_FRotator_OutRO( + const bool bRightHanded, FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + return FSGTracking::GetNovaGloveWristOffset(bRightHanded, OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetNovaGloveTrackerOffset_H_bRH_OutPO_FQuat_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + return FSGTracking::GetNovaGloveTrackerOffset(Hardware, bRightHanded, OutPositionOffset, OutRotationOffset); +} + +void +USGTrackingKismetLibrary::GetNovaGloveTrackerOffset_H_bRH_OutPO_FRotator_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + return FSGTracking::GetNovaGloveTrackerOffset(Hardware, bRightHanded, OutPositionOffset, OutRotationOffset); +} + +FVector USGTrackingKismetLibrary::GetRightNova2ToWristPositionOffset() +{ + return FSGTracking::GetRightNova2ToWristPositionOffset(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2ToWristRotationOffset_FQuat() +{ + return FSGTracking::GetRightNova2ToWristRotationOffsetQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2ToWristRotationOffset_FRotator() +{ + return FSGTracking::GetRightNova2ToWristRotationOffset(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2ToWristPositionOffset() +{ + return FSGTracking::GetLeftNova2ToWristPositionOffset(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2ToWristRotationOffset_FQuat() +{ + return FSGTracking::GetLeftNova2ToWristRotationOffsetQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2ToWristRotationOffset_FRotator() +{ + return FSGTracking::GetLeftNova2ToWristRotationOffset(); +} + +FVector USGTrackingKismetLibrary::GetRightNova2Quest2ToAttachPosition() +{ + return FSGTracking::GetRightNova2Quest2ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2Quest2ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2Quest2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2Quest2ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2Quest2ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2Quest2ToAttachPosition() +{ + return FSGTracking::GetLeftNova2Quest2ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2Quest2ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2Quest2ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2Quest2ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2Quest2ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNova2QuestProToAttachPosition() +{ + return FSGTracking::GetRightNova2QuestProToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2QuestProToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2QuestProToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2QuestProToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2QuestProToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2QuestProToAttachPosition() +{ + return FSGTracking::GetLeftNova2QuestProToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2QuestProToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2QuestProToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2QuestProToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2QuestProToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNova2ViveTrackerToAttachPosition() +{ + return FSGTracking::GetRightNova2ViveTrackerToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2ViveTrackerToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2ViveTrackerToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2ViveTrackerToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2ViveTrackerToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2ViveTrackerToAttachPosition() +{ + return FSGTracking::GetLeftNova2ViveTrackerToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2ViveTrackerToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2ViveTrackerToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2ViveTrackerToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2ViveTrackerToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNova2ViveWristTrackerToAttachPosition() +{ + return FSGTracking::GetRightNova2ViveWristTrackerToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2ViveWristTrackerToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2ViveWristTrackerToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2ViveWristTrackerToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2ViveWristTrackerToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2ViveWristTrackerToAttachPosition() +{ + return FSGTracking::GetLeftNova2ViveWristTrackerToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2ViveWristTrackerToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2ViveWristTrackerToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2ViveWristTrackerToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2ViveWristTrackerToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachPosition() +{ + return FSGTracking::GetRightNova2Quest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetRightNova2Quest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetRightNova2Quest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetRightNova2Quest3ToAttachRotation(); +} + +FVector USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachPosition() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachPosition(); +} + +FQuat USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachRotation_FQuat() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachRotationQ(); +} + +FRotator USGTrackingKismetLibrary::GetLeftNova2Quest3ToAttachRotation_FRotator() +{ + return FSGTracking::GetLeftNova2Quest3ToAttachRotation(); +} + +void USGTrackingKismetLibrary::GetNova2GloveWristOffset_bRH_HW_OutPO_FQuat_OutRO( + const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + return FSGTracking::GetNova2GloveWristOffset(bRightHanded, HardwareVersion, + OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetNova2GloveWristOffset_bRH_HW_OutPO_FRotator_OutRO( + const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + return FSGTracking::GetNova2GloveWristOffset(bRightHanded, HardwareVersion, + OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetNova2GloveTrackerOffset_H_bRH_HW_OutPO_FQuat_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset) +{ + return FSGTracking::GetNova2GloveTrackerOffset(Hardware, bRightHanded, HardwareVersion, + OutPositionOffset, OutRotationOffset); +} + +void USGTrackingKismetLibrary::GetNova2GloveTrackerOffset_H_bRH_HW_OutPO_FRotator_OutRO( + const ESGPositionalTrackingHardware Hardware, const bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset) +{ + return FSGTracking::GetNova2GloveTrackerOffset(Hardware, bRightHanded, HardwareVersion, + OutPositionOffset, OutRotationOffset); +} + +FString USGTrackingKismetLibrary::ToString(const ESGPositionalTrackingHardware Hardware) +{ + return FSGTracking::ToString(Hardware); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.cpp new file mode 100644 index 0000000..6e5797c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCoreKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveCoreKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveCoreKismetModule, SenseGloveCoreKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.cpp new file mode 100644 index 0000000..c7a98c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveCoreKismetModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveCoreKismetModule" + +void FSenseGloveCoreKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveCoreKismet module..."); +} + +void FSenseGloveCoreKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveCoreKismet module..."); +} + +void FSenseGloveCoreKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveCoreKismet module has succeeded!"); +} + +void FSenseGloveCoreKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveCoreKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.h new file mode 100644 index 0000000..e95e69e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Private/SenseGloveCoreKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveCoreKismet" + +class FSenseGloveCoreKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGAnatomyKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGAnatomyKismetLibrary.h new file mode 100644 index 0000000..a02787d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGAnatomyKismetLibrary.h @@ -0,0 +1,133 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Hard-Coded Database that is used in calibration and in solving. + * Values herein are used to limit outputs within 'natural' ranges. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGAnatomyKismetLibrary.generated.h" + +/** + * "Database" of anatomical values, such as joint limits. + */ +UCLASS(meta=(ScriptName = "SenseGloveAnatomyKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGAnatomyKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Total sum of all finger flexion that would be considered "total flexion". + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetTotalFingerFlexion(); + + /** + * Total sum of all finger flexion that would be considered "total extension". + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetTotalFingerExtension(); + + /** + * Total sum of all thumb flexion that would be considered "total flexion". + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetTotalThumbFlexion(); + + /** + * Total sum of all thumb flexion that would be considered "total extension". + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetTotalThumbExtension(); + + /** + * Retrieve one of the limits of a finger joint's movement. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetFingerJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + /** + * Retrieve one of the limits of a thumb joint's movement. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float GetThumbJointLimit(bool bRightHanded, int32 Joint, int32 Movement, bool bMax); + + /* + * Limit a value between specific joint angles. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float ClampJointAngle(float Value, int32 Finger, bool bRightHand, int32 Joint, int32 Movement); + + /** + * Convert a total finger flexion in degrees. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float NormalizeFingerFlexion(float FlexionInDegrees); + + /** + * Convert a total thumb flexion in degrees. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static float NormalizeThumbFlexion(float FlexionInDegrees); + + /** + * Get Hand Angles that would make a Default (Idle) Pose. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static TArray GetDefaultHandAngles(bool bRightHanded); + + /** + * Get Hand Angles that would make a flat hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static TArray GetFlatHandAngles(bool bRightHanded); + + /** + * Get hand angles that would make a thumbs up. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static TArray GetThumbsUpHandAngles(bool bRightHanded); + + /** + * Get Hand Angles that would make a fist. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Anatomy") + static TArray GetFistHandAngles(bool bRightHanded); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBasicHandModelKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBasicHandModelKismetLibrary.h new file mode 100644 index 0000000..7dec51b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBasicHandModelKismetLibrary.h @@ -0,0 +1,304 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A data class containing the minimum required data for a hand's forward + * kinematics. + * Used in both kinematics and calibration. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGFloatArray.h" + +#include "SGBasicHandModelKismetLibrary.generated.h" + +class USGBasicHandModel; + +/** + * Represents data of a user's hand required for forward kinematics. + */ +UCLASS(meta=(ScriptName = "SenseGloveBasicHandModelKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGBasicHandModelKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The basic class constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* MakeBasicHandModel(UObject* WorldContextObject); + + /** + * Create a new BasicHandModel with no starting rotations. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Basic Hand Model", + Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* MakeBasicHandModel_bRH_L_SP( + UObject* WorldContextObject, + bool bRightHanded, const TArray& Lengths, const TArray& StartPositions); + + /** + * Create a new BasicHandModel. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Basic Hand Model", + Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* MakeBasicHandModel_bRH_L_SP_TArrayFQuat_SR( + UObject* WorldContextObject, + bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Create a new BasicHandModel. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Basic Hand Model", + Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* MakeBasicHandModel_bRH_L_SP_TArrayFRotator_SR( + UObject* WorldContextObject, + bool bRightHanded, const TArray& Lengths, + const TArray& StartPositions, const TArray& StartRotations); + + /** + * Retrieve a default left or right hand model. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* Default(UObject* WorldContextObject, bool bRightHanded); + + /** + * Convert a serialized HandModel back into its class representation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model", + meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Default finger lengths (based on right hand). + * + * @remarks Any missing fingers are replaced with their respective value. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetBaseFingerLengths(); + + /** + * Default joint positions (based on right hand). + * + * @remarks Any missing positions are replaced with their respective value. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetBaseJointPositions(); + + /** + * Default joint angles (based on right hand). + * + * @remarks Any missing angles are replaced with their respective value. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetBaseJointAngles(); + + /** + * Whether or not this BasicHandModel was created for a left- or right hand. Used for validation. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static bool IsRight(const USGBasicHandModel* BasicHandModel); + + /** + * The length of individual finger phalangers in mm, sorted per finger. Generally 5x3. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetFingerLengths(const USGBasicHandModel* BasicHandModel); + + /** + * Retrieve the finger lengths of a specific finger in cm. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Finger Lengths", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetFingerLengths_F(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Set the finger lengths of a specific finger in cm. + */ + UFUNCTION(BlueprintCallable, DisplayName="Set Finger Lengths", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetFingerLengths_ESGFinger_F_L(UPARAM(ref) USGBasicHandModel* BasicHandModel, ESGFinger Finger, + const TArray& Lengths); + + /** + * Set the finger lengths of a specific finger in cm. + */ + UFUNCTION(BlueprintCallable, DisplayName="Set Finger Lengths", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetFingerLengths_uint8_F_L(UPARAM(ref) USGBasicHandModel* BasicHandModel, uint8 Finger, + const TArray& Lengths); + + /** + * Get the finger ratios of all fingers. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + TArray GetFingerRatios(const USGBasicHandModel* BasicHandModel) const; + + /** + * Get the finger ratios of a specific finger. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Finger Ratios", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetFingerRatios_F(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Starting joint positions relative to the device Origin. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetStartJointPositions(const USGBasicHandModel* BasicHandModel); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Set Start Joint Position", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetStartJointPosition_ESGFinger_F_P(UPARAM(ref) USGBasicHandModel* BasicHandModel, ESGFinger Finger, + const FVector& Position); + + /** + * + */ + UFUNCTION(BlueprintPure, DisplayName="Set Start Joint Position", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetStartJointPosition_uint8_F_P(UPARAM(ref) USGBasicHandModel* BasicHandModel, uint8 Finger, + const FVector& Position); + + /** + * Starting joint rotations relative to the device Origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Joint Rotations", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetStartJointRotations_TArrayFQuat(const USGBasicHandModel* BasicHandModel); + + /** + * Starting joint rotations relative to the device Origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Joint Rotations", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetStartJointRotations_TArrayFRotator(const USGBasicHandModel* BasicHandModel); + + /** + * Retrieve the start position of a specific finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FVector GetJointPosition(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Set the start position of a specific finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetJointPosition(UPARAM(ref) USGBasicHandModel* BasicHandModel, const FVector& NewPosition, + ESGFinger Finger); + + /** + * Retrieve the start rotation of a specific finger. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotation", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FQuat GetJointRotation_FQuat(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Retrieve the start rotation of a specific finger. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotation", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FRotator GetJointRotation_FRotator(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Set the start rotation of a specific finger. + */ + UFUNCTION(BlueprintCallable, DisplayName="Set Joint Rotation", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetJointRotation_FQuat_NR_F( + UPARAM(ref) USGBasicHandModel* BasicHandModel, const FQuat& NewRotation, ESGFinger Finger); + + /** + * Set the start rotation of a specific finger. + */ + UFUNCTION(BlueprintCallable, DisplayName="Set Joint Rotation", + Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static void SetJointRotation_FRotator_NR_F( + UPARAM(ref) USGBasicHandModel* BasicHandModel, const FRotator& NewRotation, ESGFinger Finger); + + /** + * Get the total lengths of fingers, in cm. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray GetTotalLengths(const USGBasicHandModel* BasicHandModel); + + /** + * Get the total length of a specific finger, in mm. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static float GetTotalLength(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Retrieve the lengths of a specific finger, as BasicHandModel representation (L, 0, 0). + * + * @remarks Used for forwards kinematics. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static TArray Get3DLengths(const USGBasicHandModel* BasicHandModel, ESGFinger Finger); + + /** + * Check if this BasicHandModel has the same values as another BasicHandModel. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static bool Equals(const USGBasicHandModel* A, const USGBasicHandModel* B); + + /** + * Convert this handModel into a string notation, readable for humans. Does not include starting positions / rotations. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FString ToString(const USGBasicHandModel* BasicHandModel); + + /** + * Convert this handModel into a string notation, readable for humans. Optionally includes starting positions / rotations. + */ + UFUNCTION(BlueprintPure, DisplayName="To String", Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FString ToString_bLO(const USGBasicHandModel* BasicHandModel, bool bLengthsOnly); + + /** + * Serialize this HandModel into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Kinematics | Basic Hand Model") + static FString SGSerialize(const USGBasicHandModel* BasicHandModel); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBetaDeviceKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBetaDeviceKismetLibrary.h new file mode 100644 index 0000000..91be3bf --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGBetaDeviceKismetLibrary.h @@ -0,0 +1,122 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Represents a Sense Glove Device that has no specific class within the API. + * Used to test different iterations of the same product before integrating it + * into the Core API. + * Allows access to raw sensor values and commands of such a device. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGBetaDeviceKismetLibrary.generated.h" + +class USGBetaDevice; + +/** + * A Device that adheres to the SenseGlove communications protocol, but which has no implementation in this API. + */ +UCLASS(meta=(ScriptName = "SenseGloveBetaDeviceKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGBetaDeviceKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Deserialize a beta device from its basic constants string. Returns nullptr is unsuccessful. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Beta Device", meta=(WorldContext="WorldContextObject")) + static USGBetaDevice* Parse(UObject* WorldContextObject, const FString& String); + + /** + * Get the DeviceType enumerator of this SenseGlove, used in DeviceList enumeration. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static ESGDeviceType GetDeviceType(const USGBetaDevice* BetaDevice); + + /** + * Get the unique identifier of this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString GetDeviceId(const USGBetaDevice* BetaDevice); + + /** + * Retrieve this device's hardware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString GetHardwareVersion(const USGBetaDevice* BetaDevice); + + /** + * Retrieve this device's firmware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static int32 GetFirmwareVersion(const USGBetaDevice* BetaDevice); + + /** + * Retrieve this device's sub-firmware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static int32 GetSubFirmwareVersion(const USGBetaDevice* BetaDevice); + + /** + * Retrieve the constants string for additional processing. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString GetConstantsString(const USGBetaDevice* BetaDevice); + + /** + * Retrieve a raw sensor string from this Beta Device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString GetSensorData(const USGBetaDevice* BetaDevice); + + /** + * Retrieve the last command retrieved from this Beta Device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString GetLastCommand(const USGBetaDevice* BetaDevice); + + /** + * Send a raw string command to this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static bool SendHaptics(const USGBetaDevice* BetaDevice, const FString& Command); + + /** + * Create a string representation of this device for reporting purposes. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Beta Device") + static FString ToString(const USGBetaDevice* BetaDevice); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGCustomWaveformKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGCustomWaveformKismetLibrary.h new file mode 100644 index 0000000..31050e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGCustomWaveformKismetLibrary.h @@ -0,0 +1,267 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Describes a vibration based on a number of parameters. Is sent to Nova Gloves + * to be generated on the hardware and played. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGCustomWaveformKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGCustomWaveform; + +/** + * A single vibration pulse for Nova Gloves. + */ +UCLASS(meta=(ScriptName = "SenseGloveCustomWaveformKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGCustomWaveformKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform", + meta=(WorldContext="WorldContextObject")) + static USGCustomWaveform* MakeCustomWaveform(UObject* WorldContextObject); + + /** + * Create a new instance of CustomWaveform. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Custom Waveform", Category="SenseGlove | Core | CV | Custom Waveform", + meta=(WorldContext="WorldContextObject")) + static USGCustomWaveform* MakeCustomWaveform_A_D( + UObject* WorldContextObject, + float Amplitude, float Duration); + + /** + * Create a new instance of CustomWaveform. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Custom Waveform", Category="SenseGlove | Core | CV | Custom Waveform", + meta=(WorldContext="WorldContextObject")) + static USGCustomWaveform* MakeCustomWaveform_A_D_F( + UObject* WorldContextObject, + float Amplitude, float Duration, float Frequency); + + /** + * Creates a string representation of the ESGWaveformType. + */ + UFUNCTION(BlueprintCallable, DisplayName="ToString", Category="SenseGlove | Core | CV | Custom Waveform") + static FString ToString_T(ESGWaveformType Type); + + /** + * Get the total amplitude of the wave-from, represented by 0 (off) or 1 (maximum value). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetAmplitude(const USGCustomWaveform* CustomWaveform); + + /** + * Set the total amplitude of the wave-from, represented by 0 (off) or 1 (maximum value). + * @param Amplitude + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetAmplitude(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Amplitude); + + /** + * Get the Type of waveform pattern that is used. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + ESGWaveformType GetWaveType(const USGCustomWaveform* CustomWaveform); + + /** + * Set the Type of waveform pattern that is used. + * @param Type + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetWaveType(UPARAM(ref) USGCustomWaveform* CustomWaveform, ESGWaveformType Type); + + /** + * Get whether or not this Waveform is infinitely repeating. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static bool IsInfinite(const USGCustomWaveform* CustomWaveform); + + /** + * Set whether or not this Waveform is infinitely repeating. + * @param bInfinite + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetInfinite(UPARAM(ref) USGCustomWaveform* CustomWaveform, bool bInfinite); + + /** + * Get the amount of times to repeat this waveform. 1 is the default. If set to 0, repeats indefinitely. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform", meta=(WorldContext="WorldContextObject")) + int32 GetRepeatAmount(const USGCustomWaveform* CustomWaveform); + + /** + * Set the amount of times to repeat this waveform. 1 is the default. If set to 0, repeats indefinitely. + * @param Amount + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetRepeatAmount(UPARAM(ref) USGCustomWaveform* CustomWaveform, int32 Amount); + + /** + * Get time, in seconds, before the signal reaches its maximum amplitude. Limited to 0.01 - 1s. Set to 0 for an + * instant start. Linear only. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetAttackTime(const USGCustomWaveform* CustomWaveform); + + /** + * Set time, in seconds, before the signal reaches its maximum amplitude. Limited to 0.01 - 1s. Set to 0 for an + * instant start. Linear only. + * @param Time + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetAttackTime(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Time); + + /** + * Get time, in seconds, to keep the signal at one Amplitude. Limited to 0.01 - 1s. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetSustainTime(const USGCustomWaveform* CustomWaveform); + + /** + * Set time, in seconds, to keep the signal at one Amplitude. Limited to 0.01 - 1s. + * @param Time + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetSustainTime(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Time); + + /** + * Get time it takes for the effect to fade out after AttackTime+SustainTime has passed. Limited to 0.01 - 1s. Set + * to 0 for instant stop. Linear only. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetDecayTime(const USGCustomWaveform* CustomWaveform); + + /** + * Set time it takes for the effect to fade out after AttackTime+SustainTime has passed. Limited to 0.01 - 1s. Set + * to 0 for instant stop. Linear only. + * @param Time + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetDecayTime(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Time); + + /** + * Get the Wave-from Frequency at the start of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetFrequencyStart(const USGCustomWaveform* CustomWaveform); + + /** + * Set the Wave-from Frequency at the start of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + * @param Frequency + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetFrequencyStart(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Frequency); + + /** + * Get the Wave-from Frequency at the end of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform", + meta=(WorldContext="WorldContextObject")) + static float GetFrequencyEnd(const USGCustomWaveform* CustomWaveform); + + /** + * Set the Wave-from Frequency at the end of the wave-from. Limited between [10 - 500Hz] for Nova Gloves. + * @param Frequency + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform", + meta=(WorldContext="WorldContextObject")) + static void SetFrequencyEnd(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Frequency); + + /** + * Get value of [0..1], representing a percentage of total time (attack+sustain+decay). After that moment passes, + * we increase the frequency by FrequencySwitch factor. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetFrequencySwitchTime(const USGCustomWaveform* CustomWaveform); + + /** + * Set value of [0..1], representing a percentage of total time (attack+sustain+decay). After that moment passes, + * we increase the frequency by FrequencySwitch factor. + * @param Time + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetFrequencySwitchTime(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Time); + + /** + * After a certain % of the waveform (FrequencySwitchTime) plays, multiply the frequency by this factor [1x .. 3x]. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetFrequencySwitchFactor(const USGCustomWaveform* CustomWaveform); + + /** + * After a certain % of the waveform (FrequencySwitchTime) plays, multiply the frequency by this factor [1x .. 3x]. + * param Time + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | CV | Custom Waveform") + static void SetFrequencySwitchFactor(UPARAM(ref) USGCustomWaveform* CustomWaveform, float Time); + + /** + * The total command time of a single play of this pattern (not taking into account the RepeatAmount). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetEffectTime(const USGCustomWaveform* CustomWaveform); + + /** + * Total time for the entire effect (effect time multiplied by the repeat amount). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static float GetTotalEffectTime(const USGCustomWaveform* CustomWaveform); + + /** + * If true, the frequency of this waveform jumps at any time during its playtime by FrequencySwitchFactor. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static bool FrequencyJumps(const USGCustomWaveform* CustomWaveform); + + /** + * Check if this CustomWaveform is roughly equal to another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static bool Equals(const USGCustomWaveform* A, const USGCustomWaveform* B); + + /** + * Create a string representation of this CustomWaveform. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | CV | Custom Waveform") + static FString ToString(const USGCustomWaveform* CustomWaveform); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceKismetLibrary.h new file mode 100644 index 0000000..fa52ce6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceKismetLibrary.h @@ -0,0 +1,239 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Represents a Device built by the Sense Glove company that is compatible with + * our Communications Protocol. All such devices derive from this abstract + * class. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGDeviceKismetLibrary.generated.h" + +class USGDevice; +class USGHapticChannelInfo; + +UCLASS(meta=(ScriptName = "SenseGloveSGDeviceKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGDeviceKismetLibrary : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Parse a main and sub firmware version from its raw (v4.12) notation + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice") + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + + /** + * If true, my firmware is newer than the reference firmware. + * @param MyFirmwareMain + * @param MyFirmwareSub + * @param ReferenceMain + * @param ReferenceSub + * @param bInclusive + */ + UFUNCTION(BlueprintCallable, DisplayName="Firmware Newer Than", Category="SenseGlove | Core | SGDevice") + static bool FirmwareNewerThan_MF_MF_RM_RS_bI(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + + /** + * If true, my firmware is older than the reference firmware. + * @param MyFirmwareMain + * @param MyFirmwareSub + * @param ReferenceMain + * @param ReferenceSub + * @param bInclusive + */ + UFUNCTION(BlueprintCallable, DisplayName="Firmware Older Than", Category="SenseGlove | Core | SGDevice") + static bool FirmwareOlderThan_MF_MF_RM_RS_bI(int32 MyFirmwareMain, int32 MyFirmwareSub, + int32 ReferenceMain, int32 ReferenceSub, + bool bInclusive); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="To String", Category="SenseGlove | Core | SGDevice") + static FString ToString_DT(ESGDeviceType DeviceType); + + /** + * Check which DeviceType this class belongs to. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static ESGDeviceType GetDeviceType(const USGDevice* SGDevice); + + /** + * Retrieve this device's unique identifier. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static FString GetDeviceId(const USGDevice* SGDevice); + + /** + * Retrieve this device's hardware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static FString GetHardwareVersion(const USGDevice* SGDevice); + + /** + * Retrieve this device's main firmware version. v4.12 returns 4. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static int32 GetFirmwareVersion(const USGDevice* SGDevice); + + /** + * Retrieve this device's sub firmware version. v4.12 returns 12. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static int32 GetSubFirmwareVersion(const USGDevice* SGDevice); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static FString GetFirmwareString(const USGDevice* SGDevice); + + /** + * Returns true if this glove's firmware is newer than certain version. + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + UFUNCTION(BlueprintPure, DisplayName="Firmware Newer Than", Category="SenseGlove | Core | SGDevice") + bool FirmwareNewerThan_FM_FS_bI(const USGDevice* SGDevice, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive); + + /** + * Returns true if this glove's firmware is older than certain version. + * @param FirmwareMain + * @param FirmwareSub + * @param bInclusive + */ + UFUNCTION(BlueprintPure, DisplayName="Firmware Older Than", Category="SenseGlove | Core | SGDevice") + static bool FirmwareOlderThan_FM_FS_bI(const USGDevice* SGDevice, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive); + + /** + * Retrieve this Device's Serial/Bluetooth address. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static FString GetAddress(const USGDevice* SGDevice); + + /** + * Check if this device is currently connected to the system. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static bool IsConnected(const USGDevice* SGDevice); + + /** + * Retrieve the connection type of this Sense Glove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static ESGConnectionType GetConnectionType(const USGDevice* SGDevice); + + /** + * Retrieve the device's Packets per Second Variable. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static int32 PacketsPerSecondReceived(const USGDevice* SGDevice); + + /** + * Retrieve the device's Packets per Second Variable. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static int32 PacketsPerSecondSent(const USGDevice* SGDevice); + + /** + * Retrieve the index of this device within SenseCom. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static int32 GetDeviceIndex(const USGDevice* SGDevice); + + /** + * Change this device's index within the SenseCom. Warning: Can cause errors. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice") + static void SetDeviceIndex(UPARAM(ref) USGDevice* SGDevice, int32 NewIndex); + + /** + * Returns true if this device is connected over a connection other than usb cable. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static bool IsWireless(const USGDevice* SGDevice); + + /** + * Returns true if this device operates on a battery. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static bool HasBattery(const USGDevice* SGDevice); + + /** + * Returns true if this device is currently charging. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice") + static bool IsCharging(UPARAM(ref) USGDevice* SGDevice); + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice") + static bool GetBatteryLevel(UPARAM(ref) USGDevice* SGDevice, float& OutLevel); + + /** + * Assign this Device's Haptic Channels. Should not be done outside the API unless you know what you're doing. + * @param Channels + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SGDevice") + static void SetHapticChannels(UPARAM(ref) USGDevice* SGDevice, const USGHapticChannelInfo* Channels); + + /** + * The number of haptic channels this device can support. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Haptic Channel Index", Category="SenseGlove | Core | SGDevice") + static int32 GetHapticChannelCount(const USGDevice* SGDevice); + + /** + * How many channels of a specific type this SGDevice possesses. + * @param ChannelType + */ + UFUNCTION(BlueprintPure, DisplayName="Get Haptic Channel Index", Category="SenseGlove | Core | SGDevice") + static int32 GetHapticChannelCount_CT(const USGDevice* SGDevice, ESGHapticChannelType ChannelType); + + /** + * Get a string representation of this SGDevice, used for debugging. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SGDevice") + static FString ToString(const USGDevice* SGDevice); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceListKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceListKismetLibrary.h new file mode 100644 index 0000000..92a1b97 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceListKismetLibrary.h @@ -0,0 +1,151 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Interface for SenseCom, allows the retrieval of Devices and Data, but only + * as. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" +#include "Templates/SubclassOf.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGDeviceListKismetLibrary.generated.h" + +class USGDevice; + +/** + * Interface for SenseCom, allows the retrieval of Devices and Data. + */ +UCLASS(meta=(ScriptName = "SenseGloveDeviceListKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGDeviceListKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Retrieve the number of devices that have been detected by the SenseCom executable. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static int32 ActiveDevices(); + + /** + * Returns true if the SenseCom program is running. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static bool SenseCommRunning(); + + /** + * Clear the device list, and block any further attempt to add to it until ReInitialize is called. + * + * @remarks Useful if your IDE has troubles unloading dlls (cough, Unity, Cough). + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static void Dispose(); + + /** + * When you've accidentally disposed of the list before you meant to. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static void Reinitialize(); + + /** + * Retrieve all Sense Glove Devices connected to this system. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List", meta=(WorldContext="WorldContextObject")) + static TArray GetDevices(UObject* WorldContextObject); + + /** + * Retrieve a list of SGDevices of a specific class. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Devices", Category="SenseGlove | Core | Device List", + meta=(WorldContext="WorldContextObject")) + static TArray GetDevices_TSubclassOfUSGDevice_DT(UObject* WorldContextObject, + const TSubclassOf& DeviceType); + + /** + * Retrieve a list of SGDevices of a specific type. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Devices", Category="SenseGlove | Core | Device List", + meta=(WorldContext="WorldContextObject")) + static TArray GetDevices_ESGDeviceType_DT(UObject* WorldContextObject, ESGDeviceType DeviceType); + + /** + * Retrieve the latest (raw) sensor data from a specific device in our list. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static bool GetSensorDataString(int32 IpcIndex, const FString& IpcAddress, FString& OutString); + + /** + * Send a (raw) command to a specific device in the list. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static bool SendHaptics( + const int32 IpcIndex, const FString& IpcAddress, const int32 ChannelIndex, const FString& Commands); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static FString GetDeviceStringAt(int32 IpcIndex, const FString& IpcAddress, int32 Index); + + /** + * Retrieve Device Address. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static FString GetAddress(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retieve this device's connectionType. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static ESGConnectionType GetConnectionType(int32 IpcIndex, const FString& IpcAddress); + + /** + * Returns true if the device at this connection side is properly connected. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static bool IsConnected(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retrieve the device's Packets per Second Variable. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static int32 PacketsPerSecondReceived(int32 IpcIndex, const FString& IpcAddress); + + /** + * Retrieve the device's Packets per Second sent Variable. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device List") + static int32 PacketsPerSecondSent(int32 IpcIndex, const FString& IpcAddress); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceModelKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceModelKismetLibrary.h new file mode 100644 index 0000000..3da714b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGDeviceModelKismetLibrary.h @@ -0,0 +1,119 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Base class for Device Models containing the minimum amount of data gathered + * through Communications Protocol. Used for shared functionality. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGDeviceModelKismetLibrary.generated.h" + +class USGDeviceModel; + +/** + * Base class containing the minimum amount of data for device models. + */ +UCLASS(meta=(ScriptName = "SenseGloveDeviceModelKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGDeviceModelKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Empty constructor to be used by child classes. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device Model", meta=(WorldContext="WorldContextObject")) + static USGDeviceModel* MakeDeviceModel(UObject* WorldContextObject); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Device Model", Category="SenseGlove | Core | Device Model", + meta=(WorldContext="WorldContextObject")) + static USGDeviceModel* MakeDeviceModel_I_HV_FV_SFV( + UObject* WorldContextObject, + const FString& Id, const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Parse a 32-bit integer value into a set of booleans (010010011) that indicate which (optional) functions this device has. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device Model") + static TArray ParseFunctions(int32 Value, int32 Size); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Device Model") + static void ParseFirmware(const FString& RawFirmware, int32& OutMainVersion, int32& OutSubVersion); + + /** + * Retrieve the Unique identifier of this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static FString GetDeviceId(const USGDeviceModel* DeviceModel); + + /** + * Retrieve the Hardware (sub) version of this Sense Glove Device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static FString GetHardwareVersion(const USGDeviceModel* DeviceModel); + + /** + * Firmware version running on the device's MicroController. (as v4.12, this is the 4). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static int32 GetFirmwareVersion(const USGDeviceModel* DeviceModel); + + /** + * Sub firmware version running on the device's microcontroller (as v4.12, this is the 12). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static int32 GetSubFirmwareVersion(const USGDeviceModel* DeviceModel); + + /** + * Returns true if this glove's firmware is newer than certain version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static bool FirmwareNewerThan(const USGDeviceModel* DeviceModel, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive); + + /** + * Returns true if this glove's firmware is older than certain version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Device Model") + static bool FirmwareOlderThan(const USGDeviceModel* DeviceModel, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandInterpolatorKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandInterpolatorKismetLibrary.h new file mode 100644 index 0000000..b6c67ca --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandInterpolatorKismetLibrary.h @@ -0,0 +1,117 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains interpolation sets for all hand joint movements that can be + * calculated using the Sense Glove. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGFloatArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGHandInterpolatorKismetLibrary.generated.h" + +class USGHandInterpolator; + +/** + * Contains interpolation sets of all joint movements that can be calculated into a HandPose. + */ +UCLASS(meta=(ScriptName = "SenseGloveHandInterpolatorKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGHandInterpolatorKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The basic constructor. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Hand Interpolator", + Category="SenseGlove | Core | Kinematics | Hand Interpolator", meta=(WorldContext="WorldContextObject")) + static USGHandInterpolator* MakeHandInterpolator(UObject* WorldContextObject); + + /** + * Create a new basic HandInterpolator. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Hand Interpolator", + Category="SenseGlove | Core | Kinematics | Hand Interpolator", meta=(WorldContext="WorldContextObject")) + static USGHandInterpolator* MakeHandInterpolator_bRH(UObject* WorldContextObject, bool bRightHanded); + + /** + * Convert a serialized HandInterpolator back into a class representation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Hand Interpolator", + meta=(WorldContext="WorldContextObject")) + static USGHandInterpolator* Deserialize(UObject* WorldContextObject, + const FString& SerializedString, bool bRightHanded = true); + + /** + * Calculate a finger movement's rotation, using an input value. + * + * WARNING: This method is for internal use only. Avoid using it! + */ + static float CalculateAngle_M_ESGFingerMovement_V_bAL(const USGHandInterpolator* HandInterpolator, + ESGFingerMovement Movement, float Value, + bool bApplyLimits = true); + + /** + * Calculate a thumb movement's rotation, using an input value. + * + * WARNING: This method is for internal use only. Avoid using it! + */ + static float CalculateAngle_M_ESGFingerMovement_V_bAL(const USGHandInterpolator* HandInterpolator, + ESGThumbMovement Movement, float Value, + bool bApplyLimits = true); + + /** + * Calculate all hand angles based on an interpolator and normalized input. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Hand Interpolator", + meta=(WorldContext="WorldContextObject")) + TArray InterpolateHandAngles(const USGHandInterpolator* HandInterpolator, + const TArray& Flexions, const TArray& Abductions, + float CmcTwist) const; + + /** + * Check if this handInterpolator matches another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Hand Interpolator") + static bool Equals(const USGHandInterpolator* A, const USGHandInterpolator* B); + + /** + * Serialize this HandInterpolator into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Kinematics | Hand Interpolator") + static FString SGSerialize(const USGHandInterpolator* HandInterpolator); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h new file mode 100644 index 0000000..f0a7deb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandLayerKismetLibrary.h @@ -0,0 +1,227 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A way to access all sorts of Hand Tracking and -Haptics without needing to + * cache any device instances. + * Use this layer if you don't care where a HandPose is coming from, and are + * fine with calling generic haptic functions. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGHandLayerKismetLibrary.generated.h" + +class USGCustomWaveform; +class USGHandPose; + +/** + * A way to access all sorts of Hand Tracking and -Haptics without needing to cache any device instances. + */ +UCLASS(meta=(ScriptName = "SenseGloveHandLayerKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGHandLayerKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Returns true if there is a HapticGlove Device connected that corresponds to the chosen hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool DeviceConnected(bool bRightHanded); + + /** + * Returns the Device Type of the right / left hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static ESGDeviceType GetDeviceType(bool bRightHanded); + + /** + * Returns the handedness of the first device you can find; true for right, false for left. Use this for testing a + * single glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool GetFirstGloveHandedness(); + + /** + * Returns the number of Haptic Gloves connected to the system. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static int32 GlovesConnected(); + + /** + * Retrieve a Glove Instance for the right- or left hand to do more complicated, device-specific stuff. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer", + meta=(WorldContext="WorldContextObject")) + static bool GetGloveInstance(UObject* WorldContextObject, bool bRightHanded, USGHapticGlove*& OutGlove); + + /** + * Returns the calibration state of the chosen hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static ESGHapticGloveCalibrationState GetCalibrationState(bool bRightHanded); + + /** + * Returns the Calibration Instructions for the chosen hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static FString GetCalibrationInstructions(bool bRightHanded); + + /** + * Reset the calibration of the left/right hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static void ResetCalibration(bool bRightHanded); + + /** + * Reset the calibration of the left/right hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static void EndCalibration(bool bRightHanded); + + /** + * Attempt to get the HandPose through any of our gloves. You don't care which one is on the other side, as long as + * you get one. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose(UObject* WorldContextObject, bool bRightHanded, USGHandPose*& OutHandPose); + + /** + * Calculate the Wrist Location of the chosen hand, based on a reference location and tracking hardware. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static void GetWristLocation( + bool bRightHanded, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Stop all haptics on the chosen hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static void StopAllHaptics(bool bRightHanded); + + /** + * Sends all haptics in the queue for the Left / Right hand. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool SendHaptics(bool bRightHanded); + + /** + * Returns true if the glove for this hand supports a custom waveform vibration on said location. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool SupportsCustomWaveform(bool bRightHanded, ESGHapticLocation AtLocation); + + /** + * Send a Custom Waveform to a glove at a specific location. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool SendCustomWaveform(bool bRightHanded, USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Queue Force Feedback for multiple fingers. Up to 5. Make sure the value is not NULL. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_ForceFeedbackLevels( + bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Tell a specific hand to hold the force-feedback at a certain level. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_ForceFeedbackLevel(bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevels(bool bRightHanded, const TArray& Levels01, bool bSendImmediate); + + /** + * Queue a command to set the vibration level(s) of a Haptic Glove's finger. Note: This is only for Nova 1.0 and + * DK1.0. + */ + UFUNCTION(BlueprintCallable, DisplayName="Queue Command Vibro Level", Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevel_bRH_F_L01_bSI( + bool bRightHanded, int32 Finger, float Level01, bool bSendImmediate); + + /** + * Queue a vibration level command for a specific HapticLocation. If the gloves has this vibration motor installed. + * Cross-compatible with Nova 2.0. + * + * @param bRightHanded + * @param AtLocation + * @param Level01 + * @param bSendImmediate + */ + UFUNCTION(BlueprintCallable, DisplayName="Queue Command Vibro Level", Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_VibroLevel_bRH_AL_L01_bSI( + bool bRightHanded, ESGHapticLocation AtLocation, float Level01, bool bSendImmediate); + + /** + * Returns true if the chosen glove supports active contact feedback on the Wrist. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool SupportsWristSqueeze(bool bRightHanded); + + /** + * Queue a command to set a squeeze level on the wrist, and optionally send it right away. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_WristSqueeze(bool bRightHanded, float SqueezeLevel01, bool bSendImmediate); + + /** + * Returns true is the chosen hand supports flexion locking; automatic locking of FFB when flexed beyond a specific + * point. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool SupportsFlexionLocks(bool bRightHanded); + + /** + * If the flexion exceeds a particular value, turn on the Force-Feedback. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_FlexionLock(bool bRightHanded, int32 Finger, float Flexion01, bool bSendImmediate); + + /** + * Stop any Flexion Threshold active on the chosen finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Layer") + static bool QueueCommand_ClearFlexionLock(bool bRightHanded, int32 Finger, bool bSendImmediate); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandPoseKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandPoseKismetLibrary.h new file mode 100644 index 0000000..a70bd07 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHandPoseKismetLibrary.h @@ -0,0 +1,231 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Data class containing all variables to draw or analyze a virtual hand in + * different formats. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGQuatArray.h" +#include "SGTypes/SGRotatorArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGHandPoseKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGHandPose; + +/** + * Contains all variables required to draw or analyze a virtual hand. + */ +UCLASS(meta=(ScriptName = "SenseGloveHandPoseKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGHandPoseKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Pose", meta=(WorldContext="WorldContextObject")) + static USGHandPose* MakeHandPose(UObject* WorldContextObject); + + /** + * Create a new instance of HandPose. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Hand Pose", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* MakeHandPose_bRH_JP_FSGQuatArray_JR_HA( + UObject* WorldContextObject, + bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + + /** + * Create a new instance of HandPose. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Hand Pose", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* MakeHandPose_bRH_JP_FSGRotatorArray_JR_HA( + UObject* WorldContextObject, + bool bRightHanded, const TArray& JointPositions, const TArray& JointRotations, + const TArray& HandAngles); + + /** + * Deserialize a HandPose back into usable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Hand Pose", meta=(WorldContext="WorldContextObject")) + static USGHandPose* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Generate a HandPose based on articulation angles (handAngles). + */ + UFUNCTION(BlueprintCallable, DisplayName="From Hand Angles", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* FromHandAngles_HA_bRH_HD( + UObject* WorldContextObject, + const TArray& HandAngles, bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generate a HandPose based on articulation angles (handAngles), with a default HandModel. + */ + UFUNCTION(BlueprintCallable, DisplayName="From Hand Angles", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* FromHandAngles_HA_bRH(UObject* WorldContextObject, + const TArray& HandAngles, bool bRightHanded); + + /** + * Create a new instance of a left or right handed Pose that is "idle"; in a neutral position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Default Idle", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* DefaultIdle_bRH_HD(UObject* WorldContextObject, + bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Create a new instance of a left or right handed Pose that is "idle"; in a neutral position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Default Idle", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* DefaultIdle_bRH(UObject* WorldContextObject, bool bRightHanded); + + /** + * Generates a HandPose representing an 'open hand', used in calibration to determine finger extension. + */ + UFUNCTION(BlueprintCallable, DisplayName="Flat Hand", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* FlatHand_bRH_HD(UObject* WorldContextObject, + bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing an 'open hand', used in calibration to determine finger extension. + */ + UFUNCTION(BlueprintCallable, DisplayName="Flat Hand", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* FlatHand_bRH(UObject* WorldContextObject, bool bRightHanded); + + /** + * Generates a HandPose representing a 'thumbs up', used in calibration to determine finger flexion, thumb extension and adduction. + */ + UFUNCTION(BlueprintCallable, DisplayName="Thumbs Up", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* ThumbsUp_bRH_HD(UObject* WorldContextObject, bool bRightHanded, + const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing a 'thumbs up', used in calibration to determine finger flexion, thumb extension and adduction. + */ + UFUNCTION(BlueprintCallable, DisplayName="Thumbs Up", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* ThumbsUp_bRH(UObject* WorldContextObject, bool bRightHanded); + + /** + * Generates a HandPose representing a 'fist', used in calibration to determine, thumb flexion and abduction. + */ + UFUNCTION(BlueprintCallable, DisplayName="Fist", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* Fist_bRH_HD(UObject* WorldContextObject, + bool bRightHanded, const USGBasicHandModel* HandDimensions); + + /** + * Generates a HandPose representing a 'fist', used in calibration to determine, thumb flexion and abduction. + */ + UFUNCTION(BlueprintCallable, DisplayName="Fist", Category="SenseGlove | Core | Hand Pose", + meta=(WorldContext="WorldContextObject")) + static USGHandPose* Fist_bRH(UObject* WorldContextObject, bool bRightHanded); + + /** + * Whether this HandPose was created to be a right- or left hand. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Hand Pose") + static bool IsRight(const USGHandPose* HandPose); + + /** + * Positions of all hand joints relative to the Sense Glove origin. From thumb to pinky, proximal to distal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Hand Pose") + static TArray GetJointPositions(const USGHandPose* HandPose); + + /** + * Quaternion rotations of all hand joints. From thumb to pinky, proximal to distal. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotations", Category="SenseGlove | Core | Hand Pose") + static TArray GetJointRotationsQ(const USGHandPose* HandPose); + + /** + * Rotations of all hand joints. From thumb to pinky, proximal to distal. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotations", Category="SenseGlove | Core | Hand Pose") + static TArray GetJointRotations(const USGHandPose* HandPose); + + /** + * Euler representations of all possible hand angles. From thumb to pinky, proximal to distal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Hand Pose") + static TArray GetHandAngles(const USGHandPose* HandPose); + + /** + * Returns true of these two hand poses are roughly equal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Hand Pose") + static bool Equals(const USGHandPose* A, const USGHandPose* B); + + /** + * Returns the total flexion of a specific finger as a value between 0 (fully extended) and 1 (fully flexed). + * + * @remarks Useful for animation or for detecting gestures. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Normalized Flexion", Category="SenseGlove | Core | Hand Pose") + static float GetNormalizedFlexion_F_bC01(const USGHandPose* HandPose, ESGFinger Finger, bool bClamp01 = true); + + /** + * Returns the total flexion of a specific finger as a value between 0 (fully extended) and 1 (fully flexed). + * + * @remarks Useful for animation or for detecting gestures. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Normalized Flexion", Category="SenseGlove | Core | Hand Pose") + static TArray GetNormalizedFlexion_bC01(const USGHandPose* HandPose, bool bClamp01 = true); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Hand Pose") + static FString ToString(const USGHandPose* HandPose, bool bShortFormat = false); + + /** + * Serialize this HandPose into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Hand Pose") + static FString SGSerialize(const USGHandPose* HandPose); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticChannelInfoKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticChannelInfoKismetLibrary.h new file mode 100644 index 0000000..e633d55 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticChannelInfoKismetLibrary.h @@ -0,0 +1,152 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains information on Haptic channels available to this device for IPC. + * Some devices have different "Haptic Channels". This info is exposed via IPC + * to SGCore. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGHapticChannelInfoKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGHapticChannelInfo; + +/** + * Contains information on Haptic channels available to this device for IPC. + */ +UCLASS(meta=(ScriptName = "SenseGloveHapticChannelInfoKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGHapticChannelInfoKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Creates a default HapticChannelInfo, with solely a single streaming haptic Channel. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info", + meta=(WorldContext="WorldContextObject")) + static USGHapticChannelInfo* MakeHapticChannelInfo(UObject* WorldContextObject); + + /** + * Create a new instance of HapticChannelInfo. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Haptic Channel Info", + Category="SenseGlove | Core | Haptic Channel Info", meta=(WorldContext="WorldContextObject")) + static USGHapticChannelInfo* MakeHapticChannelInfo_SI_FAFI( + UObject* WorldContextObject, + const TArray& StreamIndex, const TArray& FireAndForgetIndex); + + /** + * Generate a single IPCAddress for an address. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info") + static FString GenerateAddress(int32 DeviceIndex, int32 ChannelIndex); + + /** + * Parse HapticChannelInfo received through IPC into usable data. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info", + meta=(WorldContext="WorldContextObject")) + static USGHapticChannelInfo* Parse(UObject* WorldContextObject, const FString& IpcString); + + /** + * Byte used to identify streaming channels. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info") + static int32 GetStreamingType(); + + /** + * Byte used to indicate fire-and-forget channels. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info") + static int32 GetFireAndForgetType(); + + /** + * Returns the amount of streaming channels available for haptics. Will indicate if a device can support the + * haptics you're trying to send through it. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static int32 GetStreamChannelCount(const USGHapticChannelInfo* HapticChannelInfo); + + /** + * Returns the amount of fire-and-forget channels available for haptics. Will indicate if a device can support the + * haptics you're trying to send through it. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static int32 GetFireAndForgetChannelCount(const USGHapticChannelInfo* HapticChannelInfo); + + /** + * Retrieve the total amount of channels for this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static int32 GetTotalChannelCount(const USGHapticChannelInfo* HapticChannelInfo); + + /** + * Returns the address that corresponds to the nth channel of a specific type. It's unguarded, which means I don't + * check the validity of index - could result in an exception. Optimized piece of code for for loops. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static FString GetAddress_Unguarded(const USGHapticChannelInfo* HapticChannelInfo, + ESGHapticChannelType Type, int32 TypeIndex); + + /** + * Returns the address that corresponds to the nth channel of a specific type. It's unguarded, which means I don't + * check the validity of index - could result in an exception. Optimized piece of code for for loops. + * Used for Internals. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static void GetIpcParams_Unguarded(UPARAM(ref) USGHapticChannelInfo* HapticChannelInfo, + ESGHapticChannelType Type, int32 TypeIndex, + int32& OutIndex, FString& OutAddressString); + + /** + * Regenerate the channel names for a specific device Index in shared memory. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Channel Info") + static void RegenerateAddresses(USGHapticChannelInfo* HapticChannelInfo, int32 ForDeviceIndex); + + /** + * Returns an array of all the haptic addresses stored for this info channel. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Channel Info") + static TArray GetAllAddresses(const USGHapticChannelInfo* HapticChannelInfo); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h new file mode 100644 index 0000000..db04df5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGHapticGloveKismetLibrary.h @@ -0,0 +1,321 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * An interface for any of our gloves that can track hand motion and/or send + * force / vibrotactile feedback. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGHapticGloveKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGHandPose; +class USGHandProfile; +class USGHapticGlove; + +/** + * A glove developed by SenseGlove, that has hand tracking and/or haptic feedback functionality. + */ +UCLASS(meta=(ScriptName = "SenseGloveHapticGloveKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGHapticGloveKismetLibrary : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Get all Haptic Gloves detected on this system. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove", meta=(WorldContext="WorldContextObject")) + static TArray GetHapticGloves(UObject* WorldContextObject, bool bConnectedOnly = true); + + /** + * Get the first Haptic Glove detected on this system. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Glove", Category="SenseGlove | Core | Haptic Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetGlove_OutG(UObject* WorldContextObject, USGHapticGlove*& OutGlove); + + /** + * Get the first left/right Haptic Glove detected on this system. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Glove", Category="SenseGlove | Core | Haptic Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetGlove_bRH_OutG(UObject* WorldContextObject, bool bRightHanded, + USGHapticGlove*& OutGlove); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="To String", Category="SenseGlove | Core | Haptic Glove") + static FString ToString_S(ESGHapticGloveCalibrationState State); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="To String", Category="SenseGlove | Core | Haptic Glove") + static FString ToString_L(ESGHapticLocation Location); + + + /** + * Get the DeviceType enumerator of this device; used to check if its a SenseGlove/Nova/etc. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static ESGDeviceType GetDeviceType(const USGHapticGlove* HapticGlove); + + /** + * Retrieve this glove's unique identifier. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static FString GetDeviceId(const USGHapticGlove* HapticGlove); + + /** + * Retrieve this glove's hardware (sub) version. "DK1", "DK2", etc. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static FString GetHardwareVersion(const USGHapticGlove* HapticGlove); + + /** + * Retrieve this device's main firmware version. v4.12 returns 4. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static int32 GetFirmwareVersion(const USGHapticGlove* HapticGlove); + + /** + * Retrieve this device's sub firmware version. v4.12 returns 12. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static int32 GetSubFirmwareVersion(const USGHapticGlove* HapticGlove); + + /** + * Returns true if this glove is made for a right hand. If false, it's a left hand. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static bool IsRight(const USGHapticGlove* HapticGlove); + + /** + * Retrieve this glove's IMU rotation, if if has any. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static bool GetImuRotation_FQuat_OutI(UPARAM(ref) USGHapticGlove* HapticGlove, FQuat& OutImu); + + /** + * Retrieve this glove's IMU rotation, if if has any. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static bool GetImuRotation_FRotator_OutI(UPARAM(ref) USGHapticGlove* HapticGlove, FRotator& OutImu); + + /** + * Retrieve a HandPose based on the latest profile, but with a specific hand geometry. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Haptic Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose_HG_OutHP(UObject* WorldContextObject, + const USGHapticGlove* HapticGlove, + const USGBasicHandModel* HandGeometry, + USGHandPose*& OutHandPose); + + /** + * Retrieve a HandPose based on the latest profile and default hand Geometry. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Haptic Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose_OutHP(UObject* WorldContextObject, + UPARAM(ref) USGHapticGlove* HapticGlove, + USGHandPose*& OutHandPose); + + /** + * Returns the Hand Angles calculated by this Nova 2 Glove. Used for input for HandPoses, but can be used in and of + * itself. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static bool GetHandAngles(const USGHapticGlove* HapticGlove, TArray& OutHandAngles); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove", meta=(WorldContext="WorldContextObject")) + static USGBasicHandModel* GetHandGeometry(UObject* WorldContextObject, const USGHapticGlove* HapticGlove); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static void SetHandGeometry(UPARAM(ref) USGHapticGlove* HapticGlove, const USGBasicHandModel* HandGeometry); + + /** + * Returns the HapticGlove's state of calibration for its on-board sensors. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static ESGHapticGloveCalibrationState GetCalibrationState(const USGHapticGlove* HapticGlove); + + /** + * Resets internal calibration of the Haptic Glove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static void EndCalibration(UPARAM(ref) USGHapticGlove* HapticGlove); + + /** + * Force-End any form of calibration manually, if any is still running. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static void ResetCalibration(UPARAM(ref) USGHapticGlove* HapticGlove); + + /** + * Retrieve the current calibration instruction. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Haptic Glove") + static FString GetCalibrationInstruction(const USGHapticGlove* HapticGlove); + + /** + * Stops all Haptic effects if any are currently playing. Useful at the end of simulations or when resetting. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static void StopHaptics(UPARAM(ref) USGHapticGlove* HapticGlove); + + /** + * Stops only vibrations. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static void StopVibrations(UPARAM(ref) USGHapticGlove* HapticGlove); + + /** + * Take all active commands in the device queue, compile them into one and send them to the device. + * + * @return Returns true if the message was successfully sent to SenseCom. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool SendHaptics(UPARAM(ref) USGHapticGlove* HapticGlove); + + /** + * Returns true if the HapticGlove supports vibration feedback on the specified location. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static bool SupportsCustomWaveform(const USGHapticGlove* HapticGlove, ESGHapticLocation AtLocation); + + /** + * Sends a custom waveform to the location specified, provided that the glove has a motor there, and can support + * custom waveforms. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool SendCustomWaveform(UPARAM(ref) USGHapticGlove* HapticGlove, + USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Haptic Glove") + static void GetWristLocation_RP_FQuat_RR_TH_OutWP_OutWR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Queue a list of force-feedback levels, between 0.0f and 1.0f. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueForceFeedbackLevels(UPARAM(ref) USGHapticGlove* HapticGlove, const TArray& Levels01); + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueForceFeedbackLevel(UPARAM(ref) USGHapticGlove* HapticGlove, int32 Finger, float Level01); + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @param Levels01 Array containing the vibration levels, from 0.0 (no vibration) to 1.0. A value < 0.0f will be + * ignored. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueVibroLevels(UPARAM(ref) USGHapticGlove* HapticGlove, const TArray& Levels01); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + * + * @param Location + * @param Level01 Value will be clamped between [0...1], where 0.0f means no vibration, and 1.0 means full + * vibration. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptic Glove") + static bool QueueVibroLevel(UPARAM(ref) USGHapticGlove* HapticGlove, ESGHapticLocation Location, float Level01); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Haptic Glove") + static void GetWristLocation_RP_FRotator_RR_TH_OutWP_OutWR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Haptic Glove") + static void GetGloveLocation_RP_FQuat_RR_TH_OutGP_OutGR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Haptic Glove") + static void GetGloveLocation_RP_FRotator_RR_TH_OutGP_OutGR( + const USGHapticGlove* HapticGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Create a String Representation of this Haptic Glove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptic Glove") + static FString ToString(const USGHapticGlove* HapticGlove); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGInterpolationSetKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGInterpolationSetKismetLibrary.h new file mode 100644 index 0000000..beb24a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGInterpolationSetKismetLibrary.h @@ -0,0 +1,186 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Data class containing all variables to map an input value from one range to + * another. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGInterpolationSetKismetLibrary.generated.h" + +class USGInterpolationSet; + +/** + * Set of variables to map a value from one range to the next. + */ +UCLASS(meta=(ScriptName = "SenseGloveInterpolationSetKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGInterpolationSetKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Creates a basic interpolation set, without limits. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Interpolation Set", + meta=(WorldContext="WorldContextObject")) + static USGInterpolationSet* MakeInterpolationSet(UObject* WorldContextObject); + + /** + * Create a new interpolation set without limits. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Interpolation Set", + Category="SenseGlove | Core | Kinematics | Interpolation Set", meta=(WorldContext="WorldContextObject")) + static USGInterpolationSet* MakeInterpolationSet_F1_F2_T1_T2( + UObject* WorldContextObject, float From1, float From2, float To1, float To2); + + /** + * Create a new interpolation set with limits. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Interpolation Set", + Category="SenseGlove | Core | Kinematics | Interpolation Set", meta=(WorldContext="WorldContextObject")) + static USGInterpolationSet* MakeInterpolationSet_F1_F2_T1_T2_M_M( + UObject* WorldContextObject, float From1, float From2, float To1, float To2, float Min, float Max); + + /** + * Convert a string notation of an InterpolationSet into a new class instance. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Kinematics | Interpolation Set", + meta=(WorldContext="WorldContextObject")) + static USGInterpolationSet* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * First value of input range. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static float GetX0(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetX0(UPARAM(ref) USGInterpolationSet* InterpolationSet, float X0); + + /** + * Second value of input range. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + float GetX1(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetX1(UPARAM(ref) USGInterpolationSet* InterpolationSet, float X1); + + /** + * First value of output range. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static float GetY0(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetY0(UPARAM(ref) USGInterpolationSet* InterpolationSet, float Y0); + + /** + * Second value of output range. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static float GetY1(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetY1(UPARAM(ref) USGInterpolationSet* InterpolationSet, float Y1); + + /** + * Minimum range of the output value. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static float GetMin(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetMin(UPARAM(ref) USGInterpolationSet* InterpolationSet, float Min); + + /** + * Maximum range of the output value. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static float GetMax(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static void SetMax(UPARAM(ref) USGInterpolationSet* InterpolationSet, float Max); + + /** + * Calculate an output value in range [x0...x1] to [y0..y1] + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static int32 Get(const USGInterpolationSet* InterpolationSet, float Value, bool bLimit, + bool bNormalizeAngle = false); + + /** + * Returns true if this InterpolationSet has the same values as another set. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static bool Equals(const USGInterpolationSet* A, const USGInterpolationSet* B); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Kinematics | Interpolation Set") + static FString ToString(const USGInterpolationSet* InterpolationSet); + + /** + * + */ + UFUNCTION(BlueprintPure, DisplayName="To String", Category="SenseGlove | Core | Kinematics | Interpolation Set") + static FString ToString_bL(const USGInterpolationSet* InterpolationSet, bool bLimits); + + /** + * Convert this InterpolationSet into a string notation so it can be stored on disk. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Kinematics | Interpolation Set") + static FString SGSerialize(const USGInterpolationSet* InterpolationSet); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGJointKinematicsKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGJointKinematicsKismetLibrary.h new file mode 100644 index 0000000..cdc27cc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGJointKinematicsKismetLibrary.h @@ -0,0 +1,97 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains kinematic formulae and wrappers for Sense Glove mathematics. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGCore/SGBasicHandModel.h" +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGJointKinematicsKismetLibrary.generated.h" + +/** + * + */ +UCLASS(meta=(ScriptName = "SenseGloveJointKinematicsKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGJointKinematicsKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Perform forward Kinematics on a set of joints, defined by a start position- and rotation, + * joint angles and the lengths in between. Outputs the calculated positions and rotations. + */ + UFUNCTION(BlueprintCallable, DisplayName="Forward Kinematics", + Category="SenseGlove | Core | Kinematics | Joint Kinematics") + static bool ForwardKinematics_SP_FQuat_SR_JL_JA_OutNP_TArrayFQuat_OutNR( + const FVector& StartPosition, const FQuat& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Perform forward Kinematics on a set of joints, defined by a start position- and rotation, + * joint angles and the lengths in between. Outputs the calculated positions and rotations. + */ + UFUNCTION(BlueprintCallable, DisplayName="Forward Kinematics", + Category="SenseGlove | Core | Kinematics | Joint Kinematics") + static bool + ForwardKinematics_SP_FRotator_SR_JL_JA_OutNP_TArrayFRotator_OutNR( + const FVector& StartPosition, const FRotator& StartRotation, + const TArray& JointLengths, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Calculate positions and rotations of a finger based on input angles and profile. + */ + UFUNCTION(BlueprintCallable, DisplayName="Forward Kinematics", + Category="SenseGlove | Core | Kinematics | Joint Kinematics") + static bool ForwardKinematics_P_F_JA_OutNP_TArrayFQuat_OutNR( + const USGBasicHandModel* Profile, ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); + + /** + * Calculate positions and rotations of a finger based on input angles and profile. + */ + UFUNCTION(BlueprintCallable, DisplayName="Forward Kinematics", + Category="SenseGlove | Core | Kinematics | Joint Kinematics") + static bool ForwardKinematics_P_F_JA_OutNP_TArrayFRotator_OutNR( + const USGBasicHandModel* Profile, ESGFinger Finger, const TArray& JointAngles, + TArray& OutNewPositions, TArray& OutNewRotations); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGLibraryKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGLibraryKismetLibrary.h new file mode 100644 index 0000000..501fc4f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGLibraryKismetLibrary.h @@ -0,0 +1,71 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Information about the SGCore C++ Library. + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGLibraryKismetLibrary.generated.h" + +/** + * Provides information about this C++ Library. + */ +UCLASS(meta=(ScriptName = "SenseGloveLibraryKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGLibraryKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The version of this C++ Library in string representation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Library") + static FString GetVersion(); + + /** + * Back-End version in string notation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Library") + static FString GetBackendVersion(); + + /** + * If possible, check what version of SGConnect is paired with this API. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Library") + static FString GetSGConnectVersion(); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h new file mode 100644 index 0000000..f8d1721 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveKismetLibrary.h @@ -0,0 +1,473 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback + * and sensor module, and active contact feedback in the front strap. + * Since the Nova 2.0 is significantly different from the Nova 1 Glove, it gets + * its own separate device interface. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGNova2GloveKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGDevice; +class USGHandPose; +class USGHandProfile; +class USGNova2Glove; +class USGNova2GloveHandProfile; +class USGNova2GloveSensorData; + +/** + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback and sensor module, and active contact + * feedback in the front strap. + */ +UCLASS(meta=(ScriptName = "SenseGloveNova2GloveKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGNova2GloveKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Deserializes a Nova 2.0 from its ConstantsString. Returns a nullptr if unsuccessful. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static USGDevice* Parse(UObject* WorldContextObject, const FString& ConstantsString); + + /** + * Retrieve all Nova 2.0's. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static TArray GetNova2Gloves(UObject* WorldContextObject); + + /** + * Retrieve the first connected Nova 2.0 there is. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova2 Glove", Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetNova2Glove_OutG(UObject* WorldContextObject, USGNova2Glove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed Nova 2.0. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova2 Glove", Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetNova2Glove_bRH_OutG(UObject* WorldContextObject, + bool bRightHanded, USGNova2Glove*& OutGlove); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void CalculateGloveLocation_RP_FQuat_RR_TH_bRH_HW_OutGP_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void CalculateGloveLocation_RP_FRotator_RR_TH_bRH_HW_OutGP_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void CalculateWristLocation_RP_FQuat_RR_TH_bRH_HW_OutWP_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void CalculateWristLocation_RP_FRotator_RR_TH_bRH_HW_OutWP_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, const FString& HardwareVersion, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Special Byte to identify the command as a Streaming Byte. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static FString GetStreamByte(); + + /** + * Ranges before a Nova 2.0 Sensor is allowed to move. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static TArray GetNova2SensorRanges(); + + /** + * Converts Nova 2.0 Sensor Data into floating point inputs for normalization. + */ + UFUNCTION(BlueprintCallable, DisplayName="To Normalized Values", + Category="SenseGlove | Core | Nova | Nova 2 Glove") + static TArray ToNormalizedValues_SD(const USGNova2GloveSensorData* SensorData); + + /** + * Convert Sensor Data into a series of normalized values. + */ + UFUNCTION(BlueprintCallable, DisplayName="To Normalized Values", + Category="SenseGlove | Core | Nova | Nova 2 Glove", meta=(WorldContext="WorldContextObject")) + static TArray ToNormalizedValues_SD_OutSN( + UObject* WorldContextObject, + const USGNova2GloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer); + + /** + * Calculate Hand Angles for a Nova 2.0 Glove, based on normalized input. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static TArray CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator, bool bInfluenceIndex); + + /** + * Convert normalized inputs (5-6 sensors) to input for an Interpolator. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static TArray ToNormalizedAngles( + const TArray& NormalizedData, const USGNovaGloveInfo* GloveInfo); + + /** + * Return the DeviceType of this Nova. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static ESGDeviceType GetDeviceType(const USGNova2Glove* Nova2Glove); + + /** + * Returns this device's unique identifier. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static FString GetDeviceId(const USGNova2Glove* Nova2Glove); + + /** + * Access this device's hardware designation. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static FString GetHardwareVersion(const USGNova2Glove* Nova2Glove); + + /** + * Access this device's main firmware version. (ex: v3.2 -> 3). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static int32 GetFirmwareVersion(const USGNova2Glove* Nova2Glove); + + /** + * Access this device's sub-firmware version. (ex: v3.2 -> 2). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static int32 GetSubFirmwareVersion(const USGNova2Glove* Nova2Glove); + + /** + * Returns true if this device operates on a battery. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool HasBattery(const USGNova2Glove* Nova2Glove); + + /** + * Returns true if this device is currently charging. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool IsCharging(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool GetBatteryLevel(UPARAM(ref) USGNova2Glove* Nova2Glove, float& OutBatteryLevel); + + /** + * Returns true if this glove is meant for right hands. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool IsRight(const USGNova2Glove* Nova2Glove); + + /** + * Retrieve this glove's latest IMU rotation, if one is present. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool GetImuRotation_FQuat_OutI(UPARAM(ref) USGNova2Glove* Nova2Glove, FQuat& OutImu); + + /** + * Retrieve this glove's latest IMU rotation, if one is present. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool GetImuRotation_FRotator_OutI(UPARAM(ref) USGNova2Glove* Nova2Glove, FRotator& OutImu); + + /** + * Retrieve a new hand pose using this glove, based on (calibrated) user data. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose(UObject* WorldContextObject, + UPARAM(ref) USGNova2Glove* Nova2Glove, + const USGBasicHandModel* HandModel, + USGHandPose*& OutHandPose); + + /** + * Returns the Hand Angles calculated by this Nova2 Glove. Used for input for HandPoses, but can be used in and of + * itself. + * + * @param OutHandAngles + */ + UFUNCTION(BlueprintPure, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandAngles(const USGNova2Glove* Nova2Glove, TArray& OutHandAngles); + + /* + * Retrieve the calibration status of this Nova 2.0 Glove. + */ + UFUNCTION(BlueprintPure, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static ESGHapticGloveCalibrationState GetCalibrationState(const USGNova2Glove* Nova2Glove); + + /* + * Completes sensor Normalization on the Nova 2.0's end. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static void EndCalibration(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /* + * Completes sensor Normalization on the Nova 2.0's end. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static void ResetCalibration(UPARAM(ref) USGNova2Glove* Nova2Glove); + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static void StopHaptics(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Stop only all vibrotactile feedback. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static void StopVibrations(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Flush all streaming haptic effects on the different fingers to the Nova 2.0 Glove. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | SG | Nova 2 Glove") + static bool SendHaptics(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Returns true if this Glove supports the chosen haptic location. + */ + UFUNCTION(BlueprintPure, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool SupportsCustomWaveform(const USGNova2Glove* Nova2Glove, ESGHapticLocation AtLocation); + + /** + * Send a custom waveform to the Nova 2.0. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool SendCustomWaveform(UPARAM(ref) USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueForceFeedbackLevels(UPARAM(ref) USGNova2Glove* Nova2Glove, const TArray& Levels01); + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueForceFeedbackLevel(UPARAM(ref) USGNova2Glove* Nova2Glove, int32 Finger, float Level01); + + /** + * Queue a list of vibration levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueVibroLevels(UPARAM(ref) USGNova2Glove* Nova2Glove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. This is to + * support backwards compatibility for older plugins. Use of Customwaveforms is encouraged. + */ + UFUNCTION(BlueprintCallable, Category="Nova2Glove | Core | Nova | Nova 2 Glove") + static bool QueueVibroLevel(UPARAM(ref) USGNova2Glove* Nova2Glove, ESGHapticLocation Location, float Level01); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGNova2Glove* Nova2Glove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Access DeviceInfo of this Nova. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveInfo* GetGloveInfo(UObject* WorldContextObject, const USGNova2Glove* Nova2Glove); + + /** + * If true, the Index Finger sensors will influence the tracking of the other fingers. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool DoesIndexInfluenceOthers(const USGNova2Glove* Nova2Glove); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void SetIndexInfluencesOthers(UPARAM(ref) USGNova2Glove* Nova2Glove, bool bInfluenceOthers); + + /** + * If true, this glove's sensor calibration runs on board the device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool SupportsOnBoardNormalization(const USGNova2Glove* Nova2Glove); + + /** + * Get the latest Sensor Data from this Glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetSensorData(UObject* WorldContextObject, + UPARAM(ref) USGNova2Glove* Nova2Glove, USGNova2GloveSensorData*& OutSensorData); + + /** + * Returns the normalized Sensor Data of this Nova2 Glove. If no normalization is running on the glove(s), then + * it's done on the PC side. + * + * @param OutNormalizedValues + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool GetNormalizedInput(const USGNova2Glove* Nova2Glove, TArray& OutNormalizedValues); + + /** + * Tell the Nova Glove to send Raw Data instead of normalized data. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool SendRawData(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Tell the Nova Glove to send normalized data. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool SendNormalizedData(UPARAM(ref) USGNova2Glove* Nova2Glove); + + /** + * Convert a HapticLocation into a Nova 2.0 Motor location. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static ESGNova2VibroMotor ToNovaMotor(const USGNova2Glove* Nova2Glove, ESGHapticLocation Location); + + /** + * Returns the channel index for a particular motor. Can make this as complex as I want for the Nova2 GLove(s). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static int32 ChannelIndex(const USGNova2Glove* Nova2Glove, ESGNova2VibroMotor Motor); + + /** + * Ensures the waveform that is to be sent to this Nova2 Glove has the appropriate parameters. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static void ValidateWaveform(const USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, ESGNova2VibroMotor Motor); + + /** + * Directly sends a custom waveform to the Nova 2.0 Glove motors, as opposed to specifying a Haptic Location. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static bool SendCustomWaveform_Nova2( + UPARAM(ref) USGNova2Glove* Nova2Glove, + USGCustomWaveform* OutWaveform, ESGNova2VibroMotor Motor, bool bValidateWaveform = true); + + /** + * Create a string representation of this device for reporting purposes. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove") + static FString ToString(const USGNova2Glove* Nova2Glove); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.h new file mode 100644 index 0000000..e6fee31 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNova2GloveSensorDataKismetLibrary.h @@ -0,0 +1,159 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Sensor Data coming off the Nova2 2.0 Glove. + * Has certain features the Nova2 1.0 Glove does not have, such as multiple + * flexion sensors, normalization states and Active Strap info. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGNova2GloveSensorDataKismetLibrary.generated.h" + +class USGNovaGloveInfo; +class USGNova2GloveSensorData; + +/** + * Nova Glove 2.0 Sensor data, which had additional feedback and calibration parameters. + */ +UCLASS(meta=(ScriptName = "SenseGloveNova2GloveSensorDataKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGNova2GloveSensorDataKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Default constructor for Nova2GloveSensorData. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNova2GloveSensorData* MakeNova2GloveSensorData(UObject* WorldContextObject); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Nova2 Glove Sensor Data", + Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGNova2GloveSensorData* MakeNova2GloveSensorData_NS_V_PV_FQuat_IR_bIP_BL_bC( + UObject* WorldContextObject, ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a Nova2GloveSensorData. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Nova2 Glove Sensor Data", + Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGNova2GloveSensorData* MakeNova2GloveSensorData_NS_V_PV_FRotator_IR_bIP_BL_b( + UObject* WorldContextObject, ESGNormalizationState NormalizationState, + const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Parse the bytes as they come in from the device into usable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNova2GloveSensorData* Parse(UObject* WorldContextObject, + const FString& RawData, const USGNovaGloveInfo* GloveInfo); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static ESGNormalizationState GetSensorState(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Pronation/Supination, Flexion/Extension and Abduction/Adduction values for each finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static TArray GetSensorValues(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Returns the sensor movement of a specific finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static float GetSensorValue(const USGNova2GloveSensorData* Nova2GloveSensorData, + ESGFinger Finger, ESGNova2SensorLocation Location); + + /** + * The number of values that were parsed from the sensor string. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static int32 GetParsedValues(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Quaternion rotation relative to magnetic north. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static FQuat GetImuRotation_FQuat(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Rotation relative to magnetic north. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static FRotator GetImuRotation_FRotator(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Whether the IMU values were all successfully parsed, or not. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static bool IsImuParsed(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * A value between 0..1 that represents the battery level of this Nova2 Glove (0 .. 100%). Returns -1 if the value + * wasn't received. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static float GetBatteryLevel(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Returns true if this NovaGlove is connected to a power source. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static bool IsCharging(const USGNova2GloveSensorData* Nova2GloveSensorData); + + /** + * Returns true if this sensor data contains the same values as another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static bool Equals(const USGNova2GloveSensorData* A, const USGNova2GloveSensorData* B); + + /** + * Create a readable string representation of this Sensor Data. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova 2 Glove Sensor Data") + static FString ToString(const USGNova2GloveSensorData* Nova2GloveSensorData); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveInfoKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveInfoKismetLibrary.h new file mode 100644 index 0000000..0d01ab9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveInfoKismetLibrary.h @@ -0,0 +1,163 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains information on Nova's hardware, extracted from the device. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGNovaGloveInfoKismetLibrary.generated.h" + +class USGNovaGloveInfo; + +/** + * Device information extracted from a Nova Glove. + */ +UCLASS(meta=(ScriptName = "SenseGloveNovaGloveInfoKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGNovaGloveInfoKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Info", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveInfo* MakeNovaGloveInfo(UObject* WorldContextObject); + + /** + * Create a new instance of a NovaGloveInfo. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Nova Glove Info", + Category="SenseGlove | Core | Nova | Nova Glove Info", meta=(WorldContext="WorldContextObject")) + static USGNovaGloveInfo* MakeNovaGloveInfo_DI_HV_FV_SFV_bRH_IC_NOS( + UObject* WorldContextObject, + const FString& DeviceId, const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, const FQuat& ImuCorrection, int32 NumberOfSensors); + + /** + * Parse a constants string into a NovaGloveInfo class. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Info", + meta=(WorldContext="WorldContextObject")) + static bool Parse(UObject* WorldContextObject, const FString& ConstantsString, USGNovaGloveInfo*& OutGloveInfo); + + /** + * Convert a string representation back into a NovaGloveInfo class. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Info", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveInfo* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Unique identifier of this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static FString GetDeviceId(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Hardware (sub) version of this Sense Glove Device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static FString GetHardwareVersion(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Firmware version running on the device's MicroController. (as v4.12, this is the 4). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static int32 GetFirmwareVersion(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Sub firmware version running on the device's microcontroller (as v4.12, this is the .12). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static int32 GetSubFirmwareVersion(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Determines if this is a right-handed Nova. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static bool IsRight(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * The IMU correction of this Nova. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Correction", Category="SenseGlove | Core | Nova | Nova Glove Info") + static FQuat GetImuCorrection_FQuat(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * The IMU correction of this Nova. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Correction", Category="SenseGlove | Core | Nova | Nova Glove Info") + static FRotator GetImuCorrection_FRotator(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * The number of sensors in this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static int32 GetNumberOfSensors(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Returns true if this glove's firmware is newer than certain version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + bool FirmwareNewerThan(const USGNovaGloveInfo* NovaGloveInfo, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Returns true if this glove's firmware is older than certain version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + bool FirmwareOlderThan(const USGNovaGloveInfo* NovaGloveInfo, + int32 FirmwareMain, int32 FirmwareSub, bool bInclusive) const; + + /** + * Returns true if this GloveInfo contains the same information as another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static bool Equals(const USGNovaGloveInfo* A, const USGNovaGloveInfo* B); + + /** + * Create a string representation of this Glove Info. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Info") + static FString ToString(const USGNovaGloveInfo* NovaGloveInfo); + + /** + * Convert this class into a string representation so it can be unpacked later. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Nova | Nova Glove Info") + static FString SGSerialize(const USGNovaGloveInfo* NovaGloveInfo); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h new file mode 100644 index 0000000..9bb5d0d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveKismetLibrary.h @@ -0,0 +1,514 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2024 NovaGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * An interface for the "Nova" - a soft glove. + * Contains methods for Kinematics, Haptics and Serialization. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGNovaGloveKismetLibrary.generated.h" + +class USGBasicHandModel; +class USGDevice; +class USGHandPose; +class USGHandProfile; +class USGNovaGlove; +class USGNovaGloveHandProfile; +class USGNovaGloveSensorData; + +/** + * A soft glove with Force- and Vibrotactile Feedback and limited tracking. + */ +UCLASS(meta=(ScriptName = "SenseGloveNovaGloveKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGNovaGloveKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Deserializes a Nova from its ConstantsString. Returns a nullptr if unsuccessful. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static USGDevice* Parse(UObject* WorldContextObject, const FString& ConstantsString); + + /** + * Retrieve all Nova's. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static TArray GetNovaGloves(UObject* WorldContextObject); + + /** + * Retrieve the first connected Nova there is. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove", Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetNovaGlove_OutG(UObject* WorldContextObject, USGNovaGlove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed Nova. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove", Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetNovaGlove_bRH_OutG(UObject* WorldContextObject, + bool bRightHanded, USGNovaGlove*& OutGlove); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | Nova | Nova Glove") + static void CalculateGloveLocation_RP_FQuat_RR_TH_bRH_OutGP_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | Nova | Nova Glove") + static void CalculateGloveLocation_RP_FRotator_RR_TH_bRH_OutGP_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | Nova | Nova Glove") + static void CalculateWristLocation_RP_FQuat_RR_TH_bRH_OutWP_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets, without + * needing an object reference. + * + * @remarks The simplest interface, using default offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | Nova | Nova Glove") + static void CalculateWristLocation_RP_FRotator_RR_TH_bRH_OutWP_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Byte indicating a new Nova haptic command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static FString GetHapticsByte(); + + /** + * Byte indicating a new Nova thresholds command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static FString GetThresholdsByte(); + + /** + * Byte to ignore Thresholds. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static FString GetIgnoreThresholdsByte(); + + /** + * Ranges before a Nova 1.0 Sensor is allowed to move. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static TArray GetNovaSensorRanges(); + + /** + * Converts Nova Sensor Data into floating point inputs for normalization. + */ + UFUNCTION(BlueprintCallable, DisplayName="To Normalized Values", Category="SenseGlove | Core | Nova | Nova Glove") + static TArray ToNormalizedValues_SD(const USGNovaGloveSensorData* SensorData); + + /** + * Convert Sensor Data into a series of normalized values. + */ + UFUNCTION(BlueprintCallable, DisplayName="To Normalized Values", Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static TArray ToNormalizedValues_SD_OutSN( + UObject* WorldContextObject, + const USGNovaGloveSensorData* SensorData, USGSensorNormalization*& OutSensorNormalizer); + + /** + * Calculate Hand Angles for a Nova Glove, based on normalized input. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static TArray CalculateHandAngles( + const TArray& NormalizedValues, const USGHandInterpolator* Interpolator); + + /** + * Converts a Threshold command into a Nova Glove command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static FString ToNovaCommandAsFlexion(const USGThresholdCommand* Thresholds); + + /** + * Converts a Threshold command into a Nova Glove command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static FString ToNovaCommandAsRaw( + const USGThresholdCommand* Thresholds, const USGSensorNormalization* Interpolator); + + /** + * Return the DeviceType of this Nova. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static ESGDeviceType GetDeviceType(const USGNovaGlove* NovaGlove); + + /** + * Returns this device's unique identifier. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static FString GetDeviceId(const USGNovaGlove* NovaGlove); + + /** + * Access this device's hardware designation. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static FString GetHardwareVersion(const USGNovaGlove* NovaGlove); + + /** + * Access this device's main firmware version. (ex: v3.2 -> 3). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static int32 GetFirmwareVersion(const USGNovaGlove* NovaGlove); + + /** + * Access this device's sub-firmware version. (ex: v3.2 -> 2). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static int32 GetSubFirmwareVersion(const USGNovaGlove* NovaGlove); + + /** + * Change this device's index within the SenseCom. Warning: Can cause errors. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static void SetDeviceIndex(UPARAM(ref) USGNovaGlove* NovaGlove, int32 NewIndex); + + /** + * Returns true if this device operates on a battery. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static bool HasBattery(const USGNovaGlove* NovaGlove); + + /** + * Returns true if this device is currently charging. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool IsCharging(UPARAM(ref) USGNovaGlove* NovaGlove); + + /** + * Returns the device's battery level, as a value between 0 (empty) and 1 (full). + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool GetBatteryLevel(UPARAM(ref) USGNovaGlove* NovaGlove, float& OutBatteryLevel); + + /** + * Returns true if this glove is meant for right hands. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static bool IsRight(const USGNovaGlove* NovaGlove); + + /** + * Retrieve Nova rotation. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Nova | Nova Glove") + static bool GetImuRotation_FQuat_OutI(UPARAM(ref) USGNovaGlove* NovaGlove, FQuat& OutImu); + + /** + * Retrieve Nova rotation. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | Nova | Nova Glove") + static bool GetImuRotation_FRotator_OutI(UPARAM(ref) USGNovaGlove* NovaGlove, FRotator& OutImu); + + /** + * Retrieve a new hand pose using this glove, based on (calibrated) user data. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose(UObject* WorldContextObject, + UPARAM(ref) USGNovaGlove* NovaGlove, + const USGBasicHandModel* HandModel, + USGHandPose*& OutHandPose); + + /** + * Returns the Hand Angles calculated by this Nova Glove. Used for input for HandPoses, but can be used in and of + * itself. + * + * @param OutHandAngles + */ + UFUNCTION(BlueprintPure, DisplayName="Get Hand Pose", Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandAngles(const USGNovaGlove* NovaGlove, TArray& OutHandAngles); + + /* + * Retrieve the calibration status of this Nova Glove. + */ + UFUNCTION(BlueprintPure, Category="NovaGlove | Core | Nova | Nova Glove") + static ESGHapticGloveCalibrationState GetCalibrationState(const USGNovaGlove* NovaGlove); + + /* + * Completes sensor Normalization on the Nova's end. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static void EndCalibration(UPARAM(ref) USGNovaGlove* NovaGlove); + + /* + * Completes sensor Normalization on the Nova's end. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static void ResetCalibration(UPARAM(ref) USGNovaGlove* NovaGlove); + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static void StopHaptics(UPARAM(ref) USGNovaGlove* NovaGlove); + + /** + * Stop only all vibrotactile feedback. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static void StopVibrations(UPARAM(ref) USGNovaGlove* NovaGlove); + + /** + * Take all active commands in the device queue, compile them into one and send them to the device. + * + * @returns Returns true if the message was successfully sent to SenseCom. Returns false if no changes to commands + * were detected. + * + * @remarks Generic function across any Haptic Interface in SGCore. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | SG | Nova Glove") + static bool SendHaptics(UPARAM(ref) USGNovaGlove* NovaGlove); + + /** + * Returns true if this Glove supports the chosen haptic location. + */ + UFUNCTION(BlueprintPure, Category="NovaGlove | Core | Nova | Nova Glove") + static bool SupportsCustomWaveform(const USGNovaGlove* NovaGlove, ESGHapticLocation AtLocation); + + /** + * Send a custom waveform to the Nova. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static bool SendCustomWaveform(UPARAM(ref) USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, ESGHapticLocation Location); + + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static bool QueueForceFeedbackLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray& Levels01); + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + */ + UFUNCTION(BlueprintCallable, Category="NovaGlove | Core | Nova | Nova Glove") + static bool QueueForceFeedbackLevel(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger, float Level01); + + /** + * Queue a vibrotactile level for each finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueVibroLevels(UPARAM(ref) USGNovaGlove* NovaGlove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueVibroLevel_L_L(UPARAM(ref) USGNovaGlove* NovaGlove, ESGHapticLocation Location, float Level01); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Nova | Nova Glove") + static void GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | Nova | Nova Glove") + static void GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Nova | Nova Glove") + static void GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | Nova | Nova Glove") + static void GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGNovaGlove* NovaGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Access all sorts of device info specific to this Nova. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove", meta=(WorldContext="WorldContextObject")) + static USGNovaGloveInfo* GetGloveInfo(UObject* WorldContextObject, const USGNovaGlove* NovaGlove); + + /** + * If true, this Nova Glove supports sending special firmware commands to lock brakes at specific sensor values. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static bool SupportsThresholds(const USGNovaGlove* NovaGlove); + + /** + * If true, this Nova Glove supports sending custom 'fire-and-forget' waveforms. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static bool SupportsCustomWaveforms(const USGNovaGlove* NovaGlove); + + /** + * If true, this glove's sensor calibration runs on board the device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static bool SupportsOnBoardNormalization(const USGNovaGlove* NovaGlove); + + /** + * Get the latest Sensor Data from this Glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetSensorData(UObject* WorldContextObject, + UPARAM(ref) USGNovaGlove* NovaGlove, USGNovaGloveSensorData*& OutSensorData); + + /** + * Converts a set of commands into a series of bytes (string) this glove can understand. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static FString ToNovaCommand( + const USGNovaGlove* NovaGlove, + const TArray& ForceFeedbackLevels, const TArray& BuzzLevels, float WristLevel); + + /** + * Queue a vibrotactle level for a specific finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueVibroLevel_F_A(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger, float Amplitude); + + /** + * Queue a command to the vibration amplitude of a general wrist actuator to a set level. + * + * @returns Returns true if the wrist command has been successfully queued. If false, the device might not support + * direct wrist control or have the appropriate firmware. + * + * @remarks This one isn't contained in an interface as it's not used outside of the NovaGlove class. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueWristLevel(UPARAM(ref) USGNovaGlove* NovaGlove, float Amplitude); + + /** + * Convert a HapticLocation into a Nova Motor location. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static ESGNovaVibroMotor ToNovaMotor(const USGNovaGlove* NovaGlove, ESGHapticLocation Location); + + /** + * Returns the channel index for a particular motor. Can make this as complex as I want for the Nova GLove(s). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static int32 ChannelIndex(const USGNovaGlove* NovaGlove, ESGNovaVibroMotor Motor); + + /** + * Ensures the waveform that is to be sent to this Nova Glove has the appropriate parameters. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static void ValidateWaveform(const USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, ESGNovaVibroMotor Motor); + + /** + * Directly sends a custom waveform to the Nova Glove motors, as opposed to specifying a Haptic Location. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool SendCustomWaveform_Nova( + UPARAM(ref) USGNovaGlove* NovaGlove, + USGCustomWaveform* OutWaveform, ESGNovaVibroMotor Motor, bool bValidateWaveform = true); + + /** + * Stops the glove when flexing pas this point. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueThresholdCommand_Flexion(UPARAM(ref) USGNovaGlove* NovaGlove, + int32 Finger, float FlexionThreshold); + + /** + * Queue a command to clear the threshold for a specific finger. + * + * @returns Returns true if the command was queued. If false, the device does not have the required firmware for + * these commands. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove") + static bool QueueClearThreshold(UPARAM(ref) USGNovaGlove* NovaGlove, int32 Finger); + + /** + * Create a string representation of this device for reporting purposes. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove") + static FString ToString(const USGNovaGlove* NovaGlove); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.h new file mode 100644 index 0000000..13bd3f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGNovaGloveSensorDataKismetLibrary.h @@ -0,0 +1,171 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Nova SensorData, parsed from rae string representations. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGNovaGloveSensorDataKismetLibrary.generated.h" + +class USGNovaGloveInfo; +class USGNovaGloveSensorData; + +/** + * Sensor Data coming from a Nova, converted into useful values. + */ +UCLASS(meta=(ScriptName = "SenseGloveNovaGloveSensorDataKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGNovaGloveSensorDataKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Default constructor for NovaGloveSensorData. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* MakeNovaGloveSensorData(UObject* WorldContextObject); + + /** + * Create a new instance of a NovaGloveSensorData. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Nova Glove Sensor Data", + Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* MakeNovaGloveSensorData_V_PV_FQuat_IR_bIP_BL_bC( + UObject* WorldContextObject, const TArray& Values, int32 ParsedValues, + const FQuat& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Create a new instance of a NovaGloveSensorData. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Nova Glove Sensor Data", + Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* MakeNovaGloveSensorData_V_PV_FRotator_IR_bIP_BL_b( + UObject* WorldContextObject, const TArray& Values, int32 ParsedValues, + const FRotator& ImuRotation, bool bImuParsed, float BatteryLevel, bool bCharging); + + /** + * Returns a NovaGloveSensorData without any values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* Empty(UObject* WorldContextObject); + + /** + * Parse the bytes as they come in from the device into usable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* Parse(UObject* WorldContextObject, + const FString& RawData, const USGNovaGloveInfo* GloveInfo); + + /** + * Convert this sensor data into ta string representation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGNovaGloveSensorData* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Pronation/Supination, Flexion/Extension and Abduction/Adduction values for each finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static TArray GetSensorValues(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Returns the sensor movement of a specific finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static float GetSensorValue(const USGNovaGloveSensorData* NovaGloveSensorData, + ESGFinger Finger, ESGNovaSensorLocation Location); + + /** + * The number of values that were parsed from the sensor string. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static int32 GetParsedValues(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Quaternion rotation relative to magnetic north. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static FQuat GetImuRotation_FQuat(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Rotation relative to magnetic north. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static FRotator GetImuRotation_FRotator(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Whether the IMU values were all successfully parsed, or not. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static bool IsImuParsed(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * A value between 0..1 that represents the battery level of this Nova Glove (0 .. 100%). Returns -1 if the value + * wasn't received. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static float GetBatteryLevel(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Returns true if this NovaGlove is connected to a power source. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static bool IsCharging(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Returns true if this sensor data contains the same values as another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static bool Equals(const USGNovaGloveSensorData* A, const USGNovaGloveSensorData* B); + + /** + * Create a readable string representation of this Sensor Data. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static FString ToString(const USGNovaGloveSensorData* NovaGloveSensorData); + + /** + * Convert this sensor data into a string so it can be stored on disk. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | Nova | Nova Glove Sensor Data") + static FString SGSerialize(const USGNovaGloveSensorData* NovaGloveSensorData); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseComKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseComKismetLibrary.h new file mode 100644 index 0000000..12359f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseComKismetLibrary.h @@ -0,0 +1,90 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseComKismetLibrary.generated.h" + +/** + * + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseComKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseComKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Registers current process as the latest SenseCom build. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SenseCom") + static bool RegisterExe(); + + /** + * Register a particular path as the SenseGlove executable location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Register Exe", Category="SenseGlove | Core | SenseCom") + static bool RegisterExe_EP(const FString& ExePath); + + /** + * Retrieve the location of SenseGlove executable. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SenseCom") + static bool GetExePath(FString& OutExePath); + + /** + * Returns true if SenseCom scanning is active. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SenseCom") + static bool ScanningActive(); + + /** + * Returns the directory of the current process. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SenseCom") + static bool GetCurrentExeDirectory(FString& OutDirectory); + + /** + * Force-starts the SenseCom application if it is active on the system. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SenseCom") + static bool StartupSenseCom(); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveInfoKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveInfoKismetLibrary.h new file mode 100644 index 0000000..e67c1f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveInfoKismetLibrary.h @@ -0,0 +1,235 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Glove information taken from the Sense Glove. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGFloatArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGloveInfoKismetLibrary.generated.h" + +class USGSenseGloveInfo; + +/** + * Glove Information taken from a SenseGlove. Contains everything from unique ID, firmware version, etc. + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseGloveInfoKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGloveInfoKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Info", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* MakeSenseGloveInfo(UObject* WorldContextObject); + + /** + * Create a new Sense Glove device model. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Info", + Category="SenseGlove | Core | SG | Sense Glove Info", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* MakeSenseGloveInfo_DI_HV_FV_SFV_bRH_NOS_FQuat_IC_SP_TArrayFQuat_SR_GL_F( + UObject* WorldContextObject, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FQuat& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + + /** + * Create a new Sense Glove device model. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Info", + Category="SenseGlove | Core | SG | Sense Glove Info", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* MakeSenseGloveInfo_DI_HV_FV_SFV_bRH_NOS_FRotator_IC_SP_TArrayFRotator_SR_GL_F( + UObject* WorldContextObject, const FString& DeviceId, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, + bool bRightHanded, int32 NumberOfSensors, const FRotator& ImuCorrection, + const TArray& StartPositions, const TArray& StartRotations, + const TArray& GloveLengths, const TArray& Functions); + + /** + * Create an instance of the SGModel from its string representation. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Info", + meta=(WorldContext="WorldContextObject")) + static bool Parse(UObject* WorldContextObject, + const FString& ConstantsString, USGSenseGloveInfo*& OutGloveInfo, + bool bUpdateOldModels = true); + + /** + * Deserialize a HandProfile back into usable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Info", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Unique identifier of this device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static FString GetDeviceId(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Hardware (sub) version of this Sense Glove Device. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static FString GetHardwareVersion(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Firmware version running on the device's MicroController. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static int32 GetFirmwareVersion(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Sub-Firmware version running on the device's MicroController. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static int32 GetSubFirmwareVersion(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Check if this Sense Glove belongs to a left or right hand. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static bool IsRight(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The number of Sensors in this SenseGlove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static int32 GetNumberOfSensors(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The IMU correction of this Sense Glove. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Correction", Category="SenseGlove | Core | SG | Sense Glove Info") + static FQuat GetImuCorrection_FQuat(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The IMU correction of this Sense Glove. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Correction", Category="SenseGlove | Core | SG | Sense Glove Info") + static FRotator GetImuCorrection_FRotator(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The starting positions of each Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetStartPositions(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The starting rotations of each Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Rotations", Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetStartRotations_TArrayFQuat(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The starting rotations of each Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Rotations", Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetStartRotations_TArrayFRotator(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The lengths of each Sense Glove finger section, in cm. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetGloveLengths(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Whether this device has a specific function (T/F). + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetFunctions(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * The starting position of one Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static FVector GetStartPosition(const USGSenseGloveInfo* SenseGloveInfo, ESGFinger Finger); + + /** + * The starting rotation of one Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Rotation", Category="SenseGlove | Core | SG | Sense Glove Info") + static FQuat GetStartRotation_FQuat(const USGSenseGloveInfo* SenseGloveInfo, ESGFinger Finger); + + /** + * The starting rotation of one Sense Glove finger, relative to the glove origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Start Rotation", Category="SenseGlove | Core | SG | Sense Glove Info") + static FRotator GetStartRotation_FRotator(const USGSenseGloveInfo* SenseGloveInfo, ESGFinger Finger); + + /** + * The lengths of one Sense Glove finger's sections, in cm. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Lengths", Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray GetGloveLengths_F(const USGSenseGloveInfo* SenseGloveInfo, ESGFinger Finger); + + /** + * Place incoming sensor data into the right format, according to this glove's model. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static TArray ToGloveAngles(const USGSenseGloveInfo* SenseGloveInfo, + const TArray& SensorAngles); + + /** + * Returns true if this SG_Model has the same values as another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static bool Equals(const USGSenseGloveInfo* A, const USGSenseGloveInfo* B); + + /** + * Create a string representation for fast logging. + */ + UFUNCTION(BlueprintPure, DisplayName="To String", Category="SenseGlove | Core | SG | Sense Glove Info") + static FString ToString_bSN(const USGSenseGloveInfo* SenseGloveInfo, bool bShortNotation); + + /** + * Create a string representation for logging. If shortNotation is false, all values are reported. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Info") + static FString ToString(const USGSenseGloveInfo* SenseGloveInfo); + + /** + * Serialize this HandProfile into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | SG | Sense Glove Info") + static FString SGSerialize(const USGSenseGloveInfo* SenseGloveInfo); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h new file mode 100644 index 0000000..e1c6f84 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveKismetLibrary.h @@ -0,0 +1,484 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * An interface for the Sense Glove exoskeleton glove. + * Contains methods for Kinematics, Haptics and Serialization. + */ + + +#pragma once + +#include "SGCore/SGHandPose.h" +#include "SGCore/SGSenseGlove.h" +#include "SGCore/SGSenseGlovePose.h" +#include "SGCore/SGSenseGloveSensorData.h" +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGloveKismetLibrary.generated.h" + +class USGDevice; +class USGHandInterpolator; +class USGHandPose; +class USGSenseGlove; +class USGSenseGloveSensorNormalizer; + +/** + * Interface for the Sense Glove; and exoskeleton Force-Feedback glove. + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseGloveKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGloveKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Deserializes a Sense Glove from its ConstantsString. Returns a nullptr if unsuccessful. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static USGDevice* Parse(UObject* WorldContextObject, const FString& ConstantsString); + + /** + * Retrieve all Sense Gloves connected to this system. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static TArray GetSenseGloves(UObject* WorldContextObject); + + /** + * Retrieve the first connected Sense Glove there is. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Sense Glove", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetSenseGlove_OutG(UObject* WorldContextObject, USGSenseGlove*& OutGlove); + + /** + * Retrieve the first (connected) right or left handed sense glove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Sense Glove", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetSenseGlove_bRH_OutG(UObject* WorldContextObject, bool bRightHanded, USGSenseGlove*& OutGlove); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | SG | Sense Glove") + static void CalculateGloveLocation_RP_FQuat_RR_TH_bRH_MO_OutGP_FQuat_OutGR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location without requiring an object reference. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Location", + Category="SenseGlove | Core | SG | Sense Glove") + static void CalculateGloveLocation_RP_FRotator_RR_TH_bRH_MO_OutGP_FRotator_OutGR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Calculates the full wrist location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | SG | Sense Glove") + static void CalculateWristLocation_RP_FQuat_RR_TH_bRH_MO_GWPOffset_FQuat_GWRO_OutWP_FQuat_OutWR( + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Calculates the full wrist location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Wrist Location", + Category="SenseGlove | Core | SG | Sense Glove") + static void CalculateWristLocation_RP_FRotator_RR_TH_bRH_MO_GWPOffset_FRotator_GWRO_OutWP_FRotator_OutWR( + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, bool bRightHanded, ESGFinger MountedOn, + const FVector& GloveWristPositionOffset, const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Byte indicating a new Sense Glove haptic command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static FString GetHapticsByte(); + + /** + * Byte indicating a new Thumper command. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static FString GetThumperByte(); + + /** + * Default offset from thimble to fingertip. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static FVector GetDefaultThimbleOffset(); + + /** + * Calculates a GlovePose based on sensor angles and a glove model. + * + * @remarks Use this when you already have gloveAngles collected. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Pose", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* CalculateGlovePose_SD_GM( + UObject* WorldContextObject, + const USGSenseGloveSensorData* SensorData, const USGSenseGloveInfo* GloveModel); + + /** + * Calculates a GlovePose based on gloveAngles and a glove model. + * + * @remarks Use this when you already have gloveAngles collected. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Pose", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* CalculateGlovePose_GA_GM( + UObject* WorldContextObject, + const TArray& GloveAngles, const USGSenseGloveInfo* GloveModel); + + /** + * Returns normalized flexions and abductions. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void NormalizeValues(const TArray& SumAngles, + const USGSenseGloveSensorNormalizer* Normalizer, + TArray& OutFlexions, TArray& OutAbductions); + + /** + * Calculate Hand Angles from a GlovePose and relevant normalizers. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void CalculateHandAngles( + const USGSenseGlovePose* GlovePose, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + TArray& OutHandAngles); + + /** + * Calculate a HandPose based on a glovePose and a solver. + * + * @remarks Use this when you already have a GlovePose. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Glove Pose", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static void CalculateHandPose( + UObject* WorldContextObject, + const USGSenseGlovePose* GlovePose, const USGBasicHandModel* HandModel, + const USGSenseGloveSensorNormalizer* Normalizer, const USGHandInterpolator* NormalizedToAngles, + USGHandPose*& OutHandPose); + + /** + * Get the DeviceType enumerator of this SenseGlove, used in DeviceList enumeration. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static ESGDeviceType GetDeviceType(const USGSenseGlove* SenseGlove); + + /** + * Retrieve this Sense Glove's unique identifier. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static FString GetDeviceId(const USGSenseGlove* SenseGlove); + + /** + * Retrieve this glove's hardware (sub) version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static FString GetHardwareVersion(const USGSenseGlove* SenseGlove); + + /** + * Retrieve this device's firmware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static int32 GetFirmwareVersion(const USGSenseGlove* SenseGlove); + + /** + * Retrieve this device's sub-firmware version. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static int32 GetSubFirmwareVersion(const USGSenseGlove* SenseGlove); + + /** + * Check if this Sense Glove is right handed. + * + * @remarks While the variable is stored in SG_GloveModel, added direct access here since its frequently used. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static bool IsRight(const USGSenseGlove* SenseGlove); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | SG | Sense Glove") + static bool GetImuRotation_FQuat_OutI(UPARAM(ref) USGSenseGlove* SenseGlove, FQuat& OutImu); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Rotation", Category="SenseGlove | Core | SG | Sense Glove") + static bool GetImuRotation_FRotator_OutI(UPARAM(ref) USGSenseGlove* SenseGlove, FRotator& OutImu); + + /** + * Retrieve a new hand pose using this glove's data, based on (calibrated) user data. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetHandPose(UObject* WorldContextObject, + UPARAM(ref) USGSenseGlove* SenseGlove, + const USGBasicHandModel* HandModel, + USGHandPose*& OutHandPose); + + /** + * Returns the Hand Angles calculated by this Sense Glove. Used for input for HandPoses, but can be used in and of + * itself. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static bool GetHandAngles(const USGSenseGlove* SenseGlove, TArray& OutHandAngles); + + /* + * Retrieve the calibration status of this Sense Glove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static ESGHapticGloveCalibrationState GetCalibrationState(const USGSenseGlove* SenseGlove); + + /* + * Completes sensor Normalization on the Glove's end. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void EndCalibration(UPARAM(ref) USGSenseGlove* SenseGlove); + + /* + * Completes sensor Normalization on the Glove's end. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void ResetCalibration(UPARAM(ref) USGSenseGlove* SenseGlove); + +public: + /* + * Stop all haptic feedback effects playing on this device. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void StopHaptics(UPARAM(ref) USGSenseGlove* SenseGlove); + + /** + * Stop only all vibrotactile feedback. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void StopVibrations(UPARAM(ref) USGSenseGlove* SenseGlove); + + /** + * Flush all streaming haptic effects on the different fingers to the Glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool SendHaptics(UPARAM(ref) USGSenseGlove* SenseGlove); + + /** + * Set the Force-Feedback value of a particular finger to a specific level. + * + * @remarks Devices that 'only' have on/off FFB will treat any value > 0.0 as 1.0. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueForceFeedbackLevels(UPARAM(ref) USGSenseGlove* SenseGlove, const TArray& Levels01); + + /** + * Queue a list of force-feedback levels, between 0.0 and 1.0. Your list should be sorted from thumb to pinky. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueForceFeedbackLevel(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, float Level01); + + /** + * Queue a vibrotactile level for each finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueVibroLevels(UPARAM(ref) USGSenseGlove* SenseGlove, const TArray& Amplitudes); + + /** + * Queue a command to set the (continuous) vibration level at a specific location to a set amplitude. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueVibroLevel_L_L(UPARAM(ref) USGSenseGlove* SenseGlove, ESGHapticLocation Location, float Level01); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetGloveLocation_RP_FQuat_RR_TH_OutGP_FQuat_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetGloveLocation_RP_FRotator_RR_TH_OutGP_FRotator_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetGloveLocation_RP_FQuat_RR_TH_MO_OutGP_FQuat_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, ESGFinger MountedOn, + FVector& OutGlovePosition, FQuat& OutGloveRotation); + + /** + * Retrieve the location of the glove origin, based on a reference location. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Glove Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetGloveLocation_RP_FRotator_RR_TH_MO_OutGP_FRotator_OutGR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, ESGFinger MountedOn, + FVector& OutGlovePosition, FRotator& OutGloveRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetWristLocation_RP_FQuat_RR_TH_OutWP_FQuat_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetWristLocation_RP_FRotator_RR_TH_OutWP_FRotator_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetWristLocation_RP_FQuat_RR_TH_GWPO_FQuat_GWRO_OutWP_FQuat_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FQuat& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FQuat& GloveWristRotationOffset, + FVector& OutWristPosition, FQuat& OutWristRotation); + + /** + * Retrieve the location of the wrist, based on a reference location and default glove-hand offsets. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Wrist Location", Category="SenseGlove | Core | SG | Sense Glove") + static void GetWristLocation_RP_FRotator_RR_TH_GWPO_FRotator_GWRO_OutWP_FRotator_OutWR( + const USGSenseGlove* SenseGlove, + const FVector& ReferencePosition, const FRotator& ReferenceRotation, + ESGPositionalTrackingHardware TrackingHardware, + const FVector& GloveWristPositionOffset, + const FRotator& GloveWristRotationOffset, + FVector& OutWristPosition, FRotator& OutWristRotation); + + /** + * Retrieve this glove's hardware model, which contains its hardware data. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* GetGloveInfo(UObject* WorldContextObject, const USGSenseGlove* SenseGlove); + + /** + * Offset from thimble to fingertip, used for Inverse Kinematics. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static TArray GetFingerThimbleOffsets(const USGSenseGlove* SenseGlove); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static void SetFingerThimbleOffset(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, const FVector& Offset); + + /** + * + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static bool SupportsWristActuator(const USGSenseGlove* SenseGlove); + + /** + * Get the latest Sensor Data from this Sense Glove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove", meta=(WorldContext="WorldContextObject")) + static bool GetSensorData(UObject* WorldContextObject, + const USGSenseGlove* SenseGlove, USGSenseGloveSensorData*& OutSensorData); + + /** + * Get the pose of this Sense Glove's hardware, based on its latest Sensor Data. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Glove Pose", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetGlovePose_OutGP(UObject* WorldContextObject, + UPARAM(ref) USGSenseGlove* SenseGlove, + USGSenseGlovePose*& OutGlovePose); + + /** + * Get the pose of this Sense Glove's hardware based on a set of Sensor Data. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Glove Pose", Category="SenseGlove | Core | SG | Sense Glove", + meta=(WorldContext="WorldContextObject")) + static bool GetGlovePose_SD_OutGP(UObject* WorldContextObject, + UPARAM(ref) USGSenseGlove* SenseGlove, + const USGSenseGloveSensorData* SensorData, + USGSenseGlovePose*& OutGlovePose); + + /** + * Queue a vibrotactle level for a specific finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueVibroLevel_F_A(UPARAM(ref) USGSenseGlove* SenseGlove, int32 Finger, float Amplitude); + + /** + * Queue a command for the SenseGlove Thumper actuator. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove") + static bool QueueThumperCommand(UPARAM(ref) USGSenseGlove* SenseGlove, ESGSenseGloveThumperCommand Command); + + /** + * Create a string representation of this device for reporting purposes. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove") + static FString ToString(const USGSenseGlove* SenseGlove); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGlovePoseKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGlovePoseKismetLibrary.h new file mode 100644 index 0000000..e484e72 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGlovePoseKismetLibrary.h @@ -0,0 +1,181 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains position and rotation data of a SenseGlove's exoskeleton, along + * with accessors for relevant variables. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGQuatArray.h" +#include "SGTypes/SGRotatorArray.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGlovePoseKismetLibrary.generated.h" + +class USGSenseGloveInfo; +class USGSenseGlovePose; + +/** + * Represents a pose of a Sense Glove exoskeleton. + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseGlovePoseKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGlovePoseKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The basic constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Pose", + meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* MakeSenseGlovePose(UObject* WorldContextObject); + + /** + * Creates a new instance of a SenseGlovePose. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Pose", + Category="SenseGlove | Core | SG | Sense Glove Pose", meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* MakeSenseGlovePose_bRH_JP_TArrayFSGQuatArray_JR_GA( + UObject* WorldContextObject, bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + + /** + * Creates a new instance of a SenseGlovePose. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Pose", + Category="SenseGlove | Core | SG | Sense Glove Pose", meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* MakeSenseGlovePose_bRH_JP_TArrayFSGRotatorArray_JR_GA( + UObject* WorldContextObject, bool bRightHanded, + const TArray& JointPositions, + const TArray& JointRotations, + const TArray& GloveAngles); + + /** + * Returns an idle pose for the Sense Glove if no data can be found. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Pose", + meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* IdlePose(UObject* WorldContextObject, const USGSenseGloveInfo* GloveInfo); + + /** + * Deserialize a GlovePose back into usable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Pose", + meta=(WorldContext="WorldContextObject")) + static USGSenseGlovePose* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Whether this Glove Pose was created for be a right- or left hand, or not. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static bool IsRight(const USGSenseGlovePose* SenseGlovePose); + + /** + * Positions of each glove joint, relative to the Glove's Origin. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetJointPositions(const USGSenseGlovePose* SenseGlovePose); + + /** + * Quaternion rotation of each glove joint, relative to the Glove Origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotations", Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetJointRotations_TArrayFSGQuatArray(const USGSenseGlovePose* SenseGlovePose); + + /** + * Rotation of each glove joint, relative to the Glove Origin. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Joint Rotations", Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetJointRotations_TArrayFSGRotatorArray(const USGSenseGlovePose* SenseGlovePose); + + /** + * Glove joint angles in euler notation, relative to the last segment. + * + * @remarks Essentially sensor angles, though placed in their proper xyz notation. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetGloveAngles(const USGSenseGlovePose* SenseGlovePose); + + /** + * The position of the tip of the 'thimbles', the furthest link on each glove link. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetThimblePositions(const USGSenseGlovePose* SenseGlovePose); + + /** + * The (quaternion) rotation of the 'thimbles', the furthest link on each link. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Thimble Rotations", Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetThimbleRotations_FQuat(const USGSenseGlovePose* SenseGlovePose); + + /** + * The rotation of the 'thimbles', the furthest link on each link. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Thimble Rotations", Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetThimbleRotations_FRotator(const USGSenseGlovePose* SenseGlovePose); + + /** + * Sum of the Sensor angles in each (xyz) direction. "Total Pronation / Flexion / Abduction". + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray GetTotalGloveAngles(const USGSenseGlovePose* SenseGlovePose); + + /** + * Calculate fingertip positions, knowing the offset between thimble and fingertips. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static TArray CalculateFingertips(const USGSenseGlovePose* SenseGlovePose, + const TArray& FingerOffsets); + + /** + * Returns true if this glove pose equals another. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static bool Equals(const USGSenseGlovePose* A, const USGSenseGlovePose* B); + + /** + * Returns a user-friendly string representation of this GlovePose for reporting. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Pose") + static FString ToString(const USGSenseGlovePose* SenseGlovePose, bool bShortFormat = false); + + /** + * Serialize this GlovePose into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | SG | Sense Glove Pose") + static FString SGSerialize(const USGSenseGlovePose* SenseGlovePose); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.h new file mode 100644 index 0000000..85d1d74 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorDataKismetLibrary.h @@ -0,0 +1,165 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Parsed sensor data coming form a Sense Glove. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGFloatArray.h" + +#include "SGSenseGloveSensorDataKismetLibrary.generated.h" + +class USGSenseGloveInfo; +class USGSenseGloveSensorData; + +/** + * Sense Glove Sensor Data, parsed from a sensor string. + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseGloveSensorDataKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGloveSensorDataKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The basic constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* MakeSenseGloveSensorData(UObject* WorldContextObject); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Sensor Data", + Category="SenseGlove | Core | SG | Sense Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* MakeSenseGloveSensorData_SA_FQuatImuRotation_PV_bIP( + UObject* WorldContextObject, + const TArray& SensorAngles, const FQuat& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Create a new instance of a Sense Glove Sensor Data class. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Sensor Data", + Category="SenseGlove | Core | SG | Sense Glove Sensor Data", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* MakeSenseGloveSensorData_SA_FRotatorImuRotation_PV_bIP( + UObject* WorldContextObject, + const TArray& SensorAngles, const FRotator& ImuRotation, int32 ParsedValues, bool bImuParsed); + + /** + * Returns sensor data with no values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* Empty(UObject* WorldContextObject); + + /** + * Deserialize Sense Glove sensor data from a raw char[] received through IPC. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* Parse(UObject* WorldContextObject, + const FString& RawData, const USGSenseGloveInfo* GloveInfo); + + /** + * Deserialize a HandProfile back into useable values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Sensor Data", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorData* Deserialize(UObject* WorldContextObject, const FString& SerializedString); + + /** + * Glove angles in degrees, sorted by finger, from proximal to distal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static TArray GetSensorAngles(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * Get the glove angles of a specific finger segment. + */ + UFUNCTION(BlueprintPure, DisplayName="Get Sensor Angles", + Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static TArray GetSensorAngles_F(const USGSenseGloveSensorData* SenseGloveSensorData, ESGFinger Finger); + + /** + * Returns all glove angles in a sequence, without splitting them per finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static TArray GetAngleSequence(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static FQuat GetImuRotation_FQuat(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * + */ + UFUNCTION(BlueprintPure, DisplayName="Get Imu Rotation", + Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static FRotator GetImuRotation_FRotator(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * Check how many values have been parsed from the Sensor String. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static int32 GetParsedValues(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * Check if the IMU was properly parsed. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static bool IsImuParsed(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * Returns true if the values of both data are equal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static bool Equals(const USGSenseGloveSensorData* A, const USGSenseGloveSensorData* B); + + /** + * Retrieve a simple representation of this sensor data for debugging purposes. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static FString ToString(const USGSenseGloveSensorData* SenseGloveSensorData); + + /** + * Serialize this HandProfile into a string representation. + */ + UFUNCTION(BlueprintPure, DisplayName="Serialize", Category="SenseGlove | Core | SG | Sense Glove Sensor Data") + static FString SGSerialize(const USGSenseGloveSensorData* SenseGloveSensorData); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.h new file mode 100644 index 0000000..33685e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveSensorNormalizerKismetLibrary.h @@ -0,0 +1,84 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Internal class that acts as a sort of 'in between' handProfile. This class + * converts SG Dk1 Angles into 'normalized data' - between 0 .. 1. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGSenseGloveSensorNormalizerKismetLibrary.generated.h" + +class USGSenseGloveSensorNormalizer; + +/** + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback and sensor module, and active contact + * feedback in the front strap. + */ +UCLASS(meta=(ScriptName = "SenseGloveSenseGloveSensorNormalizerKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGloveSensorNormalizerKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Sensor Normalizer", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorNormalizer* MakeSenseGloveSensorNormalizer(UObject* WorldContextObject); + + /** + * Creates a new SenseGlove Sensor Normalizer based off the device's sensor angles. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sense Glove Sensor Normalizer", + Category="SenseGlove | Core | SG | Sense Glove Sensor Normalizer", meta=(WorldContext="WorldContextObject")) + static USGSenseGloveSensorNormalizer* MakeSenseGloveSensorNormalizer_bRH( + UObject* WorldContextObject, + bool bRightHanded); + + /** + * Normalize a finger's flexion, based on the total flexion of the exoskeleton. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Normalizer") + static float NormalizeFlexion(const USGSenseGloveSensorNormalizer* SenseGloveSensorNormalizer, + int32 Finger, float SumFlexionAngles); + + /** + * Normalize a finger's abduction, based on the total abduction of the exoskeleton. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | SG | Sense Glove Sensor Normalizer") + static float NormalizeAbduction(const USGSenseGloveSensorNormalizer* SenseGloveSensorNormalizer, + int32 Finger, float SumAbductionAngles); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveVarsKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveVarsKismetLibrary.h new file mode 100644 index 0000000..905d56e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSenseGloveVarsKismetLibrary.h @@ -0,0 +1,144 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Contains enumerators and classes to aid in Sense Glove Deserialization. + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "HAL/Platform.h" +#include "Math/Quat.h" +#include "Math/Vector.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGVectorArray.h" + +#include "SGSenseGloveVarsKismetLibrary.generated.h" + +class USGSenseGloveInfo; + +/** + * "Database" class containing Sense Glove internal variables. + */ +UCLASS(meta=(ScriptName = "SenseGloveVarsKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSenseGloveVarsKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Retrieve a basic ConstantsString for a Sense Glove of a specific Hardware Version. Used for debugging / unit tests. + * + * @returns Returns an empty string when an invalid glove version is requested. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static FString GetStandardConstantsString(const FString& HardwareVersion, float FirmwareVersion, bool bRightHanded); + + /** + * Retrieve an example sensor string of a Sense Glove with a particular hardware- and firmware version. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static FString GetSensorString(const FString& HardwareVersion, float FirmwareVersion); + + /** + * Retrieve the starting positions of a particular Sense Glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static TArray GetStartPositions(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the starting rotations of a particular Sense Glove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Start Rotations", + Category="SenseGlove | Core | SG | Sense Glove Vars") + static TArray GetStartRotations_TArrayFQuat(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the starting rotations of a particular Sense Glove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Start Rotations", + Category="SenseGlove | Core | SG | Sense Glove Vars") + static TArray GetStartRotations_TArrayFRotator(const FString& HardwareVersion, bool bRightHanded); + + /** + * Retrieve the glove finger lengths of a particular Sense Glove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static TArray GetGloveLengths(const FString& HardwareVersion); + + /** + * Get the number of sensors of a SenseGlove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static int32 GetSensors(const FString& HardwareVersion); + + /** + * Get the default IMUCorrection for the SenseGlove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Correction", Category="SenseGlove | Core | SG | Sense Glove Vars") + static FQuat GetImuCorrection_FQuat(const FString& HardwareVersion, + int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Get the default IMUCorrection for the SenseGlove. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Imu Correction", Category="SenseGlove | Core | SG | Sense Glove Vars") + static FRotator GetImuCorrection_FRotator(const FString& HardwareVersion, + int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Check all functionality of a SenseGlove. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | SG | Sense Glove Vars") + static TArray GetFunctions(const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion); + + /** + * Generate a custom glove info. + */ + UFUNCTION(BlueprintCallable, DisplayName="GenerateGloveModel", Category="SenseGlove | Core | SG | Sense Glove Vars", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* GenerateGloveModel_HV_FV_SFV_bRH( + UObject* WorldContextObject, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, bool bRightHanded); + + /** + * Generate a custom glove info. + */ + UFUNCTION(BlueprintCallable, DisplayName="GenerateGloveModel", Category="SenseGlove | Core | SG | Sense Glove Vars", + meta=(WorldContext="WorldContextObject")) + static USGSenseGloveInfo* GenerateGloveModel_HV_FV_SFV_bRH_CI( + UObject* WorldContextObject, + const FString& HardwareVersion, int32 FirmwareVersion, int32 SubFirmwareVersion, bool bRightHanded, + const FString& CustomId); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSensorNormalizationKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSensorNormalizationKismetLibrary.h new file mode 100644 index 0000000..d8a0c22 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGSensorNormalizationKismetLibrary.h @@ -0,0 +1,141 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A script to normalize any set of floating point values by looking at their + * minimum and maximum values. Used for automagical calibration. + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGSensorNormalizationKismetLibrary.generated.h" + +class USGSensorNormalization; + +/** + * Interface for Nova 2.0 Gloves. A soft glove with detachable force-feedback and sensor module, and active contact + * feedback in the front strap. + */ +UCLASS(meta=(ScriptName = "SenseGloveSensorNormalizationKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGSensorNormalizationKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization", + meta=(WorldContext="WorldContextObject")) + static USGSensorNormalization* MakeSensorNormalization(UObject* WorldContextObject); + + /** + * Create a new instance of SensorNormalization. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Sensor Normalization", + Category="SenseGlove | Core | Util | Sensor Normalization", meta=(WorldContext="WorldContextObject")) + static USGSensorNormalization* MakeSensorNormalization_MR( + UObject* WorldContextObject, + const TArray& MovementRanges); + + /** + * If true, the normalization collection is active. If false, we're no longer collecting min / max values. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static bool CollectsNormalization(const USGSensorNormalization* SensorNormalization); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization") + static void SetCollectNormalization(UPARAM(ref) USGSensorNormalization* SensorNormalization, + bool bCollectNormalization); + + /** + * The amount of items in this collector Useful for FOR loops. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static int32 GetLength(const USGSensorNormalization* SensorNormalization); + + /** + * The amount of values that have moved the appropriate amount. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static int32 GetMoveCount(const USGSensorNormalization* SensorNormalization); + + /** + * Returns true if all sensors are allowed to move. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static bool AllSensorsMoving(const USGSensorNormalization* SensorNormalization); + + /** + * Reset the normalization of values. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization") + static void ResetNormalization(UPARAM(ref) USGSensorNormalization* SensorNormalization); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization") + static void UpdateNormalization(UPARAM(ref) USGSensorNormalization* SensorNormalization, + float Value, int32 Index); + + /** + * Normalize a value on a specific index, and update Normalization while you're at it. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization") + static float NormalizeValue(UPARAM(ref) USGSensorNormalization* SensorNormalization, + float Value, int32 Index); + + /** + * Update and Normalize a set of values, provided this is the same length. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Util | Sensor Normalization") + static TArray NormalizeValues(UPARAM(ref) USGSensorNormalization* SensorNormalization, + const TArray& Values); + + /** + * Returns true if a sensor on this index has moved enough. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static bool MovedEnough(const USGSensorNormalization* SensorNormalization, int32 Index); + + /** + * Turn a value from 0 .. 1 back into [minValue ... maxValue] range for the Nova Glove. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Util | Sensor Normalization") + static float Denormalize(const USGSensorNormalization* SensorNormalization, + float Value01, int32 Index, float FallbackValue = 1.0f); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGThresholdCommandKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGThresholdCommandKismetLibrary.h new file mode 100644 index 0000000..98eef85 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGThresholdCommandKismetLibrary.h @@ -0,0 +1,130 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * Internal class to hold 'Threshold Commands' for specific fingers. Can be sent + * to a Device, or used internally. + * Threshold Commands tell our device "When your sensor data is higher than this + * threshold, lock FFB. Otherwise, turn it back off". + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGThresholdCommandKismetLibrary.generated.h" + +class USGThresholdCommand; + +/** + * Internal class to hold 'Threshold Commands' for specific fingers. Can be sent to a Device, or used internally. + */ +UCLASS(meta=(ScriptName = "SenseGloveThresholdCommandKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGThresholdCommandKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * The default constructor. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command", + meta=(WorldContext="WorldContextObject")) + static USGThresholdCommand* MakeThresholdCommand(UObject* WorldContextObject); + + /** + * Create a new instance of ThresholdCommand. + */ + UFUNCTION(BlueprintCallable, DisplayName="Make Threshold Command", + Category="SenseGlove | Core | Haptics | Threshold Command", meta=(WorldContext="WorldContextObject")) + static USGThresholdCommand* MakeThresholdCommand_AF_TV( + UObject* WorldContextObject, + const TArray& AffectedFingers, const TArray& ThresholdValues); + + /** + * Retrieve the threshold of a particular finger. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptics | Threshold Command", + meta=(WorldContext="WorldContextObject")) + static float GetThreshold(const USGThresholdCommand* ThresholdCommand, int32 Finger); + + /** + * Activates the threshold for a finger at a particular value. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command") + static void SetThreshold(UPARAM(ref) USGThresholdCommand* ThresholdCommand, int32 Finger, float ThresholdValue); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptics | Threshold Command", + meta=(WorldContext="WorldContextObject")) + static TArray GetThresholds(const USGThresholdCommand* ThresholdCommand); + + /** + * Activates the threshold for a finger at a particular value. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command") + static void SetThresholds(UPARAM(ref) USGThresholdCommand* ThresholdCommand, + const TArray& AffectedFingers, const TArray& ThresholdValues); + + /** + * If true, the threshold on a finger should be active. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptics | Threshold Command", + meta=(WorldContext="WorldContextObject")) + static bool GetFingerActive(const USGThresholdCommand* ThresholdCommand, int32 Finger); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command") + static TArray GetActiveFingers(const USGThresholdCommand* ThresholdCommand); + + /** + * Deactivates Threshold Mode for a particular finger. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command") + static void ClearThreshold(UPARAM(ref) USGThresholdCommand* ThresholdCommand, int32 Finger); + + /** + * Disables Threshold mode for all fingers. Clears the ActiveFingers, but keeps the Thresholds value for now, in + * case you want to re-apply them later. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Haptics | Threshold Command") + static void ClearThresholds(UPARAM(ref) USGThresholdCommand* ThresholdCommand); + + /** + * Returns true if both values are exactly equal. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptics | Threshold Command") + static bool Equals(const USGThresholdCommand* A, const USGThresholdCommand* B); + + /** + * Print the contents of this Threshold Command. If inactive, a '-' is shown. + */ + UFUNCTION(BlueprintPure, Category="SenseGlove | Core | Haptics | Threshold Command") + static FString ToString(const USGThresholdCommand* ThresholdCommand); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h new file mode 100644 index 0000000..b1c0a1a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/Public/SGCoreKismet/SGTrackingKismetLibrary.h @@ -0,0 +1,753 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGTrackingKismetLibrary.generated.h" + +/** + * + */ +UCLASS(meta=(ScriptName = "SenseGloveTrackingKismetLibrary")) +class SENSEGLOVECOREKISMET_API USGTrackingKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + /** + * Knowing a position & rotation in 3D space, calculate a relative location based on offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Location", Category="SenseGlove | Core | Tracking") + static void CalculateLocation_TP_FQuat_TR_PO_FQuat_RO_OutNP_FQuat_OutNR( + const FVector& TrackedPosition, const FQuat& TrackedRotation, + const FVector& PositionOffset, const FQuat& RotationOffset, + FVector& OutNewPosition, FQuat& OutNewRotation); + + /** + * Knowing a position & rotation in 3D space, calculate a relative location based on offsets. + */ + UFUNCTION(BlueprintCallable, DisplayName="Calculate Location", Category="SenseGlove | Core | Tracking") + static void CalculateLocation_TP_FRotator_TR_PO_FRotator_RO_OutNP_FRotator_OutNR( + const FVector& TrackedPosition, const FRotator& TrackedRotation, + const FVector& PositionOffset, const FRotator& RotationOffset, + FVector& OutNewPosition, FRotator& OutNewRotation); + + /** + * Positional offset from each finger to the glove origin. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static TArray GetSenseGloveFingerToGlovePositionOrigin(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Finger To Glove Rotation Origin", + Category="SenseGlove | Core | Tracking") + static TArray GetSenseGloveFingerToGloveRotationOrigin_TArrayFQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Finger To Glove Rotation Origin", + Category="SenseGlove | Core | Tracking") + static TArray GetSenseGloveFingerToGloveRotationOrigin_TArrayFRotator(); + + /** + * Default position offset from glove origin to wrist location, in cm. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetSenseGloveWristPositionOffset(); + + /** + * Default rotation offset from glove origin to wrist location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FQuat GetSenseGloveWristRotationOffset_FQuat(); + + /** + * Default rotation offset from glove origin to wrist location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FRotator GetSenseGloveWristRotationOffset_FRotator(); + + /** + * Get the position and rotation offsets to go from the glove origin to the mounted position. + * @remarks Based on CAD. needs to be inverted when going from tracker to glove origin. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Mount Offset", Category="SenseGlove | Core | Tracking") + static void GetSenseGloveMountOffset_bRH_TF_OutIP_FQuat_OutIR( + bool bRightHanded, ESGFinger ToFinger, FVector& OutIPosition, FQuat& OutIRotation); + + /** + * Get the position and rotation offsets to go from the glove origin to the mounted position. + * @remarks Based on CAD. needs to be inverted when going from tracker to glove origin. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Mount Offset", Category="SenseGlove | Core | Tracking") + static void GetSenseGloveMountOffset_bRH_TF_OutIP_FRotator_OutIR( + bool bRightHanded, ESGFinger ToFinger, FVector& OutIPosition, FRotator& OutIRotation); + + /** + * Get the offset to get from the TrackedHardware to a SenseGlove mounting location. Combined with Glove-Mount + * offset to get the glove location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Tracker Mouunt Offset", + Category="SenseGlove | Core | Tracking") + static void GetSenseGloveTrackerMountOffset_H_bRH_OutPO_FQuat_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Get the offset to get from the TrackedHardware to a SenseGlove mounting location. Combined with Glove-Mount + * offset to get the glove location. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Tracker Mouunt Offset", + Category="SenseGlove | Core | Tracking") + static void GetSenseGloveTrackerMountOffset_H_bRH_OutPO_FRotator_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetSenseGloveViveToAttachPosition(); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetSenseGloveViveToAttachRotation_FQuat(); + + /** + * Vive Tracker origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetSenseGloveViveToAttachRotation_FRotator(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetSenseGloveOculusTouchToAttachPosition(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Oculus Touch To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetSenseGloveOculusTouchToAttachRotation_FQuat(); + + /** + * Oculus Touch origin to Finger rotational offset. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get SenseGlove Oculus Touch To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetSenseGloveOculusTouchToAttachRotation_FRotator(); + + /** + * Positional offset between Nova Glove Origin and Wrist. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetNovaToWristPositionOffset(); + + /** + * Rotational offset between Nova Glove Origin and Wrist. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nove To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FQuat GetNovaToWristRotationOffset_FQuat(); + + /** + * Rotational offset between Nova Glove Origin and Wrist. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nove To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FRotator GetNovaToWristRotationOffset_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaViveToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaViveToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaViveToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaViveToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaViveToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaViveToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaQuest2ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaQuest2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaQuest2ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaQuest2ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaQuest2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaQuest2ToAttachRotation_FRotator(); + + /** + * @remarks Left is a mirror, so we only need R pos. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaPico2ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Pico 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaPico2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Pico 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaPico2ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Pico 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaPico2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Pico 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaPico2ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaQuestProToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest Pro To To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaQuestProToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaQuestProToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaQuestProToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaQuestProToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaQuestProToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaViveFocus3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive Focus 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaViveFocus3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Vive Focus 3 To Attach Rotattion", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaViveFocus3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaViveFocus3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive Focus 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaViveFocus3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Vive Focus 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaViveFocus3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNovaQuest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNovaQuest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNovaQuest3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNovaQuest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNovaQuest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNovaQuest3ToAttachRotation_FRotator(); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove Wrist Offset", Category="SenseGlove | Core | Tracking") + static void GetNovaGloveWristOffset_bRH_OutPO_FQuat_OutRO( + bool bRightHanded, FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove Wrist Offset", Category="SenseGlove | Core | Tracking") + static void GetNovaGloveWristOffset_bRH_OutPO_FRotator_OutRO( + bool bRightHanded, FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove Tracker Offset", Category="SenseGlove | Core | Tracking") + static void GetNovaGloveTrackerOffset_H_bRH_OutPO_FQuat_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova Glove Tracker Offset", Category="SenseGlove | Core | Tracking") + static void GetNovaGloveTrackerOffset_H_bRH_OutPO_FRotator_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2ToWristPositionOffset(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2ToWristRotationOffset_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2ToWristRotationOffset_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2ToWristPositionOffset(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2ToWristRotationOffset_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 To Wrist Rotation Offset", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2ToWristRotationOffset_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2Quest2ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2Quest2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2Quest2ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2Quest2ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2Quest2ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 2 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2Quest2ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2QuestProToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2QuestProToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2QuestProToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2QuestProToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2QuestProToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest Pro To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2QuestProToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2ViveTrackerToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2ViveTrackerToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2ViveTrackerToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2ViveTrackerToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2ViveTrackerToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2ViveTrackerToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2ViveWristTrackerToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Wrist Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2ViveWristTrackerToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Vive Wrist Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2ViveWristTrackerToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2ViveWristTrackerToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Wrist Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2ViveWristTrackerToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Vive Wrist Tracker To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2ViveWristTrackerToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetRightNova2Quest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetRightNova2Quest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Right Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetRightNova2Quest3ToAttachRotation_FRotator(); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FVector GetLeftNova2Quest3ToAttachPosition(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FQuat GetLeftNova2Quest3ToAttachRotation_FQuat(); + + /** + * + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Left Nova 2 Quest 3 To Attach Rotation", + Category="SenseGlove | Core | Tracking") + static FRotator GetLeftNova2Quest3ToAttachRotation_FRotator(); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova 2 Glove Wrist Offset", Category="SenseGlove | Core | Tracking") + static void GetNova2GloveWristOffset_bRH_HW_OutPO_FQuat_OutRO( + bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + + /** + * Returns the Offsets that will bring us from the Nova origin to the wrist position. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova 2 Glove Wrist Offset", Category="SenseGlove | Core | Tracking") + static void GetNova2GloveWristOffset_bRH_HW_OutPO_FRotator_OutRO( + bool bRightHanded, const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * Retrieves Offsets for a particular device. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova 2 Glove Tracker Offset", Category="SenseGlove | Core | Tracking") + static void GetNova2GloveTrackerOffset_H_bRH_HW_OutPO_FQuat_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FQuat& OutRotationOffset); + /** + * Retrieves Offsets for a particular device. + */ + UFUNCTION(BlueprintCallable, DisplayName="Get Nova 2 Glove Tracker Offset", Category="SenseGlove | Core | Tracking") + static void GetNova2GloveTrackerOffset_H_bRH_HW_OutPO_FRotator_OutRO( + ESGPositionalTrackingHardware Hardware, bool bRightHanded, + const FString& HardwareVersion, + FVector& OutPositionOffset, FRotator& OutRotationOffset); + + /** + * + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Core | Tracking") + static FString ToString(ESGPositionalTrackingHardware Hardware); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveCoreKismet/SenseGloveCoreKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/SenseGloveCoreKismet.Build.cs new file mode 100644 index 0000000..1e3e516 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveCoreKismet/SenseGloveCoreKismet.Build.cs @@ -0,0 +1,65 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveCoreKismet : ModuleRules +{ + public SenseGloveCoreKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveKismet", + "SenseGloveTypes", + "SenseGloveUtils", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugCube.cpp b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugCube.cpp new file mode 100644 index 0000000..1239ad6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugCube.cpp @@ -0,0 +1,57 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebug/SGDebugCube.h" + +#include "DrawDebugHelpers.h" +#include "Engine/World.h" +#include "Kismet/GameplayStatics.h" +#include "Math/Color.h" +#include "UObject/Object.h" + +void FSGDebugCube::Draw(const UWorld* World, const FVector& Location, const FQuat& Rotation, + const FSGDebugCubeSettings& Settings) +{ + const float LifeTime = UGameplayStatics::GetWorldDeltaSeconds(World) * Settings.LifeTimeModifier; + DrawDebugBox(World, + Location, + Settings.Extent, + Rotation, + Settings.Color, + Settings.bPersistentLines, + LifeTime, + Settings.DepthPriority, + Settings.Thickness); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugGizmo.cpp b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugGizmo.cpp new file mode 100644 index 0000000..d9290e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugGizmo.cpp @@ -0,0 +1,60 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebug/SGDebugGizmo.h" + +#include "DrawDebugHelpers.h" +#include "Engine/World.h" +#include "Kismet/GameplayStatics.h" +#include "Math/Color.h" +#include "UObject/Object.h" + +void FSGDebugGizmo::Draw(const UWorld* World, const FVector& Location, const FQuat& Rotation, + const FSGDebugGizmoSettings& Settings) +{ + const float LifeTime = UGameplayStatics::GetWorldDeltaSeconds(World) * Settings.LifeTimeModifier; + + const FVector XAxisLineEnd(Location + Rotation.RotateVector(FVector(Settings.Length, 0.0f, 0.0f))); + DrawDebugLine(World, Location, XAxisLineEnd, + Settings.XAxisColor, Settings.bPersistentLines, LifeTime, Settings.DepthPriority, Settings.Thickness); + + const FVector YAxisLineEnd(Location + Rotation.RotateVector(FVector{0.0f, Settings.Length, 0.0f})); + DrawDebugLine(World, Location, YAxisLineEnd, + Settings.YAxisColor, Settings.bPersistentLines, LifeTime, Settings.DepthPriority, Settings.Thickness); + + const FVector ZAxisLineEnd{Location + Rotation.RotateVector(FVector{0.0f, 0.0f, Settings.Length})}; + DrawDebugLine(World, Location, ZAxisLineEnd, + Settings.ZAxisColor, Settings.bPersistentLines, LifeTime, Settings.DepthPriority, Settings.Thickness); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugVirtualHand.cpp b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugVirtualHand.cpp new file mode 100644 index 0000000..7205d96 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SGDebug/SGDebugVirtualHand.cpp @@ -0,0 +1,75 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebug/SGDebugVirtualHand.h" + +#include "DrawDebugHelpers.h" +#include "Engine/World.h" +#include "Kismet/GameplayStatics.h" +#include "Math/Color.h" +#include "UObject/Object.h" + +#include "SGDebug/SGDebugCube.h" +#include "SGDebug/SGDebugGizmo.h" + +void FSGDebugVirtualHand::Draw(const UWorld* World, + const FXRMotionControllerData& MotionControllerData, + const FSGVirtualHandDebuggingSettings& Settings) +{ + ensureAlwaysMsgf(Settings.DrawingMode != ESGDebugVirtualHandDrawingMode::None, + TEXT("Invalid virtual hand drawing mode!")); + + ensureAlwaysMsgf(MotionControllerData.bValid, + TEXT("Invalid motion controller data!")); + + ensureAlwaysMsgf(MotionControllerData.HandKeyPositions.Num() == MotionControllerData.HandKeyRotations.Num(), + TEXT("Mismatched motion controller data positions and rotations!")); + + for (TArray::SizeType HandKeyIndex = 0; + HandKeyIndex < MotionControllerData.HandKeyPositions.Num(); ++HandKeyIndex) + { + const FVector& HandKeyPosition{MotionControllerData.HandKeyPositions[HandKeyIndex]}; + const FQuat& HandKeyRotation{MotionControllerData.HandKeyRotations[HandKeyIndex]}; + + if (Settings.DrawingMode == ESGDebugVirtualHandDrawingMode::CubicJoints) + { + FSGDebugCube::Draw(World, HandKeyPosition, HandKeyRotation, Settings.DebugCubicHandSettings); + } + else if (Settings.DrawingMode == ESGDebugVirtualHandDrawingMode::GizmoJoints) + { + FSGDebugGizmo::Draw(World, HandKeyPosition, HandKeyRotation, Settings.DebugGizmoHandSettings); + } + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.cpp b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.cpp new file mode 100644 index 0000000..354848b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.cpp @@ -0,0 +1,42 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveDebug.h" + +#include "Modules/ModuleManager.h" + +#include "SenseGloveDebugModule.h" + +IMPLEMENT_MODULE(FSenseGloveDebugModule, SenseGloveDebug) diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.h b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebug.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.cpp b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.cpp new file mode 100644 index 0000000..5dce4fa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveDebugModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveDebugModule" + +void FSenseGloveDebugModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveDebug module..."); +} + +void FSenseGloveDebugModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveDebug module..."); +} + +void FSenseGloveDebugModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveDebug module has succeeded!"); +} + +void FSenseGloveDebugModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveDebug module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.h b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.h new file mode 100644 index 0000000..21cf7b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Private/SenseGloveDebugModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveDebug" + +class FSenseGloveDebugModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugCube.h b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugCube.h new file mode 100644 index 0000000..8c539ab --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugCube.h @@ -0,0 +1,63 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" + +#include "SGSettings/SGDebugCubeSettings.h" + +class SENSEGLOVEDEBUG_API FSGDebugCube final +{ +public: + static void Draw( + const UWorld* World, + const FVector& Location, const FQuat& Rotation, + const FSGDebugCubeSettings& Settings); + + static FORCEINLINE void Draw( + const UWorld* World, + const FVector& Location, const FRotator& Rotation, + const FSGDebugCubeSettings& Settings) + { + Draw(World, Location, Rotation.Quaternion(), Settings); + } + +public: + FSGDebugCube() = delete; + virtual ~FSGDebugCube() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugGizmo.h b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugGizmo.h new file mode 100644 index 0000000..cec8153 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugGizmo.h @@ -0,0 +1,63 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" + +#include "SGSettings/SGDebugGizmoSettings.h" + +class SENSEGLOVEDEBUG_API FSGDebugGizmo final +{ +public: + static void Draw( + const UWorld* World, + const FVector& Location, const FQuat& Rotation, + const FSGDebugGizmoSettings& Settings); + + static FORCEINLINE void Draw( + const UWorld* World, + const FVector& Location, const FRotator& Rotation, + const FSGDebugGizmoSettings& Settings) + { + Draw(World, Location, Rotation.Quaternion(), Settings); + } + +public: + FSGDebugGizmo() = delete; + virtual ~FSGDebugGizmo() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugVirtualHand.h b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugVirtualHand.h new file mode 100644 index 0000000..56abdfa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/Public/SGDebug/SGDebugVirtualHand.h @@ -0,0 +1,58 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HeadMountedDisplayTypes.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" + +#include "SGSettings/SGVirtualHandDebuggingSettings.h" + +class UWorld; + +class SENSEGLOVEDEBUG_API FSGDebugVirtualHand final +{ +public: + static void Draw( + const UWorld* World, + const FXRMotionControllerData& MotionControllerData, + const FSGVirtualHandDebuggingSettings& Settings); + +public: + FSGDebugVirtualHand() = delete; + virtual ~FSGDebugVirtualHand() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebug/SenseGloveDebug.Build.cs b/Plugins/SenseGlove/Source/SenseGloveDebug/SenseGloveDebug.Build.cs new file mode 100644 index 0000000..6f8b7bd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebug/SenseGloveDebug.Build.cs @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveDebug : ModuleRules +{ + public SenseGloveDebug(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveSettings", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugCubeKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugCubeKismetLibrary.cpp new file mode 100644 index 0000000..27d216d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugCubeKismetLibrary.cpp @@ -0,0 +1,56 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebugKismet/SGDebugCubeKismetLibrary.h" + +#include "SGDebug/SGDebugCube.h" + +void USGDebugCubeKismetLibrary::Draw_W_L_FQuat_R_S( + UObject* WorldContextObject, + const FVector& Location, const FQuat& Rotation, const FSGDebugCubeSettings& Settings) +{ + ensureAlwaysMsgf(WorldContextObject, TEXT("Invalid world context object!")); + + FSGDebugCube::Draw(WorldContextObject->GetWorld(), Location, Rotation, Settings); +} + +void USGDebugCubeKismetLibrary::Draw_W_L_FRotator_S( + UObject* WorldContextObject, + const FVector& Location, const FRotator& Rotation, const FSGDebugCubeSettings& Settings) +{ + ensureAlwaysMsgf(WorldContextObject, TEXT("Invalid world context object!")); + + FSGDebugCube::Draw(WorldContextObject->GetWorld(), Location, Rotation, Settings); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugGizmoKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugGizmoKismetLibrary.cpp new file mode 100644 index 0000000..2b8436f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugGizmoKismetLibrary.cpp @@ -0,0 +1,56 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebugKismet/SGDebugGizmoKismetLibrary.h" + +#include "SGDebug/SGDebugGizmo.h" + +void USGDebugGizmoKismetLibrary::Draw_W_L_FQuat_R_S( + UObject* WorldContextObject, + const FVector& Location, const FQuat& Rotation, const FSGDebugGizmoSettings& Settings) +{ + ensureAlwaysMsgf(WorldContextObject, TEXT("Invalid world context object!")); + + FSGDebugGizmo::Draw(WorldContextObject->GetWorld(), Location, Rotation, Settings); +} + +void USGDebugGizmoKismetLibrary::Draw_W_L_FRotator_S( + UObject* WorldContextObject, + const FVector& Location, const FRotator& Rotation, const FSGDebugGizmoSettings& Settings) +{ + ensureAlwaysMsgf(WorldContextObject, TEXT("Invalid world context object!")); + + FSGDebugGizmo::Draw(WorldContextObject->GetWorld(), Location, Rotation, Settings); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugVirtualHandKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugVirtualHandKismetLibrary.cpp new file mode 100644 index 0000000..2f2cb34 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SGDebugKismet/SGDebugVirtualHandKismetLibrary.cpp @@ -0,0 +1,47 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGDebugKismet/SGDebugVirtualHandKismetLibrary.h" + +#include "SGDebug/SGDebugVirtualHand.h" + +void USGDebugVirtualHandKismetLibrary::Draw( + UObject* WorldContextObject, + const FXRMotionControllerData& MotionControllerData, const FSGVirtualHandDebuggingSettings& Settings) +{ + ensureAlwaysMsgf(WorldContextObject, TEXT("Invalid world context object!")); + + FSGDebugVirtualHand::Draw(WorldContextObject->GetWorld(), MotionControllerData, Settings); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.cpp new file mode 100644 index 0000000..769c315 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveDebugKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveDebugKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveDebugKismetModule, SenseGloveDebugKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.h b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.cpp new file mode 100644 index 0000000..839acc9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveDebugKismetModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveDebugKismetModule" + +void FSenseGloveDebugKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveDebugKismet module..."); +} + +void FSenseGloveDebugKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveDebugKismet module..."); +} + +void FSenseGloveDebugKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveDebugKismet module has succeeded!"); +} + +void FSenseGloveDebugKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveDebugKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.h new file mode 100644 index 0000000..1a3b10b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Private/SenseGloveDebugKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveDebugKismet" + +class FSenseGloveDebugKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugCubeKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugCubeKismetLibrary.h new file mode 100644 index 0000000..561e63a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugCubeKismetLibrary.h @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGDebug/SGDebugCube.h" + +#include "SGDebugCubeKismetLibrary.generated.h" + +class USGDebug; + +UCLASS(meta=(ScriptName = "SenseGloveDebugCubeKismetLibrary")) +class SENSEGLOVEDEBUGKISMET_API USGDebugCubeKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, DisplayName="Draw", Category="SenseGlove | Debug | Cube", + meta=(WorldContext="WorldContextObject")) + static void Draw_W_L_FQuat_R_S( + UObject* WorldContextObject, + const FVector& Location, const FQuat& Rotation, + const FSGDebugCubeSettings& Settings); + + UFUNCTION(BlueprintCallable, DisplayName="Draw", Category="SenseGlove | Debug | Cube", + meta=(WorldContext="WorldContextObject")) + static void Draw_W_L_FRotator_S( + UObject* WorldContextObject, + const FVector& Location, const FRotator& Rotation, + const FSGDebugCubeSettings& Settings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugGizmoKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugGizmoKismetLibrary.h new file mode 100644 index 0000000..d06bd15 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugGizmoKismetLibrary.h @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGDebug/SGDebugGizmo.h" + +#include "SGDebugGizmoKismetLibrary.generated.h" + +class USGDebug; + +UCLASS(meta=(ScriptName = "SenseGloveDebugGizmoKismetLibrary")) +class SENSEGLOVEDEBUGKISMET_API USGDebugGizmoKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, DisplayName="Draw", Category="SenseGlove | Debug | Gizmo", + meta=(WorldContext="WorldContextObject")) + static void Draw_W_L_FQuat_R_S( + UObject* WorldContextObject, + const FVector& Location, const FQuat& Rotation, + const FSGDebugGizmoSettings& Settings); + + UFUNCTION(BlueprintCallable, DisplayName="Draw", Category="SenseGlove | Debug | Gizmo", + meta=(WorldContext="WorldContextObject")) + static void Draw_W_L_FRotator_S( + UObject* WorldContextObject, + const FVector& Location, const FRotator& Rotation, + const FSGDebugGizmoSettings& Settings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugVirtualHandKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugVirtualHandKismetLibrary.h new file mode 100644 index 0000000..03da3f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/Public/SGDebugKismet/SGDebugVirtualHandKismetLibrary.h @@ -0,0 +1,57 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGDebug/SGDebugVirtualHand.h" + +#include "SGDebugVirtualHandKismetLibrary.generated.h" + +class USGDebug; + +UCLASS(meta=(ScriptName = "SenseGloveDebugVirtualHandKismetLibrary")) +class SENSEGLOVEDEBUGKISMET_API USGDebugVirtualHandKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Debug | Virtual Hand", + meta=(WorldContext="WorldContextObject")) + static void Draw( + UObject* WorldContextObject, + const FXRMotionControllerData& MotionControllerData, + const FSGVirtualHandDebuggingSettings& Settings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveDebugKismet/SenseGloveDebugKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/SenseGloveDebugKismet.Build.cs new file mode 100644 index 0000000..f272998 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveDebugKismet/SenseGloveDebugKismet.Build.cs @@ -0,0 +1,66 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveDebugKismet : ModuleRules +{ + public SenseGloveDebugKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveDebug", + "SenseGloveKismet", + "SenseGloveSettings", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGAssetUtils.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGAssetUtils.cpp new file mode 100644 index 0000000..87bd98d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGAssetUtils.cpp @@ -0,0 +1,1051 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGEditor/SGAssetUtils.h" + +#include "Animation/DebugSkelMeshComponent.h" +#include "Animation/Skeleton.h" +#include "Containers/Array.h" +#include "Containers/UnrealString.h" +#include "Engine/SkeletalMesh.h" +#include "Engine/SkeletalMeshSocket.h" +#include "HeadMountedDisplayTypes.h" +#include "IEditableSkeleton.h" +#include "Internationalization/Text.h" +#include "IPersonaToolkit.h" +#include "ISkeletalMeshEditorModule.h" +#include "ISkeletonEditorModule.h" +#include "Misc/AssertionMacros.h" +#include "Misc/CoreMiscDefines.h" +#include "ReferenceSkeleton.h" +#include "Rendering/SkeletalMeshLODRenderData.h" +#include "Rendering/SkeletalMeshRenderData.h" +#include "Subsystems/AssetEditorSubsystem.h" +#include "UObject/Object.h" +#include "UObject/UnrealNames.h" + +#include "SGLog/SGLog.h" +#include "SGSettings/SGSettings.h" + +struct FSGAssetUtils::FImpl +{ + /************************ + * Static methods + ************************/ + + FORCEINLINE static const FSGVirtualHandSettings& GetVirtualHandSettings() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + const FSGVirtualHandSettings& VirtualHandSettings{Settings->GetVirtualHandSettings()}; + return VirtualHandSettings; + } + + FORCEINLINE static const FSGVirtualHandGrabSettings& GetVirtualHandGrabSettings() + { + const FSGVirtualHandSettings& VirtualHandSettings{GetVirtualHandSettings()}; + return VirtualHandSettings.GrabSettings; + } + + FORCEINLINE static const FSGVirtualHandMeshSettings& GetVirtualHandMeshSettings() + { + const FSGVirtualHandSettings& VirtualHandSettings{GetVirtualHandSettings()}; + return VirtualHandSettings.MeshSettings; + } + + FORCEINLINE static const FSGVirtualHandTouchSettings& GetVirtualHandTouchSettings() + { + const FSGVirtualHandSettings& VirtualHandSettings{GetVirtualHandSettings()}; + return VirtualHandSettings.TouchSettings; + } + + static bool IsHandBoneWeighted( + const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh, const FName& BoneName); + + static FName GetHandBoneName(const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh); + + static bool IsLeftHandMesh(const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh); + static bool IsRightHandMesh(const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh); + + static FTransform GetHandBoneBoneRefTransform(bool bRight, const FName& BoneName); + + static bool AddSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, + const FName& BoneName, const FName& SocketName, const FTransform& SocketTransform); + + static bool AddGrabAttachPointSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + + static bool AddFingertipColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, + bool bRight, EHandKeypoint DistalKeypoint, const FName& SocketName); + + static bool AddGrabThumbColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddGrabIndexColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddGrabMiddleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + + static bool AddTouchThumbColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddTouchIndexColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddTouchMiddleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddTouchRingColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + static bool AddTouchLittleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, bool bRight); + + static bool AddSenseGloveSockets(const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh); + + static bool AddSenseGloveSockets(USkeletalMesh* SkeletalMesh, USkeleton* Skeleton); + static bool ClearExistingSockets(USkeletalMesh* SkeletalMesh, USkeleton* Skeleton); +}; + +bool FSGAssetUtils::FImpl::IsHandBoneWeighted( + const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh, const FName& BoneName) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + if (!ensureAlwaysMsgf(BoneName != NAME_None, TEXT("Invalid BoneName!"))) + { + return false; + } + + const FReferenceSkeleton& RefSkeleton{SkeletalMesh->GetRefSkeleton()}; + const int32 BoneIndex = RefSkeleton.FindBoneIndex(BoneName); + + // MeshBoneIndex must be an index into the mesh's skeleton, *not* the source skeleton!!! + if (!ensureAlwaysMsgf(BoneIndex != INDEX_NONE, TEXT("Invalid BoneIndex!"))) + { + // If we get an invalid index, we are done here. + return false; + } + + const FSkeletalMeshRenderData* ResourceForRendering{SkeletalMesh->GetResourceForRendering()}; + if (!ensureAlwaysMsgf(ResourceForRendering, TEXT("Invalid ResourceForRendering!"))) + { + // If there's no mesh, then this bone can't possibly be weighted! + return false; + } + + const TIndirectArray& LODRenderData{ResourceForRendering->LODRenderData}; + const int32 LODRenderDataNum{LODRenderData.Num()}; + if (!ensureAlwaysMsgf(LODRenderDataNum > 0, TEXT("Invalid LODRenderDataNum!"))) + { + // If there's no mesh, then this bone can't possibly be weighted! + return false; + } + + const TSharedRef PersonaToolkit{SkeletalMeshEditor->GetPersonaToolkit()}; + const UDebugSkelMeshComponent* PreviewMeshComponent{PersonaToolkit->GetPreviewMeshComponent()}; + if (!ensureAlwaysMsgf(PreviewMeshComponent, TEXT("Invalid PreviewMeshComponent!"))) + { + return false; + } + + const int32 PredictedLODLevel = PreviewMeshComponent->GetPredictedLODLevel(); + + const USkeletalMesh* PreviewSkeletalMeshAsset{PreviewMeshComponent->GetSkeletalMeshAsset()}; + if (!ensureAlwaysMsgf(IsValid(PreviewSkeletalMeshAsset), TEXT("Invalid PreviewSkeletalMeshAsset!"))) + { + return false; + } + + const FSkeletalMeshRenderData* PreviewResourceForRendering{PreviewSkeletalMeshAsset->GetResourceForRendering()}; + if (!ensureAlwaysMsgf(PreviewResourceForRendering, TEXT("Invalid PreviewResourceForRendering!"))) + { + return false; + } + + const TIndirectArray& PreviewLODRenderData{PreviewResourceForRendering->LODRenderData}; + const int32 PreviewLODRenderDataNum{PreviewLODRenderData.Num()}; + if (!ensureAlwaysMsgf(LODRenderDataNum > 0, TEXT("Invalid LODRenderDataNum!"))) + { + return false; + } + + const int32 MaxPreviewLODRenderDataNum = PreviewLODRenderDataNum - 1; + + // Get current LOD + const int32 LODIndex = FMath::Clamp(PredictedLODLevel, 0, MaxPreviewLODRenderDataNum); + const FSkeletalMeshLODRenderData& LODData{PreviewLODRenderData[LODIndex]}; + + // Check whether the bone is vertex weighted + const int32 Index = LODData.ActiveBoneIndices.Find(IntCastChecked(BoneIndex)); + + return Index != INDEX_NONE; +} + +FName FSGAssetUtils::FImpl::GetHandBoneName( + const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return NAME_None; + } + + static const FString HandBonePrefix{TEXT("hand_")}; + + const FReferenceSkeleton& RefSkeleton{SkeletalMesh->GetRefSkeleton()}; + const int32 BoneNum = RefSkeleton.GetNum(); + + for (int i = 0; i < BoneNum; ++i) + { + const FName BoneName{RefSkeleton.GetBoneName(i)}; + const FString BoneNameString{BoneName.ToString()}; + + if (!BoneNameString.StartsWith(HandBonePrefix)) + { + continue; + } + + if (!IsHandBoneWeighted(SkeletalMeshEditor, SkeletalMesh, BoneName)) + { + continue; + } + + return BoneName; + } + + SGLOG_ERROR("Invalid SenseGlove virtual hand mesh!"); + + return NAME_None; +} + +bool FSGAssetUtils::FImpl::IsLeftHandMesh( + const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh) +{ + static constexpr int32 HandBoneNameIndex = static_cast(EHandKeypoint::Wrist); + + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandMeshSettings()}; + + if (!ensureAlwaysMsgf(HandBoneNameIndex < MeshSettings.RightHandBoneNames.Num() + && HandBoneNameIndex < MeshSettings.RightHandBoneNames.Num(), + TEXT("Invalid HandBoneNameIndex"))) + { + return false; + } + + const FName LeftHandBoneName{MeshSettings.LeftHandBoneNames[HandBoneNameIndex]}; + const FName HandBoneName{GetHandBoneName(SkeletalMeshEditor, SkeletalMesh)}; + + if (HandBoneName == NAME_None) + { + return false; + } + + if (HandBoneName != LeftHandBoneName) + { + return false; + } + + return true; +} + +bool FSGAssetUtils::FImpl::IsRightHandMesh( + const ISkeletalMeshEditor* SkeletalMeshEditor, const USkeletalMesh* SkeletalMesh) +{ + static constexpr int32 HandBoneNameIndex = static_cast(EHandKeypoint::Wrist); + + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings}; + + if (!ensureAlwaysMsgf(HandBoneNameIndex < MeshSettings.RightHandBoneNames.Num() + && HandBoneNameIndex < MeshSettings.RightHandBoneNames.Num(), + TEXT("Invalid HandBoneNameIndex"))) + { + return false; + } + + const FName RightHandBoneName{MeshSettings.RightHandBoneNames[HandBoneNameIndex]}; + const FName HandBoneName{GetHandBoneName(SkeletalMeshEditor, SkeletalMesh)}; + + if (HandBoneName == NAME_None) + { + return false; + } + + if (HandBoneName != RightHandBoneName) + { + return false; + } + + return true; +} + +FTransform FSGAssetUtils::FImpl::GetHandBoneBoneRefTransform(const bool bRight, const FName& BoneName) +{ + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings}; + + const TSoftObjectPtr& HandMesh{ + bRight + ? MeshSettings.LeftHandReferenceMesh + : MeshSettings.RightHandReferenceMesh + }; + + if (HandMesh.IsValid()) + { + const FReferenceSkeleton& ReferenceSkeleton{HandMesh->GetRefSkeleton()}; + const int32 BoneIndex = ReferenceSkeleton.FindBoneIndex(BoneName); + + if (BoneIndex == INDEX_NONE) + { + SGLOG_WARNING(FString::Printf(TEXT("Could not find a bone index for the '%s' joint!"), + *BoneName.ToString())); + } + + const TArray Transforms{ReferenceSkeleton.GetRefBonePose()}; + ensureAlwaysMsgf(Transforms.Num() > 0 && Transforms.Num() > BoneIndex, + TEXT("Invalid bone index '%d' or no transforms found!"), BoneIndex); + + const FTransform& Transform{Transforms[BoneIndex]}; + return Transform; + } + + ensureAlwaysMsgf( + bRight + ? MeshSettings.RightHandDefaultReferenceBoneTransforms.Contains(BoneName) + : MeshSettings.LeftHandDefaultReferenceBoneTransforms.Contains(BoneName), + TEXT("Invalid bone name '%s'!"), *BoneName.ToString()); + + const FTransform& Transform{ + bRight + ? MeshSettings.RightHandDefaultReferenceBoneTransforms[BoneName] + : MeshSettings.LeftHandDefaultReferenceBoneTransforms[BoneName] + }; + return Transform; + +} + +bool FSGAssetUtils::FImpl::AddSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, + const FName& BoneName, const FName& SocketName, const FTransform& SocketTransform) +{ + if (!ensureAlwaysMsgf(SkeletalMeshEditor, TEXT("Invalid SkeletalMeshEditor!"))) + { + return false; + } + + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + TSharedRef PersonaToolkit{SkeletalMeshEditor->GetPersonaToolkit()}; + TSharedPtr EditableSkeleton{PersonaToolkit->GetEditableSkeleton()}; + if (!ensureAlwaysMsgf(EditableSkeleton.IsValid(), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + USkeletalMeshSocket* Socket{NewObject()}; + Socket->BoneName = BoneName; + Socket->SocketName = SocketName; + if (!ensureAlwaysMsgf(IsValid(Socket), TEXT("Invalid Socket!"))) + { + return false; + } + + const bool bDoesSocketAlreadyExistOnTheMesh = EditableSkeleton->DoesSocketAlreadyExist( + Socket, FText::FromName(SocketName), ESocketParentType::Mesh, SkeletalMesh); + const bool bDoesSocketAlreadyExistOnTheSkeleton = EditableSkeleton->DoesSocketAlreadyExist( + Socket, FText::FromName(SocketName), ESocketParentType::Skeleton, SkeletalMesh); + + if (bDoesSocketAlreadyExistOnTheMesh || bDoesSocketAlreadyExistOnTheSkeleton) + { + SGLOG_ERROR(FString::Printf(TEXT("Socket '%s' already exists on '%s'; refuse to add a duplicate!"), + *SocketName.ToString(), *SkeletalMesh->GetPathName())); + return false; + } + + Socket = EditableSkeleton->AddSocket(BoneName); + if (!ensureAlwaysMsgf(IsValid(Socket), TEXT("Invalid Socket!"))) + { + return false; + } + + EditableSkeleton->RenameSocket(Socket->SocketName, SocketName, SkeletalMesh); + + Socket->RelativeLocation = SocketTransform.GetLocation(); + Socket->RelativeRotation = SocketTransform.GetRotation().Rotator(); + Socket->RelativeScale = SocketTransform.GetScale3D(); + + return true; +} + +bool FSGAssetUtils::FImpl::AddGrabAttachPointSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + static constexpr int32 BoneNameIndex = static_cast(EHandKeypoint::Wrist); + + const FSGVirtualHandMeshSettings MeshSettings{GetVirtualHandMeshSettings()}; + + if (!ensureAlwaysMsgf(BoneNameIndex < MeshSettings.RightHandBoneNames.Num() + && BoneNameIndex < MeshSettings.RightHandBoneNames.Num(), + TEXT("Invalid BoneNameIndex"))) + { + return false; + } + + const FName& BoneName{ + bRight + ? MeshSettings.RightHandBoneNames[BoneNameIndex] + : MeshSettings.LeftHandBoneNames[BoneNameIndex] + }; + + const FSGVirtualHandGrabSettings GrabSettings{GetVirtualHandGrabSettings()}; + const FName& SocketName{GrabSettings.GrabAttachPointSocketName}; + const FTransform& SocketTransform{GrabSettings.GrabAttachPointSocketTransform}; + + const bool bAddedSocket = AddSocket( + SkeletalMeshEditor, SkeletalMesh, BoneName, SocketName, SocketTransform); + if (!bAddedSocket) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the socket '%s' to '%s'!"), + *SocketName.ToString(), *SkeletalMesh->GetPathName())); + return false; + } + + return true; +} + +bool FSGAssetUtils::FImpl::AddFingertipColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, + const bool bRight, const EHandKeypoint DistalKeypoint, const FName& SocketName) +{ + const int32 BoneNameIndex = static_cast(DistalKeypoint); + + const FSGVirtualHandMeshSettings MeshSettings{GetVirtualHandMeshSettings()}; + + if (!ensureAlwaysMsgf(BoneNameIndex < MeshSettings.RightHandBoneNames.Num() + && BoneNameIndex < MeshSettings.RightHandBoneNames.Num(), + TEXT("Invalid BoneNameIndex"))) + { + return false; + } + + const FName& BoneName{ + bRight + ? MeshSettings.RightHandBoneNames[BoneNameIndex] + : MeshSettings.LeftHandBoneNames[BoneNameIndex] + }; + + FTransform SocketTransform{ + GetHandBoneBoneRefTransform(bRight, BoneName) + }; + + const bool bAddedSocket = AddSocket( + SkeletalMeshEditor, SkeletalMesh, BoneName, SocketName, MoveTemp(SocketTransform)); + + if (!bAddedSocket) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the socket '%s' to '%s'!"), + *BoneName.ToString(), *SkeletalMesh->GetPathName())); + return false; + } + + return true; +} + +bool FSGAssetUtils::FImpl::AddGrabThumbColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandGrabSettings GrabSettings{GetVirtualHandGrabSettings()}; + const FName& SocketName{GrabSettings.ThumbColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::ThumbDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddGrabIndexColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandGrabSettings GrabSettings{GetVirtualHandGrabSettings()}; + const FName& SocketName{GrabSettings.IndexColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::IndexDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddGrabMiddleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandGrabSettings GrabSettings{GetVirtualHandGrabSettings()}; + const FName& SocketName{GrabSettings.MiddleColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::MiddleDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddTouchThumbColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandTouchSettings TouchSettings{GetVirtualHandTouchSettings()}; + const FName& SocketName{TouchSettings.ThumbColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::ThumbDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddTouchIndexColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandTouchSettings TouchSettings{GetVirtualHandTouchSettings()}; + const FName& SocketName{TouchSettings.IndexColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::IndexDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddTouchMiddleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandTouchSettings TouchSettings{GetVirtualHandTouchSettings()}; + const FName& SocketName{TouchSettings.MiddleColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::MiddleDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddTouchRingColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandTouchSettings TouchSettings{GetVirtualHandTouchSettings()}; + const FName& SocketName{TouchSettings.RingColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::RingDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddTouchLittleColliderSocket( + const ISkeletalMeshEditor* SkeletalMeshEditor, USkeletalMesh* SkeletalMesh, const bool bRight) +{ + const FSGVirtualHandTouchSettings TouchSettings{GetVirtualHandTouchSettings()}; + const FName& SocketName{TouchSettings.PinkyColliderSocketName}; + return AddFingertipColliderSocket(SkeletalMeshEditor, SkeletalMesh, + bRight, EHandKeypoint::LittleDistal, SocketName); +} + +bool FSGAssetUtils::FImpl::AddSenseGloveSockets(const ISkeletalMeshEditor* SkeletalMeshEditor, + USkeletalMesh* SkeletalMesh) +{ + if (!ensureAlwaysMsgf(SkeletalMeshEditor, TEXT("Invalid SkeletalMeshEditor!"))) + { + return false; + } + + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + const bool bIsLeft = IsLeftHandMesh(SkeletalMeshEditor, SkeletalMesh); + const bool bIsRight = IsRightHandMesh(SkeletalMeshEditor, SkeletalMesh); + const bool bIsHandMesh = bIsLeft || bIsRight; + if (!bIsHandMesh) + { + SGLOG_ERROR(FString::Printf(TEXT("Asset '%s' is not a valid virtual hand mesh!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool bAddedGrabAttachPointSocket = AddGrabAttachPointSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!bAddedGrabAttachPointSocket) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the grab attach point socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool GrabThumbCollider = AddGrabThumbColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!GrabThumbCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the grab thumb collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool GrabIndexCollider = AddGrabIndexColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!GrabIndexCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the grab index collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool GrabMiddleCollider = AddGrabMiddleColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!GrabMiddleCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the grab middle collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool TouchThumbCollider = AddTouchThumbColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!TouchThumbCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the touch thumb collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool TouchIndexCollider = AddTouchIndexColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!TouchIndexCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the touch index collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool TouchMiddleCollider = AddTouchMiddleColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!TouchMiddleCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the touch middle collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool TouchRingCollider = AddTouchRingColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!TouchRingCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the touch ring collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + + const bool TouchLittleCollider = AddTouchLittleColliderSocket( + SkeletalMeshEditor, SkeletalMesh, bIsRight); + if (!TouchLittleCollider) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the touch little collider socket to asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + + return true; +} + +bool FSGAssetUtils::FImpl::AddSenseGloveSockets(USkeletalMesh* SkeletalMesh, USkeleton* Skeleton) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + const bool bAssetEdotirOpenForSkeletalMesh = IsAssetEditorOpenForAsset(SkeletalMesh); + if (bAssetEdotirOpenForSkeletalMesh) + { + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(SkeletalMesh); + (void) ClosedEditorsNum; + } + + const bool bAssetEdotirOpenForSkeleton = IsAssetEditorOpenForAsset(Skeleton); + if (bAssetEdotirOpenForSkeleton) + { + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(Skeleton); + (void) ClosedEditorsNum; + } + + const bool bCanModifySkeletalMesh = SkeletalMesh->CanModify(); + if (!bCanModifySkeletalMesh) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not modify the asset '%s'!"), *SkeletalMesh->GetPathName())); + return false; + } + + const bool bCanModifySkeleton = Skeleton->CanModify(); + if (!bCanModifySkeleton) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not modify the asset '%s'!"), *Skeleton->GetPathName())); + return false; + } + + bool bOpenedSkeletalMeshEditor = OpenEditorForAsset(SkeletalMesh); + if (!bOpenedSkeletalMeshEditor) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not open the editor for the asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + TArray AssetEditors{FindEditorsForAsset(SkeletalMesh)}; + if (AssetEditors.IsEmpty()) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not find any editor for the asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + for (IAssetEditorInstance* AssetEditor: AssetEditors) + { + if (!ensureAlwaysMsgf(AssetEditor, TEXT("Invalid AssetEditor!"))) + { + return false; + } + + const ISkeletalMeshEditor* SkeletalMeshEditor{static_cast(AssetEditor)}; + if (!SkeletalMeshEditor) + { + continue; + } + + const bool bAddedSenseGloveSockets = AddSenseGloveSockets(SkeletalMeshEditor, SkeletalMesh); + if (!bAddedSenseGloveSockets) + { + SGLOG_ERROR(FString::Printf(TEXT("Failed to add the SenseGlove sockets to the asset '%s'!"), + *SkeletalMesh->GetPathName())); + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(SkeletalMesh); + (void) ClosedEditorsNum; + return false; + } + + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(SkeletalMesh); + (void) ClosedEditorsNum; + + break; + } + + SkeletalMesh->PostEditChange(); + Skeleton->PostEditChange(); + + const bool bMarkedSkeletalMeshPackageDirty = SkeletalMesh->MarkPackageDirty(); + if (!bMarkedSkeletalMeshPackageDirty) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not mark the asset '%s' as dirty!"), *SkeletalMesh->GetPathName())); + return false; + } + + const bool bMarkedSkeletonPackageDirty = Skeleton->MarkPackageDirty(); + if (!bMarkedSkeletonPackageDirty) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not mark the asset '%s' as dirty!"), *Skeleton->GetPathName())); + return false; + } + + bOpenedSkeletalMeshEditor = OpenEditorForAsset(SkeletalMesh); + if (!bOpenedSkeletalMeshEditor) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not refresh the editor for the asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool bOpenedSkeletonEditor = OpenEditorForAsset(Skeleton); + if (!bOpenedSkeletonEditor) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not refresh the editor for the asset '%s'!"), + *Skeleton->GetPathName())); + return false; + } + + return true; +} + + +bool FSGAssetUtils::FImpl::ClearExistingSockets(USkeletalMesh* SkeletalMesh, USkeleton* Skeleton) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + const bool bAssetEdotirOpenForSkeletalMesh = IsAssetEditorOpenForAsset(SkeletalMesh); + if (bAssetEdotirOpenForSkeletalMesh) + { + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(SkeletalMesh); + (void) ClosedEditorsNum; + } + + const bool bAssetEdotirOpenForSkeleton = IsAssetEditorOpenForAsset(Skeleton); + if (bAssetEdotirOpenForSkeleton) + { + const int32 ClosedEditorsNum = CloseAllEditorsForAsset(Skeleton); + (void) ClosedEditorsNum; + } + + const bool bCanModifySkeletalMesh = SkeletalMesh->CanModify(); + if (!bCanModifySkeletalMesh) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not modify the asset '%s'!"), *SkeletalMesh->GetPathName())); + return false; + } + + const bool bCanModifySkeleton = Skeleton->CanModify(); + if (!bCanModifySkeleton) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not modify the asset '%s'!"), *Skeleton->GetPathName())); + return false; + } + + Skeleton->Sockets.Empty(); + + SkeletalMesh->PostEditChange(); + Skeleton->PostEditChange(); + + const bool bMarkedSkeletalMeshPackageDirty = SkeletalMesh->MarkPackageDirty(); + if (!bMarkedSkeletalMeshPackageDirty) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not mark the asset '%s' as dirty!"), *SkeletalMesh->GetPathName())); + return false; + } + + const bool bMarkedSkeletonPackageDirty = Skeleton->MarkPackageDirty(); + if (!bMarkedSkeletonPackageDirty) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not mark the asset '%s' as dirty!"), *Skeleton->GetPathName())); + return false; + } + + const bool bOpenedSkeletalMeshEditor = OpenEditorForAsset(SkeletalMesh); + if (!bOpenedSkeletalMeshEditor) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not refresh the editor for the asset '%s'!"), + *SkeletalMesh->GetPathName())); + return false; + } + + const bool bOpenedSkeletonEditor = OpenEditorForAsset(Skeleton); + if (!bOpenedSkeletonEditor) + { + SGLOG_ERROR(FString::Printf(TEXT("Could not refresh the editor for the asset '%s'!"), + *Skeleton->GetPathName())); + return false; + } + + return true; +} + +UAssetEditorSubsystem* FSGAssetUtils::GetAssetEditorSubsystem() +{ + if (!ensureAlwaysMsgf(GEditor, TEXT("Invalid GEditor!"))) + { + return nullptr; + } + + UAssetEditorSubsystem* AssetEditorSubsystem{GEditor->GetEditorSubsystem()}; + return AssetEditorSubsystem; +} + +UObject* FSGAssetUtils::GetEditedAsset() +{ + UAssetEditorSubsystem* AssetEditorSubsystem{GetAssetEditorSubsystem()}; + if (!ensureAlwaysMsgf(AssetEditorSubsystem, TEXT("Invalid AssetEditorSubsystem!"))) + { + return nullptr; + } + + TArray EditedAssets{AssetEditorSubsystem->GetAllEditedAssets()}; + for (UObject* EditedAsset: EditedAssets) + { + TArray AssetEditors{FindEditorsForAsset(EditedAsset)}; + for (IAssetEditorInstance* AssetEditor: AssetEditors) + { + if (!ensureAlwaysMsgf(AssetEditor, TEXT("Invalid AssetEditor!"))) + { + return nullptr; + } + + TSharedPtr TabManager = AssetEditor->GetAssociatedTabManager(); + if (!ensureAlwaysMsgf(TabManager.IsValid(), TEXT("Invalid TabManager!"))) + { + return nullptr; + } + + TSharedPtr OwnerTab{TabManager->GetOwnerTab()}; + if (!ensureAlwaysMsgf(OwnerTab.IsValid(), TEXT("Invalid OwnerTab!"))) + { + return nullptr; + } + + const bool bForeground = OwnerTab->IsForeground(); + if (bForeground) + { + return EditedAsset; + } + } + } + + ensureAlwaysMsgf(false, TEXT("The code flow should never reach here!")); + + return nullptr; +} + +bool FSGAssetUtils::IsAssetEditorOpenForAsset(UObject* Asset) +{ + if (!ensureAlwaysMsgf(Asset, TEXT("Invalid Asset!"))) + { + return false; + } + + TArray AssetEditors{FindEditorsForAsset(Asset)}; + return !AssetEditors.IsEmpty(); +} + +TArray FSGAssetUtils::FindEditorsForAsset(UObject* Asset) +{ + if (!ensureAlwaysMsgf(Asset, TEXT("Invalid Asset!"))) + { + return TArray{}; + } + + UAssetEditorSubsystem* AssetEditorSubsystem{GetAssetEditorSubsystem()}; + if (!ensureAlwaysMsgf(AssetEditorSubsystem, TEXT("Invalid AssetEditorSubsystem!"))) + { + return TArray{}; + } + + TArray AssetEditors{AssetEditorSubsystem->FindEditorsForAsset(Asset)}; + return AssetEditors; +} + +bool FSGAssetUtils::OpenEditorForAsset(UObject* Asset) +{ + if (!ensureAlwaysMsgf(Asset, TEXT("Invalid Asset!"))) + { + return false; + } + + UAssetEditorSubsystem* AssetEditorSubsystem{GetAssetEditorSubsystem()}; + if (!ensureAlwaysMsgf(AssetEditorSubsystem, TEXT("Invalid AssetEditorSubsystem!"))) + { + return false; + } + + const bool bOpenedEditor = AssetEditorSubsystem->OpenEditorForAsset(Asset); + return bOpenedEditor; +} + +int32 FSGAssetUtils::CloseAllEditorsForAsset(UObject* Asset) +{ + if (!ensureAlwaysMsgf(Asset, TEXT("Invalid Asset!"))) + { + return 0; + } + + UAssetEditorSubsystem* AssetEditorSubsystem{GetAssetEditorSubsystem()}; + if (!ensureAlwaysMsgf(AssetEditorSubsystem, TEXT("Invalid AssetEditorSubsystem!"))) + { + return false; + } + + const int32 ClosedEditorsNum = AssetEditorSubsystem->CloseAllEditorsForAsset(Asset); + return ClosedEditorsNum; +} + +bool FSGAssetUtils::AddSenseGloveSockets(USkeletalMesh* SkeletalMesh) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + USkeleton* Skeleton{SkeletalMesh->GetSkeleton()}; + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + const bool bAddedSenseGloveSockets = FImpl::AddSenseGloveSockets(SkeletalMesh, Skeleton); + return bAddedSenseGloveSockets; +} + +bool FSGAssetUtils::AddSenseGloveSockets(USkeleton* Skeleton) +{ + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + USkeletalMesh* SkeletalMesh{Skeleton->GetPreviewMesh()}; + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + const bool bAddedSenseGloveSockets = FImpl::AddSenseGloveSockets(SkeletalMesh, Skeleton); + return bAddedSenseGloveSockets; +} + +bool FSGAssetUtils::ClearExistingSockets(USkeletalMesh* SkeletalMesh) +{ + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + USkeleton* Skeleton{SkeletalMesh->GetSkeleton()}; + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + const bool bClearedExistingSockets = FImpl::ClearExistingSockets(SkeletalMesh, Skeleton); + return bClearedExistingSockets; +} + +bool FSGAssetUtils::ClearExistingSockets(USkeleton* Skeleton) +{ + if (!ensureAlwaysMsgf(IsValid(Skeleton), TEXT("Invalid Skeleton!"))) + { + return false; + } + + USkeletalMesh* SkeletalMesh{Skeleton->GetPreviewMesh()}; + if (!ensureAlwaysMsgf(IsValid(SkeletalMesh), TEXT("Invalid SkeletalMesh!"))) + { + return false; + } + + const bool bClearedExistingSockets = FImpl::ClearExistingSockets(SkeletalMesh, Skeleton); + return bClearedExistingSockets; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGContentBrowserExtension.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGContentBrowserExtension.cpp new file mode 100644 index 0000000..2c3243e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGContentBrowserExtension.cpp @@ -0,0 +1,314 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGEditor/SGContentBrowserExtension.h" + +#include "Animation/Skeleton.h" +#include "AssetRegistry/AssetData.h" +#include "Containers/UnrealString.h" +#include "ContentBrowserDelegates.h" +#include "ContentBrowserModule.h" +#include "Editor.h" +#include "Engine/SkeletalMesh.h" +#include "Framework/Commands/UIAction.h" +#include "Framework/MultiBox/MultiBoxBuilder.h" +#include "Framework/MultiBox/MultiBoxExtender.h" +#include "GenericPlatform/GenericPlatformMisc.h" +#include "Internationalization/Text.h" +#include "Math/Transform.h" +#include "Misc/MessageDialog.h" +#include "ReferenceSkeleton.h" +#include "UObject/Object.h" + +#include "SGEditor/SGAssetUtils.h" +#include "SGEditor/SGPluginStyle.h" + +#define LOCTEXT_NAMESPACE "SGContentBrowserExtension" + +struct FSGContentBrowserExtension::FImpl +{ + /************************ + * Static methods + ************************/ + + static void TryAddSenseGloveSockets(const TArray& SelectedAssets); + static void TryClearExistingSockets(const TArray& SelectedAssets); +}; + +void FSGContentBrowserExtension::FImpl::TryAddSenseGloveSockets(const TArray& SelectedAssets) +{ + const FText ConfirmationDialogText{ + LOCTEXT("SenseGloveAddSocketsConfirmation", + "Do you want to add the SenseGlove sockets?") + }; + const EAppReturnType::Type DialogResult{ + FMessageDialog::Open(EAppMsgType::YesNo, ConfirmationDialogText) + }; + + if (DialogResult != EAppReturnType::Yes) + { + return; + } + + bool bAllAssetsSucceeded = true; + + for (const FAssetData& Asset: SelectedAssets) + { + USkeletalMesh* SkeletalMesh{Cast(Asset.GetAsset())}; + USkeleton* Skeleton{Cast(Asset.GetAsset())}; + + if (!IsValid(SkeletalMesh) && !IsValid(Skeleton)) + { + continue; + } + + bool bAddedSenseGloveSockets = false; + + if (IsValid(SkeletalMesh)) + { + bAddedSenseGloveSockets = FSGAssetUtils::AddSenseGloveSockets(SkeletalMesh); + } + else if (IsValid(Skeleton)) + { + bAddedSenseGloveSockets = FSGAssetUtils::AddSenseGloveSockets(Skeleton); + } + + if (!bAddedSenseGloveSockets) + { + bAllAssetsSucceeded = false; + + const FText ResultDialogText{ + FText::Format( + LOCTEXT("SenseGloveAddSocketsResultFailedOn", + "Failed to add the SenseGlove sockets to '{0}'!"), + FText::FromString(Asset.GetSoftObjectPath().ToString())) + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } + + if (!bAddedSenseGloveSockets) + { + break; + } + } + + if (bAllAssetsSucceeded) + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveAddSocketsResultSuccess", + "Successfully added the SenseGlove grab and touch sockets. If you wish the changes to persist, save" + " the modified asset(s) now!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } +} + +void FSGContentBrowserExtension::FImpl::TryClearExistingSockets(const TArray& SelectedAssets) +{ + const FText ConfirmationDialogText{ + LOCTEXT("SenseGloveClearExistingSocketsConfirmation", + "Are you sure you want to clear all the existing sockets? This cannot be undone!") + }; + const EAppReturnType::Type DialogResult{ + FMessageDialog::Open(EAppMsgType::YesNo, ConfirmationDialogText) + }; + + if (DialogResult != EAppReturnType::Yes) + { + return; + } + + bool bAllAssetsSucceeded = true; + + for (const FAssetData& Asset: SelectedAssets) + { + USkeletalMesh* SkeletalMesh{Cast(Asset.GetAsset())}; + USkeleton* Skeleton{Cast(Asset.GetAsset())}; + + if (!IsValid(SkeletalMesh) && !IsValid(Skeleton)) + { + continue; + } + + bool bClearedExistingSockets = false; + + if (IsValid(SkeletalMesh)) + { + bClearedExistingSockets = FSGAssetUtils::ClearExistingSockets(SkeletalMesh); + } + else if (IsValid(Skeleton)) + { + bClearedExistingSockets = FSGAssetUtils::ClearExistingSockets(Skeleton); + } + + if (!bClearedExistingSockets) + { + bAllAssetsSucceeded = false; + + const FText ResultDialogText{ + FText::Format( + LOCTEXT("SenseGloveClearExistingSocketsResultFailedOn", + "Failed to clear all the existing sockets on '{0}'!"), + FText::FromString(Asset.GetSoftObjectPath().ToString())) + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } + + if (!bClearedExistingSockets) + { + break; + } + } + + if (bAllAssetsSucceeded) + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveClearExistingSocketsResultSuccess", + "Successfully cleared all the existing sockets! If you wish the changes to persist, save the" + " modified asset(s) now!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } +} + +void FSGContentBrowserExtension::Register() +{ + FContentBrowserModule& ContentBrowserModule{ + FModuleManager::LoadModuleChecked(TEXT("ContentBrowser")) + }; + + TArray& ContextMenuDelegates{ + ContentBrowserModule.GetAllAssetViewContextMenuExtenders() + }; + + ContextMenuDelegates.Add(FContentBrowserMenuExtender_SelectedAssets::CreateStatic(&OnExtendAssetSelectionMenu)); +} + +TSharedRef FSGContentBrowserExtension::OnExtendAssetSelectionMenu( + const TArray& SelectedAssets) +{ + TSharedRef Extender{MakeShared()}; + Extender->AddMenuExtension( + "CommonAssetActions", + EExtensionHook::After, + nullptr, + FMenuExtensionDelegate::CreateStatic(&AssetExtenderCallback, SelectedAssets) + ); + return MoveTemp(Extender); +} + +void FSGContentBrowserExtension::AssetExtenderCallback( + FMenuBuilder& MenuBuilder, const TArray SelectedAssets) +{ + bool bShouldExtendTheMenu = true; + bool bAnySkeletalMeshSelected = false; + bool bAnySkeletonSelected = false; + + for (const FAssetData& Asset: SelectedAssets) + { + if (Asset.IsRedirector() + || FName{*Asset.AssetClassPath.ToString()} == NAME_Class + || (Asset.PackageFlags & PKG_FilterEditorOnly)) + { + bShouldExtendTheMenu = false; + break; + } + + const bool bIsChildOfUSkeletalMesh = Asset.GetClass()->IsChildOf(USkeletalMesh::StaticClass()); + const bool bIsChildOfUSkeleton = Asset.GetClass()->IsChildOf(USkeleton::StaticClass()); + + if (!bIsChildOfUSkeletalMesh && !bIsChildOfUSkeleton) + { + bShouldExtendTheMenu = false; + break; + } + + if (bIsChildOfUSkeletalMesh) + { + bAnySkeletalMeshSelected = true; + } + + if (bIsChildOfUSkeleton) + { + bAnySkeletonSelected = true; + } + + if (bAnySkeletalMeshSelected && bAnySkeletonSelected) + { + bShouldExtendTheMenu = false; + break; + } + } + + if (!bShouldExtendTheMenu) + { + return; + } + + MenuBuilder.BeginSection(FName{TEXT("SenseGloveSection")}, LOCTEXT("SenseGloveHeading", "SenseGlove")); + + MenuBuilder.AddMenuEntry( + LOCTEXT("SenseGloveAddSocketsLabel", "Add SenseGlove Sockets"), + LOCTEXT("SenseGloveAddSocketsToolTip", "Adds and sets up the SenseGlove grab and touch sockets"), + FSGPluginStyle::GetStyleSetIcon(), + FUIAction{ + FExecuteAction::CreateLambda([SelectedAssets]()-> void + { + FImpl::TryAddSenseGloveSockets(SelectedAssets); + }) + }, + NAME_None, + EUserInterfaceActionType::Button, + NAME_None); + + MenuBuilder.AddMenuEntry( + LOCTEXT("SenseGloveClearExistingSocketsLabel", "Clear Existing Sockets"), + LOCTEXT("SenseGloveClearExistingSocketsToolTip", + "Clears all the existing sockets; SenseGlove or otherwise"), + FSGPluginStyle::GetStyleSetIcon(), + FUIAction{ + FExecuteAction::CreateLambda([SelectedAssets]()-> void + { + FImpl::TryClearExistingSockets(SelectedAssets); + }) + }, + NAME_None, + EUserInterfaceActionType::Button, + NAME_None); + + MenuBuilder.EndSection(); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGPluginStyle.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGPluginStyle.cpp new file mode 100644 index 0000000..576f85b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGPluginStyle.cpp @@ -0,0 +1,169 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGEditor/SGPluginStyle.h" + +#include "Interfaces/IPluginManager.h" +#include "Styling/SlateStyleRegistry.h" + +#define LOCTEXT_NAMESPACE "SGPluginStyle" + +struct FSGPluginStyle::FImpl +{ + /************************ + * Static methods + ************************/ + + static FString GetPluginName(); + static FString GetPluginBaseDir(); + static FString GetPluginResourcesDir(); + static FString GetPluginIconPath(); + + /************************ + * Member variables + ************************/ + + /************************ + * Owner object + ************************/ + + FSGPluginStyle* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGPluginStyle* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + void RegisterIcon(); + void Register(); + void Unregister(); +}; + +FString FSGPluginStyle::FImpl::GetPluginName() +{ + static const FString PluginName{"SenseGlove"}; + return PluginName; +} + +FString FSGPluginStyle::FImpl::GetPluginBaseDir() +{ + const FString PluginName{FImpl::GetPluginName()}; + const FString BaseDir{IPluginManager::Get().FindPlugin(PluginName)->GetBaseDir()}; + return BaseDir; +} + +FString FSGPluginStyle::FImpl::GetPluginResourcesDir() +{ + const FString BaseDir{GetPluginBaseDir()}; + const FString ResourcesDir{FPaths::Combine(BaseDir, "Resources")}; + return ResourcesDir; + +} + +FString FSGPluginStyle::FImpl::GetPluginIconPath() +{ + const FString ResourcesDir{GetPluginResourcesDir()}; + const FString IconPath{FPaths::Combine(ResourcesDir, "Icon128.png")}; + return IconPath; +} + +FSGPluginStyle::FSGPluginStyle() + : FSlateStyleSet{FName{TEXT("SenseGlove")}}, + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGPluginStyle::~FSGPluginStyle() = default; + +void FSGPluginStyle::Initialize() const +{ + Pimpl->Register(); +} + +void FSGPluginStyle::Deinitialize() const +{ + Pimpl->Unregister(); +} + +FSGPluginStyle::FImpl::FImpl(FSGPluginStyle* InOwner) + : Owner(InOwner) +{ +} + +FSGPluginStyle::FImpl::~FImpl() = default; + +void FSGPluginStyle::FImpl::RegisterIcon() +{ + FName IconName{FSGPluginStyle::GetStyleSetIconName()}; + FString IconPath{GetPluginIconPath()}; + FVector2d IconSize{128.0f, 128.0f}; + + Owner->Set(MoveTemp(IconName), + new FSlateImageBrush{ + MoveTemp(IconPath), MoveTemp(IconSize) + }); +} + +void FSGPluginStyle::FImpl::Register() +{ + RegisterIcon(); + + FSlateStyleRegistry::RegisterSlateStyle(*Owner); +} + +void FSGPluginStyle::FImpl::Unregister() +{ + FSlateStyleRegistry::UnRegisterSlateStyle(*Owner); +} + +void FSGPluginStyle::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditor.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditor.cpp new file mode 100644 index 0000000..1a79299 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditor.cpp @@ -0,0 +1,277 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGEditor/SGSocketsEditor.h" + +#include "Framework/MultiBox/MultiBoxExtender.h" +#include "ISkeletonEditorModule.h" +#include "Modules/ModuleManager.h" + +#include "SGEditor/SGPluginStyle.h" +#include "SGEditor/SGSocketsEditorCommands.h" + +#define LOCTEXT_NAMESPACE "SocketsEditor" + +struct FSGSocketsEditor::FImpl +{ + /************************ + * Member variables + ************************/ + + // TSharedPtr AssetActions; + TSharedPtr EditorCommands; + TSharedPtr MenuExtender; + TSharedPtr ToolbarExtender; + + /************************ + * Owner object + ************************/ + + FSGSocketsEditor* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGSocketsEditor* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +TSharedRef FSGSocketsEditor::GetInstance() +{ + static TSharedPtr Instance{MakeShared()}; + return Instance.ToSharedRef(); +} + +FSGSocketsEditor::FSGSocketsEditor() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSGSocketsEditor::~FSGSocketsEditor() = default; + +void FSGSocketsEditor::Initialize() const +{ + RegisterCommands(); + ExtendMenu(); + ExtendToolbar(); +} + +void FSGSocketsEditor::Deinitialize() const +{ + UnregisterCommands(); +} + +void FSGSocketsEditor::RegisterCommands() const +{ + if (Pimpl->EditorCommands.IsValid()) + { + Pimpl->EditorCommands.Reset(); + } + Pimpl->EditorCommands = MakeShared(); + Pimpl->EditorCommands->RegisterCommands(); +} + +void FSGSocketsEditor::UnregisterCommands() const +{ + if (!Pimpl->EditorCommands.IsValid()) + { + return; + } + Pimpl->EditorCommands->Unregister(); +} + +void FSGSocketsEditor::ExtendMenu() const +{ + if (Pimpl->MenuExtender.IsValid()) + { + Pimpl->MenuExtender.Reset(); + } + Pimpl->MenuExtender = MakeShared(); + + ISkeletonEditorModule& SkeletalMeshEditorModule{ + FModuleManager::LoadModuleChecked("SkeletalMeshEditor") + }; + + ISkeletonEditorModule& SkeletonEditorModule{ + FModuleManager::LoadModuleChecked("SkeletonEditor") + }; + + const TSharedPtr SkeletalMeshExtensibilityManager{ + SkeletalMeshEditorModule.GetMenuExtensibilityManager() + }; + + const TSharedPtr SkeletonExtensibilityManager{ + SkeletonEditorModule.GetMenuExtensibilityManager() + }; + + if (!ensureAlwaysMsgf(SkeletonExtensibilityManager.IsValid(), + TEXT("Invalid SkeletonExtensibilityManager!"))) + { + return; + } + + if (!ensureAlwaysMsgf(SkeletalMeshExtensibilityManager.IsValid(), + TEXT("Invalid SkeletalMeshExtensibilityManager!"))) + { + return; + } + + Pimpl->MenuExtender->AddMenuExtension( + FName{TEXT("AssetEditorActions")}, + EExtensionHook::After, + Pimpl->EditorCommands->CommandList, + FMenuExtensionDelegate::CreateLambda([&](FMenuBuilder MenuBuilder)-> void + { + MenuBuilder.BeginSection(FName{TEXT("SenseGlove")}, LOCTEXT("SenseGloveHeading", "SenseGlove")); + { + MenuBuilder.AddMenuEntry( + Pimpl->EditorCommands->SenseGloveAddSockets, + NAME_None, + LOCTEXT("SenseGloveAddSocketsLabel", "Add SenseGlove Sockets"), + LOCTEXT( + "SenseGloveAddSocketsToolTip", "Adds and sets up the SenseGlove grab and touch sockets"), + FSGPluginStyle::GetStyleSetIcon(), + NAME_None); + + MenuBuilder.AddMenuEntry( + Pimpl->EditorCommands->SenseGloveClearExistingSockets, + NAME_None, + LOCTEXT("SenseGloveClearExistingSocketsLabel", "Clear Existing Sockets"), + LOCTEXT( + "SenseGloveClearSocketsToolTip", "Clears all sockets; SenseGlove or otherwise"), + FSlateIcon{FSGPluginStyle::GetStyleSetIcon()}, + NAME_None); + } + MenuBuilder.EndSection(); + })); + + SkeletalMeshExtensibilityManager->AddExtender(Pimpl->MenuExtender); + SkeletonExtensibilityManager->AddExtender(Pimpl->MenuExtender); +} + +void FSGSocketsEditor::ExtendToolbar() const +{ + if (Pimpl->ToolbarExtender.IsValid()) + { + Pimpl->ToolbarExtender.Reset(); + } + Pimpl->ToolbarExtender = MakeShared(); + + ISkeletonEditorModule& SkeletalMeshEditorModule{ + FModuleManager::LoadModuleChecked("SkeletalMeshEditor") + }; + + ISkeletonEditorModule& SkeletonEditorModule{ + FModuleManager::LoadModuleChecked("SkeletonEditor") + }; + + const TSharedPtr SkeletalMeshExtensibilityManager{ + SkeletalMeshEditorModule.GetToolBarExtensibilityManager() + }; + + const TSharedPtr SkeletonExtensibilityManager{ + SkeletonEditorModule.GetToolBarExtensibilityManager() + }; + + if (!ensureAlwaysMsgf(SkeletonExtensibilityManager.IsValid(), + TEXT("Invalid SkeletonExtensibilityManager!"))) + { + return; + } + + if (!ensureAlwaysMsgf(SkeletalMeshExtensibilityManager.IsValid(), + TEXT("Invalid SkeletalMeshExtensibilityManager!"))) + { + return; + } + + Pimpl->ToolbarExtender->AddToolBarExtension( + FName{TEXT("SkeletalMesh")}, + EExtensionHook::After, + Pimpl->EditorCommands->CommandList, + FToolBarExtensionDelegate::CreateLambda([&](FToolBarBuilder& ToolbarBuilder)-> void + { + ToolbarBuilder.BeginSection(FName{TEXT("SenseGlove")}); + { + ToolbarBuilder.AddToolBarButton( + Pimpl->EditorCommands->SenseGloveAddSockets, + NAME_None, + LOCTEXT("SenseGloveAddSocketsLabel", "Add SenseGlove Sockets"), + LOCTEXT( + "SenseGloveAddSocketsToolTip", "Adds and sets up the SenseGlove grab and touch sockets"), + FSGPluginStyle::GetStyleSetIcon(), + NAME_None, + FNewMenuDelegate{} + ); + + ToolbarBuilder.AddToolBarButton( + Pimpl->EditorCommands->SenseGloveClearExistingSockets, + NAME_None, + LOCTEXT("SenseGloveClearExistingSocketsLabel", "Clear Existing Sockets"), + LOCTEXT( + "SenseGloveClearSocketsToolTip", "Clears all sockets; SenseGlove or otherwise"), + FSGPluginStyle::GetStyleSetIcon(), + NAME_None, + FNewMenuDelegate{} + ); + } + ToolbarBuilder.EndSection(); + })); + + SkeletalMeshExtensibilityManager->AddExtender(Pimpl->ToolbarExtender); + SkeletonExtensibilityManager->AddExtender(Pimpl->ToolbarExtender); +} + +FSGSocketsEditor::FImpl::FImpl(FSGSocketsEditor* InOwner) + : Owner(InOwner) +{ +} + +FSGSocketsEditor::FImpl::~FImpl() = default; + +void FSGSocketsEditor::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditorCommands.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditorCommands.cpp new file mode 100644 index 0000000..68c0574 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SGEditor/SGSocketsEditorCommands.cpp @@ -0,0 +1,224 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGEditor/SGSocketsEditorCommands.h" + +#include "Animation/Skeleton.h" +#include "Containers/UnrealString.h" +#include "Engine/SkeletalMesh.h" +#include "Framework/Commands/UIAction.h" +#include "GenericPlatform/GenericPlatformMisc.h" +#include "Internationalization/Text.h" +#include "Misc/MessageDialog.h" +#include "UObject/Object.h" + +#include "SGEditor/SGAssetUtils.h" +#include "SGEditor/SGPluginStyle.h" + +#define LOCTEXT_NAMESPACE "SocketsEditorCommands" + +struct FSGSocketsEditorCommands::FImpl +{ + /************************ + * Static methods + ************************/ + + static void TryAddSenseGloveSockets(); + static void TryClearExistingSockets(); +}; + +void FSGSocketsEditorCommands::FImpl::TryAddSenseGloveSockets() +{ + const FText ConfirmationDialogText{ + LOCTEXT("SenseGloveAddSocketsConfirmation", + "Do you want to add the SenseGlove sockets?") + }; + const EAppReturnType::Type DialogResult{ + FMessageDialog::Open(EAppMsgType::YesNo, ConfirmationDialogText) + }; + + if (DialogResult != EAppReturnType::Yes) + { + return; + } + + UObject* EditedAsset{FSGAssetUtils::GetEditedAsset()}; + USkeletalMesh* EditedSkeletalMesh{Cast(EditedAsset)}; + USkeleton* EditedSkeleton{Cast(EditedAsset)}; + + bool bAddedSenseGloveSockets = false; + if (IsValid(EditedSkeletalMesh)) + { + bAddedSenseGloveSockets = FSGAssetUtils::AddSenseGloveSockets(EditedSkeletalMesh); + } + else if (IsValid(EditedSkeleton)) + { + bAddedSenseGloveSockets = FSGAssetUtils::AddSenseGloveSockets(EditedSkeleton); + } + + if (bAddedSenseGloveSockets) + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveAddSocketsResultSuccess", + "Successfully added the SenseGlove grab and touch sockets. If you wish the changes to persist, save" + " the modified asset(s) now!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } + else + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveAddSocketsResultSuccessFailed", + "Failed to add the SenseGlove sockets!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } +} + +void FSGSocketsEditorCommands::FImpl::TryClearExistingSockets() +{ + const FText ConfirmationDialogText{ + LOCTEXT("SenseGloveClearExistingSocketsConfirmation", + "Are you sure you want to clear all the existing sockets? This cannot be undone!") + }; + const EAppReturnType::Type DialogResult{ + FMessageDialog::Open(EAppMsgType::YesNo, ConfirmationDialogText) + }; + + if (DialogResult != EAppReturnType::Yes) + { + return; + } + + UObject* EditedAsset{FSGAssetUtils::GetEditedAsset()}; + USkeletalMesh* EditedSkeletalMesh{Cast(EditedAsset)}; + USkeleton* EditedSkeleton{Cast(EditedAsset)}; + + bool bClearedExistingSockets = false; + if (IsValid(EditedSkeletalMesh)) + { + bClearedExistingSockets = FSGAssetUtils::ClearExistingSockets(EditedSkeletalMesh); + } + else if (IsValid(EditedSkeleton)) + { + bClearedExistingSockets = FSGAssetUtils::ClearExistingSockets(EditedSkeleton); + } + + if (bClearedExistingSockets) + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveClearExistingSocketsResultSuccess", + "Successfully cleared all the existing sockets! If you wish the changes to persist, save the" + " modified asset(s) now!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } + else + { + const FText ResultDialogText{ + LOCTEXT("SenseGloveClearExistingSocketsResultSuccessFailed", + "Failed to clear all the existing sockets!") + }; + FMessageDialog::Open(EAppMsgType::Ok, ResultDialogText); + } +} + +FSGSocketsEditorCommands::FSGSocketsEditorCommands() + : TCommands{ + TEXT("SGSocketsEditor"), + NSLOCTEXT("Contexts", "SGSocketsEditor", "SenseGlove Sockets Editor"), + NAME_None, + FSGPluginStyle::GetInstance()->GetStyleSetName() + } +{ +} + +FSGSocketsEditorCommands::~FSGSocketsEditorCommands() = default; + +void FSGSocketsEditorCommands::RegisterCommands() +{ + if (CommandList.IsValid()) + { + CommandList.Reset(); + } + + CommandList = MakeShared(); + + if (SenseGloveAddSockets.IsValid()) + { + SenseGloveAddSockets.Reset(); + } + + if (SenseGloveClearExistingSockets.IsValid()) + { + SenseGloveClearExistingSockets.Reset(); + } + + UI_COMMAND(SenseGloveAddSockets, + "Add SenseGlove Sockets", + "Adds and sets up the SenseGlove grab and touch sockets", + EUserInterfaceActionType::Button, + FInputChord{}); + + UI_COMMAND(SenseGloveClearExistingSockets, + "Clear Existing Sockets", + "Clears all the existing sockets; SenseGlove or otherwise", + EUserInterfaceActionType::Button, + FInputChord{}); + + CommandList->MapAction(SenseGloveAddSockets, + FExecuteAction::CreateLambda([&]()-> void + { + FImpl::TryAddSenseGloveSockets(); + }), + FCanExecuteAction::CreateLambda([&]()-> bool + { + return true; + }), + EUIActionRepeatMode::RepeatDisabled); + + CommandList->MapAction(SenseGloveClearExistingSockets, + FExecuteAction::CreateLambda([&]()-> void + { + FImpl::TryClearExistingSockets(); + }), + FCanExecuteAction::CreateLambda([&]()-> bool + { + return true; + }), + EUIActionRepeatMode::RepeatDisabled); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.cpp new file mode 100644 index 0000000..f9b1f75 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveEditor.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveEditorModule.h" + +IMPLEMENT_MODULE(FSenseGloveEditorModule, SenseGloveEditor) diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.h new file mode 100644 index 0000000..6087101 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditor.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.cpp b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.cpp new file mode 100644 index 0000000..8b4f0d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.cpp @@ -0,0 +1,72 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveEditorModule.h" + +#include "SGEditor/SGContentBrowserExtension.h" +#include "SGEditor/SGPluginStyle.h" +#include "SGEditor/SGSocketsEditor.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveEditorModule" + +void FSenseGloveEditorModule::StartupModule() +{ + SGLOG("Starting up SenseGloveEditor module..."); + + FSGPluginStyle::GetInstance()->Initialize(); + FSGContentBrowserExtension::Register(); + FSGSocketsEditor::GetInstance()->Initialize(); +} + +void FSenseGloveEditorModule::PreUnloadCallback() +{ + SGLOG("Unloading SenseGloveEditor module..."); +} + +void FSenseGloveEditorModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveEditor module has succeeded!"); +} + +void FSenseGloveEditorModule::ShutdownModule() +{ + SGLOG("Shutting down SenseGloveEditor module..."); + + FSGSocketsEditor::GetInstance()->Deinitialize(); + FSGPluginStyle::GetInstance()->Deinitialize(); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.h new file mode 100644 index 0000000..3f22257 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Private/SenseGloveEditorModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (The MIT License) + * + * Copyright (c) 2020 - 2023 SenseGlove + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveEditor" + +class FSenseGloveEditorModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGAssetUtils.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGAssetUtils.h new file mode 100644 index 0000000..2ff69fb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGAssetUtils.h @@ -0,0 +1,72 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "HAL/Platform.h" +#include "Templates/SharedPointer.h" + +class IAssetEditorInstance; +class UAssetEditorSubsystem; +class USkeletalMesh; +class USkeleton; +class UObject; + +class SENSEGLOVEEDITOR_API FSGAssetUtils final +{ +public: + static UAssetEditorSubsystem* GetAssetEditorSubsystem(); + + static UObject* GetEditedAsset(); + + static bool IsAssetEditorOpenForAsset(UObject* Asset); + static TArray FindEditorsForAsset(UObject* Asset); + static bool OpenEditorForAsset(UObject* Asset); + static int32 CloseAllEditorsForAsset(UObject* Asset); + + static bool AddSenseGloveSockets(USkeletalMesh* SkeletalMesh); + static bool AddSenseGloveSockets(USkeleton* Skeleton); + + static bool ClearExistingSockets(USkeletalMesh* SkeletalMesh); + static bool ClearExistingSockets(USkeleton* Skeleton); + +private: + struct FImpl; + +private: + FSGAssetUtils() = delete; + virtual ~FSGAssetUtils() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGContentBrowserExtension.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGContentBrowserExtension.h new file mode 100644 index 0000000..fc09a85 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGContentBrowserExtension.h @@ -0,0 +1,60 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Templates/SharedPointer.h" + +struct FAssetData; +class FMenuBuilder; +class USkeletalMesh; + +class SENSEGLOVEEDITOR_API FSGContentBrowserExtension +{ +public: + static void Register(); + +protected: + static TSharedRef OnExtendAssetSelectionMenu(const TArray& SelectedAssets); + static void AssetExtenderCallback(FMenuBuilder& MenuBuilder, const TArray SelectedAssets); + +private: + struct FImpl; + +private: + FSGContentBrowserExtension() = delete; + virtual ~FSGContentBrowserExtension() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGPluginStyle.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGPluginStyle.h new file mode 100644 index 0000000..99b4aed --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGPluginStyle.h @@ -0,0 +1,82 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Styling/SlateStyle.h" +#include "Templates/SharedPointer.h" + +class ISlateStyle; + +class SENSEGLOVEEDITOR_API FSGPluginStyle final : public FSlateStyleSet +{ +public: + FORCEINLINE static TSharedRef GetInstance() + { + static TSharedPtr Instance{MakeShared()}; + return Instance.ToSharedRef(); + } + + FORCEINLINE static const FName& GetStyleSetIconName() + { + static const FName IconName{TEXT("SenseGlove.Icon")}; + return IconName; + } + + FORCEINLINE static const FSlateIcon& GetStyleSetIcon() + { + static FSlateIcon Icon{GetInstance()->GetStyleSetName(), GetStyleSetIconName()}; + return Icon; + } + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGPluginStyle(); + virtual ~FSGPluginStyle(); + +public: + void Initialize() const; + void Deinitialize() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditor.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditor.h new file mode 100644 index 0000000..a77ced7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditor.h @@ -0,0 +1,71 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Framework/MultiBox/MultiBoxExtender.h" +#include "Templates/SharedPointer.h" + +class SENSEGLOVEEDITOR_API FSGSocketsEditor +{ +public: + static TSharedRef GetInstance(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + FSGSocketsEditor(); + virtual ~FSGSocketsEditor(); + +public: + void Initialize() const; + void Deinitialize() const; + + void RegisterCommands() const; + void UnregisterCommands() const; + + void ExtendMenu() const; + + void ExtendToolbar() const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditorCommands.h b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditorCommands.h new file mode 100644 index 0000000..9999c26 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/Public/SGEditor/SGSocketsEditorCommands.h @@ -0,0 +1,58 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Framework/Commands/Commands.h" +#include "Framework/Commands/UICommandList.h" +#include "Templates/SharedPointer.h" + +class SENSEGLOVEEDITOR_API FSGSocketsEditorCommands final : public TCommands +{ +public: + TSharedPtr CommandList; + TSharedPtr SenseGloveAddSockets; + TSharedPtr SenseGloveClearExistingSockets; + +private: + struct FImpl; + +public: + FSGSocketsEditorCommands(); + virtual ~FSGSocketsEditorCommands() override; + +public: + virtual void RegisterCommands() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveEditor/SenseGloveEditor.Build.cs b/Plugins/SenseGlove/Source/SenseGloveEditor/SenseGloveEditor.Build.cs new file mode 100644 index 0000000..6785c2c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveEditor/SenseGloveEditor.Build.cs @@ -0,0 +1,71 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveEditor : ModuleRules +{ + public SenseGloveEditor(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "AssetTools", + "Core", + "CoreUObject", + "Engine", + "InputCore", + "Projects", + "SkeletalMeshEditor", + "SkeletonEditor", + "Slate", + "SlateCore", + "UnrealEd", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveSettings", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGBackendType.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGBackendType.cpp new file mode 100644 index 0000000..d6bced5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGBackendType.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGBackendType.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGConnectionType.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGConnectionType.cpp new file mode 100644 index 0000000..944e994 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGConnectionType.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGConnectionType.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGDeviceType.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGDeviceType.cpp new file mode 100644 index 0000000..f97da6d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGDeviceType.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGDeviceType.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFinger.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFinger.cpp new file mode 100644 index 0000000..6e55c4f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFinger.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGFinger.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerMovement.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerMovement.cpp new file mode 100644 index 0000000..2df1704 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerMovement.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGFingerMovement.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerSolver.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerSolver.cpp new file mode 100644 index 0000000..ee87147 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGFingerSolver.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGFingerSolver.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticChannelType.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticChannelType.cpp new file mode 100644 index 0000000..adb454b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticChannelType.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGHapticChannelType.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticGloveCalibrationState.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticGloveCalibrationState.cpp new file mode 100644 index 0000000..b5c24d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticGloveCalibrationState.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGHapticGloveCalibrationState.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticLocation.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticLocation.cpp new file mode 100644 index 0000000..0ce66cd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGHapticLocation.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGHapticLocation.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGListFormat.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGListFormat.cpp new file mode 100644 index 0000000..dedcc03 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGListFormat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGListFormat.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNormalizationState.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNormalizationState.cpp new file mode 100644 index 0000000..1971f3e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNormalizationState.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNormalizationState.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2SensorLocation.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2SensorLocation.cpp new file mode 100644 index 0000000..48e3544 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2SensorLocation.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNova2SensorLocation.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2VibroMotor.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2VibroMotor.cpp new file mode 100644 index 0000000..3f0a1db --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNova2VibroMotor.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNova2VibroMotor.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaCVar.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaCVar.cpp new file mode 100644 index 0000000..949151f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaCVar.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNovaCVar.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaData.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaData.cpp new file mode 100644 index 0000000..5712f9a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaData.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNovaData.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaSensorLocation.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaSensorLocation.cpp new file mode 100644 index 0000000..5ee97b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaSensorLocation.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNovaSensorLocation.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaVibroMotor.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaVibroMotor.cpp new file mode 100644 index 0000000..d48bed0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGNovaVibroMotor.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGNovaVibroMotor.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGPositionalTrackingHardware.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGPositionalTrackingHardware.cpp new file mode 100644 index 0000000..6c3c9c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGPositionalTrackingHardware.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGPositionalTrackingHardware.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveCVar.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveCVar.cpp new file mode 100644 index 0000000..549486c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveCVar.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGSenseGloveCVar.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveSVar.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveSVar.cpp new file mode 100644 index 0000000..302db74 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveSVar.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGSenseGloveSVar.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveThumperCommand.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveThumperCommand.cpp new file mode 100644 index 0000000..952dbec --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSenseGloveThumperCommand.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGSenseGloveThumperCommand.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSensorFormat.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSensorFormat.cpp new file mode 100644 index 0000000..733dd43 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGSensorFormat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGSensorFormat.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbMovement.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbMovement.cpp new file mode 100644 index 0000000..8f933b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbMovement.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGThumbMovement.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbSolver.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbSolver.cpp new file mode 100644 index 0000000..dafab95 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGThumbSolver.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGThumbSolver.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGWaveformType.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGWaveformType.cpp new file mode 100644 index 0000000..99f2c4f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_ESGWaveformType.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_ESGWaveformType.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FQuat.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FQuat.cpp new file mode 100644 index 0000000..1ced597 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FQuat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FQuat.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBasicHandModelImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBasicHandModelImpl.cpp new file mode 100644 index 0000000..431f12c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBasicHandModelImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGBasicHandModelImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBetaDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBetaDeviceImpl.cpp new file mode 100644 index 0000000..1dd98b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGBetaDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGBetaDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGCustomWaveformImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGCustomWaveformImpl.cpp new file mode 100644 index 0000000..0003286 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGCustomWaveformImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGCustomWaveformImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceImpl.cpp new file mode 100644 index 0000000..6bd8173 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceModelImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceModelImpl.cpp new file mode 100644 index 0000000..643ccf4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGDeviceModelImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGDeviceModelImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandInterpolatorImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandInterpolatorImpl.cpp new file mode 100644 index 0000000..69e32b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandInterpolatorImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGHandInterpolatorImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandPoseImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandPoseImpl.cpp new file mode 100644 index 0000000..76ff6b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHandPoseImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGHandPoseImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticChannelInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticChannelInfoImpl.cpp new file mode 100644 index 0000000..120781c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticChannelInfoImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGHapticChannelInfoImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticGloveImpl.cpp new file mode 100644 index 0000000..673cbd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGHapticGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGHapticGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGInterpolationSetImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGInterpolationSetImpl.cpp new file mode 100644 index 0000000..d0b9155 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGInterpolationSetImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGInterpolationSetImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveImpl.cpp new file mode 100644 index 0000000..e1864bb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGNova2GloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.cpp new file mode 100644 index 0000000..5d72f4a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveImpl.cpp new file mode 100644 index 0000000..56b6e73 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGNovaGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveInfoImpl.cpp new file mode 100644 index 0000000..b8c333a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveInfoImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGNovaGloveInfoImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.cpp new file mode 100644 index 0000000..03c533c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveImpl.cpp new file mode 100644 index 0000000..f75ca76 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSenseGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveInfoImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveInfoImpl.cpp new file mode 100644 index 0000000..69eed0d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveInfoImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSenseGloveInfoImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGlovePoseImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGlovePoseImpl.cpp new file mode 100644 index 0000000..18f65fd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGlovePoseImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSenseGlovePoseImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.cpp new file mode 100644 index 0000000..333973b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.cpp new file mode 100644 index 0000000..7a1025f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSensorNormalizationImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSensorNormalizationImpl.cpp new file mode 100644 index 0000000..a08b4e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGSensorNormalizationImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGSensorNormalizationImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGThresholdCommandImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGThresholdCommandImpl.cpp new file mode 100644 index 0000000..1f9acd3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FSGThresholdCommandImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FSGThresholdCommandImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FString.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FString.cpp new file mode 100644 index 0000000..8a68843 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FString.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FString.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FVector.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FVector.cpp new file mode 100644 index 0000000..b249faa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_FVector.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_FVector.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_JNIEnv_Ptr.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_JNIEnv_Ptr.cpp new file mode 100644 index 0000000..0ba8c10 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_JNIEnv_Ptr.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_JNIEnv_Ptr.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FQuat.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FQuat.cpp new file mode 100644 index 0000000..63aae9c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FQuat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_FQuat.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNova2GloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNova2GloveImpl.cpp new file mode 100644 index 0000000..f94a722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNova2GloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_FSGNova2GloveImpl.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNovaGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNovaGloveImpl.cpp new file mode 100644 index 0000000..35108eb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGNovaGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_FSGNovaGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGSenseGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGSenseGloveImpl.cpp new file mode 100644 index 0000000..5e96ba4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FSGSenseGloveImpl.cpp @@ -0,0 +1,35 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + +#include "SGInterop/SGIC_TArray_FSGSenseGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FString.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FString.cpp new file mode 100644 index 0000000..6263a95 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FString.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_FString.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FVector.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FVector.cpp new file mode 100644 index 0000000..091ce7c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_FVector.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_FVector.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FQuat.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FQuat.cpp new file mode 100644 index 0000000..49382a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FQuat.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TArray_FQuat.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.cpp new file mode 100644 index 0000000..8a5817b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FVector.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FVector.cpp new file mode 100644 index 0000000..fe3d723 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_FVector.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TArray_FVector.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_bool.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_bool.cpp new file mode 100644 index 0000000..8450c7d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_bool.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TArray_bool.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_float.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_float.cpp new file mode 100644 index 0000000..de0ec0e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TArray_float.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TArray_float.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.cpp new file mode 100644 index 0000000..e2d4702 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.cpp new file mode 100644 index 0000000..35194e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.cpp @@ -0,0 +1,35 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + +#include "SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_bool.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_bool.cpp new file mode 100644 index 0000000..b009491 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_bool.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_bool.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_float.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_float.cpp new file mode 100644 index 0000000..bb75110 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_float.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_float.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_int32.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_int32.cpp new file mode 100644 index 0000000..f85bdff --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TArray_int32.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TArray_int32.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.cpp new file mode 100644 index 0000000..1dc441e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.cpp new file mode 100644 index 0000000..c907880 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.cpp new file mode 100644 index 0000000..7b3c208 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.cpp new file mode 100644 index 0000000..0b7e800 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.cpp new file mode 100644 index 0000000..2838088 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.cpp new file mode 100644 index 0000000..bb6039f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.cpp new file mode 100644 index 0000000..4f44b6c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jclass.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jclass.cpp new file mode 100644 index 0000000..a77acff --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jclass.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_jclass.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jmethodID.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jmethodID.cpp new file mode 100644 index 0000000..450ba34 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SGInterop/SGIC_jmethodID.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGInterop/SGIC_jmethodID.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.cpp new file mode 100644 index 0000000..fcf3681 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveInterop.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveInteropModule.h" + +IMPLEMENT_MODULE(FSenseGloveInteropModule, SenseGloveInterop) diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInterop.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.cpp b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.cpp new file mode 100644 index 0000000..a804cb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveInteropModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveInteropModule" + +void FSenseGloveInteropModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveInterop module..."); +} + +void FSenseGloveInteropModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveInterop module..."); +} + +void FSenseGloveInteropModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveInterop module has succeeded!"); +} + +void FSenseGloveInteropModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveInterop module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.h new file mode 100644 index 0000000..ceeded4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Private/SenseGloveInteropModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveInterop" + +class FSenseGloveInteropModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGBackendType.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGBackendType.h new file mode 100644 index 0000000..269af35 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGBackendType.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGBackendType +{ + ESGBackendType Type; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGConnectionType.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGConnectionType.h new file mode 100644 index 0000000..cf28c4d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGConnectionType.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGConnectionType +{ + ESGConnectionType Type; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGDeviceType.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGDeviceType.h new file mode 100644 index 0000000..8aaeac8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGDeviceType.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGDeviceType +{ + ESGDeviceType Type; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFinger.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFinger.h new file mode 100644 index 0000000..ecbdfb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFinger.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGFinger +{ + ESGFinger Finger; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerMovement.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerMovement.h new file mode 100644 index 0000000..b2fce65 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerMovement.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGFingerMovement +{ + ESGFingerMovement Movement; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerSolver.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerSolver.h new file mode 100644 index 0000000..d75b32a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGFingerSolver.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGFingerSolver +{ + ESGFingerSolver Solver; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticChannelType.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticChannelType.h new file mode 100644 index 0000000..94c0d83 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticChannelType.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGHapticChannelType +{ + ESGHapticChannelType Type; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticGloveCalibrationState.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticGloveCalibrationState.h new file mode 100644 index 0000000..f0599be --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticGloveCalibrationState.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGHapticGloveCalibrationState +{ + ESGHapticGloveCalibrationState State; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticLocation.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticLocation.h new file mode 100644 index 0000000..7e30d3b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGHapticLocation.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGHapticLocation +{ + ESGHapticLocation Location; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGListFormat.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGListFormat.h new file mode 100644 index 0000000..416cc8a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGListFormat.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGListFormat +{ + ESGListFormat Format; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNormalizationState.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNormalizationState.h new file mode 100644 index 0000000..b2fbdf2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNormalizationState.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNormalizationState +{ + ESGNormalizationState State; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2SensorLocation.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2SensorLocation.h new file mode 100644 index 0000000..8b0b46d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2SensorLocation.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNova2SensorLocation +{ + ESGNova2SensorLocation Location; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2VibroMotor.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2VibroMotor.h new file mode 100644 index 0000000..2ad2fc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNova2VibroMotor.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNova2VibroMotor +{ + ESGNova2VibroMotor Motor; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaCVar.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaCVar.h new file mode 100644 index 0000000..ecfed34 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaCVar.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNovaCVar +{ + ESGNovaCVar Var; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaData.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaData.h new file mode 100644 index 0000000..e405d1c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaData.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNovaData +{ + ESGNovaData Data; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaSensorLocation.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaSensorLocation.h new file mode 100644 index 0000000..528d22e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaSensorLocation.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNovaSensorLocation +{ + ESGNovaSensorLocation Location; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaVibroMotor.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaVibroMotor.h new file mode 100644 index 0000000..f4606cd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGNovaVibroMotor.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGNovaVibroMotor +{ + ESGNovaVibroMotor Motor; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGPositionalTrackingHardware.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGPositionalTrackingHardware.h new file mode 100644 index 0000000..ab9cb14 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGPositionalTrackingHardware.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGPositionalTrackingHardware +{ + ESGPositionalTrackingHardware Hardware; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveCVar.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveCVar.h new file mode 100644 index 0000000..a157a00 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveCVar.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGSenseGloveCVar +{ + ESGSenseGloveCVar Var; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveSVar.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveSVar.h new file mode 100644 index 0000000..29ff063 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveSVar.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGSenseGloveSVar +{ + ESGSenseGloveSVar Var; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveThumperCommand.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveThumperCommand.h new file mode 100644 index 0000000..16aa345 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSenseGloveThumperCommand.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGSenseGloveThumperCommand +{ + ESGSenseGloveThumperCommand Command; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSensorFormat.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSensorFormat.h new file mode 100644 index 0000000..3545160 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGSensorFormat.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGSensorFormat +{ + ESGSensorFormat Format; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbMovement.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbMovement.h new file mode 100644 index 0000000..6936855 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbMovement.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGThumbMovement +{ + ESGThumbMovement Movement; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbSolver.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbSolver.h new file mode 100644 index 0000000..ca2f731 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGThumbSolver.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGThumbSolver +{ + ESGThumbSolver Solver; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGWaveformType.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGWaveformType.h new file mode 100644 index 0000000..270a5f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_ESGWaveformType.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGTypes/SGCoreTypes.h" + +struct FSGIC_ESGWaveformType +{ + ESGWaveformType Type; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FQuat.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FQuat.h new file mode 100644 index 0000000..e92f949 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FQuat.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Quat.h" + +struct FSGIC_FQuat +{ + FQuat Quat; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBasicHandModelImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBasicHandModelImpl.h new file mode 100644 index 0000000..01816b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBasicHandModelImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGBasicHandModelImpl.h" + +struct FSGIC_FSGBasicHandModelImpl +{ + FSGBasicHandModelImpl BasicHandModelImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBetaDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBetaDeviceImpl.h new file mode 100644 index 0000000..3561929 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGBetaDeviceImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGBetaDeviceImpl.h" + +struct FSGIC_FSGBetaDeviceImpl +{ + FSGBetaDeviceImpl BetaDeviceImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGCustomWaveformImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGCustomWaveformImpl.h new file mode 100644 index 0000000..f0a0079 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGCustomWaveformImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGCustomWaveformImpl.h" + +struct FSGIC_FSGCustomWaveformImpl +{ + FSGCustomWaveformImpl CustomWaveformImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceImpl.h new file mode 100644 index 0000000..2cffb94 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGDeviceImpl.h" + +struct FSGIC_FSGDeviceImpl +{ + FSGDeviceImpl SGDeviceImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceModelImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceModelImpl.h new file mode 100644 index 0000000..d451e08 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGDeviceModelImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGDeviceModelImpl.h" + +struct FSGIC_FSGDeviceModelImpl +{ + FSGDeviceModelImpl DeviceModelImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandInterpolatorImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandInterpolatorImpl.h new file mode 100644 index 0000000..e3501b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandInterpolatorImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHandInterpolatorImpl.h" + +struct FSGIC_FSGHandInterpolatorImpl +{ + FSGHandInterpolatorImpl HandInterpolatorImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandPoseImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandPoseImpl.h new file mode 100644 index 0000000..804bd12 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHandPoseImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHandPoseImpl.h" + +struct FSGIC_FSGHandPoseImpl +{ + FSGHandPoseImpl HandPoseImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticChannelInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticChannelInfoImpl.h new file mode 100644 index 0000000..807015f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticChannelInfoImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHapticChannelInfoImpl.h" + +struct FSGIC_FSGHapticChannelInfoImpl +{ + FSGHapticChannelInfoImpl HapticChannelInfoImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticGloveImpl.h new file mode 100644 index 0000000..f129578 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGHapticGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHapticGloveImpl.h" + +struct FSGIC_FSGHapticGloveImpl +{ + FSGHapticGloveImpl HapticGloveImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGInterpolationSetImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGInterpolationSetImpl.h new file mode 100644 index 0000000..981bd90 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGInterpolationSetImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGInterpolationSetImpl.h" + +struct FSGIC_FSGInterpolationSetImpl +{ + FSGInterpolationSetImpl InterpolationSetImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveImpl.h new file mode 100644 index 0000000..39b7d12 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNova2GloveImpl.h" + +struct FSGIC_FSGNova2GloveImpl +{ + FSGNova2GloveImpl Nova2GloveImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h new file mode 100644 index 0000000..5f5695b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNova2GloveSensorDataImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNova2GloveSensorDataImpl.h" + +struct FSGIC_FSGNova2GloveSensorDataImpl +{ + FSGNova2GloveSensorDataImpl Nova2GloveSensorDataImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveImpl.h new file mode 100644 index 0000000..712056c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNovaGloveImpl.h" + +struct FSGIC_FSGNovaGloveImpl +{ + FSGNovaGloveImpl NovaGloveImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveInfoImpl.h new file mode 100644 index 0000000..0a1bad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveInfoImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNovaGloveInfoImpl.h" + +struct FSGIC_FSGNovaGloveInfoImpl +{ + FSGNovaGloveInfoImpl NovaGloveInfoImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h new file mode 100644 index 0000000..fc5f634 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGNovaGloveSensorDataImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNovaGloveSensorDataImpl.h" + +struct FSGIC_FSGNovaGloveSensorDataImpl +{ + FSGNovaGloveSensorDataImpl NovaGloveSensorDataImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveImpl.h new file mode 100644 index 0000000..39bdc53 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveImpl.h" + +struct FSGIC_FSGSenseGloveImpl +{ + FSGSenseGloveImpl SenseGloveImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveInfoImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveInfoImpl.h new file mode 100644 index 0000000..286b07b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveInfoImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveInfoImpl.h" + +struct FSGIC_FSGSenseGloveInfoImpl +{ + FSGSenseGloveInfoImpl SenseGloveInfoImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGlovePoseImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGlovePoseImpl.h new file mode 100644 index 0000000..cd5038f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGlovePoseImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGlovePoseImpl.h" + +struct FSGIC_FSGSenseGlovePoseImpl +{ + FSGSenseGlovePoseImpl SenseGlovePoseImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h new file mode 100644 index 0000000..1a5911a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorDataImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveSensorDataImpl.h" + +struct FSGIC_FSGSenseGloveSensorDataImpl +{ + FSGSenseGloveSensorDataImpl SenseGloveSensorDataImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h new file mode 100644 index 0000000..ccf35c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSenseGloveSensorNormalizerImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveSensorNormalizerImpl.h" + +struct FSGIC_FSGSenseGloveSensorNormalizerImpl +{ + FSGSenseGloveSensorNormalizerImpl SenseGloveSensorNormalizerImpl; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSensorNormalizationImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSensorNormalizationImpl.h new file mode 100644 index 0000000..49d7aaf --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGSensorNormalizationImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSensorNormalizationImpl.h" + +struct FSGIC_FSGSensorNormalizationImpl +{ + FSGSensorNormalizationImpl SensorNormalizationImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGThresholdCommandImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGThresholdCommandImpl.h new file mode 100644 index 0000000..5afaf7b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FSGThresholdCommandImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGThresholdCommandImpl.h" + +struct FSGIC_FSGThresholdCommandImpl +{ + FSGThresholdCommandImpl ThresholdCommandImpl; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FString.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FString.h new file mode 100644 index 0000000..c63a63d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FString.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/UnrealString.h" + +struct FSGIC_FString +{ + FString String; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FVector.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FVector.h new file mode 100644 index 0000000..e3c6675 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_FVector.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Vector.h" + +struct FSGIC_FVector +{ + FVector Vector; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_JNIEnv_Ptr.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_JNIEnv_Ptr.h new file mode 100644 index 0000000..38c95da --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_JNIEnv_Ptr.h @@ -0,0 +1,47 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidJavaEnv.h" + +struct FSGIC_JNIEnv_Ptr +{ + JNIEnv* Ptr; +}; +#endif /* PLATFORM_ANDROID */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FQuat.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FQuat.h new file mode 100644 index 0000000..61ab815 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FQuat.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" + +struct FSGIC_TArray_FQuat +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNova2GloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNova2GloveImpl.h new file mode 100644 index 0000000..5dc57a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNova2GloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNova2GloveImpl.h" + +struct FSGIC_TArray_FSGNova2GloveImpl +{ + TArray Array; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNovaGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNovaGloveImpl.h new file mode 100644 index 0000000..75c50a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGNovaGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNovaGloveImpl.h" + +struct FSGIC_TArray_FSGNovaGloveImpl +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGSenseGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGSenseGloveImpl.h new file mode 100644 index 0000000..d3ddad6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FSGSenseGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveImpl.h" + +struct FSGIC_TArray_FSGSenseGloveImpl +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FString.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FString.h new file mode 100644 index 0000000..d4c28fa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FString.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/UnrealString.h" + +struct FSGIC_TArray_FString +{ + TArray Array; +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FVector.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FVector.h new file mode 100644 index 0000000..91df0b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_FVector.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Vector.h" + +struct FSGIC_TArray_FVector +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FQuat.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FQuat.h new file mode 100644 index 0000000..1129c16 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FQuat.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" + +struct FSGIC_TArray_TArray_FQuat +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h new file mode 100644 index 0000000..1947405 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FSGInterpolationSetImpl.h @@ -0,0 +1,45 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +#include "SGCoreImpl/SGInterpolationSetImpl.h" + +struct FSGIC_TArray_TArray_FSGInterpolationSetImpl +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FVector.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FVector.h new file mode 100644 index 0000000..2166bed --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_FVector.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Vector.h" + +struct FSGIC_TArray_TArray_FVector +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_bool.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_bool.h new file mode 100644 index 0000000..9e1c152 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_bool.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +struct FSGIC_TArray_TArray_bool +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_float.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_float.h new file mode 100644 index 0000000..2a23bbc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TArray_float.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +struct FSGIC_TArray_TArray_float +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h new file mode 100644 index 0000000..8f93308 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGDeviceImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGDeviceImpl.h" + +struct FSGIC_TArray_TSharedRef_FSGDeviceListImpl +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h new file mode 100644 index 0000000..e413c0d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_TSharedRef_FSGHapticGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHapticGloveImpl.h" + +struct FSGIC_TArray_TSharedRef_FSGHapticGloveImpl +{ + TArray> Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_bool.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_bool.h new file mode 100644 index 0000000..0379005 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_bool.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +struct FSGIC_TArray_bool +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_float.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_float.h new file mode 100644 index 0000000..5a35461 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_float.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +struct FSGIC_TArray_float +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_int32.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_int32.h new file mode 100644 index 0000000..5f1723d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TArray_int32.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" + +struct FSGIC_TArray_int32 +{ + TArray Array; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h new file mode 100644 index 0000000..c664669 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGBetaDeviceImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGBetaDeviceImpl.h" + +struct FSGIC_TSharedPtr_FSGBetaDeviceImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h new file mode 100644 index 0000000..1ab7672 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGDeviceImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGDeviceImpl.h" + +struct FSGIC_TSharedPtr_FSGDeviceImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h new file mode 100644 index 0000000..50b1172 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGHapticGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGHapticGloveImpl.h" + +struct FSGIC_TSharedPtr_FSGHapticGloveImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h new file mode 100644 index 0000000..376110c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNova2GloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNova2GloveImpl.h" + +struct FSGIC_TSharedPtr_FSGNova2GloveImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h new file mode 100644 index 0000000..7fdcd68 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGNovaGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGNovaGloveImpl.h" + +struct FSGIC_TSharedPtr_FSGNovaGloveImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h new file mode 100644 index 0000000..b0a201f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSharedPtr_FSGSenseGloveImpl.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGCoreImpl/SGSenseGloveImpl.h" + +struct FSGIC_TSharedPtr_FSGSenseGloveImpl +{ + TSharedPtr Ptr; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.h new file mode 100644 index 0000000..af7e700 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_TSubclassOf_FSGDeviceImpl.h @@ -0,0 +1,44 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Templates/SubclassOf.h" +#include "SGCoreImpl/SGDeviceImpl.h" + +struct FSGIC_TSubclassOf_FSDeviceImpl +{ + TSubclassOf DeviceSubclassOf; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jclass.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jclass.h new file mode 100644 index 0000000..a117fc7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jclass.h @@ -0,0 +1,47 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidJavaEnv.h" + +struct FSGIC_jclass +{ + jclass Class; +}; +#endif /* PLATFORM_ANDROID */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jmethodID.h b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jmethodID.h new file mode 100644 index 0000000..886b7b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/Public/SGInterop/SGIC_jmethodID.h @@ -0,0 +1,47 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" + +#if PLATFORM_ANDROID +#include "Android/AndroidJavaEnv.h" + +struct FSGIC_jmethodID +{ + jmethodID MethodID; +}; +#endif /* PLATFORM_ANDROID */ \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveInterop/SenseGloveInterop.Build.cs b/Plugins/SenseGlove/Source/SenseGloveInterop/SenseGloveInterop.Build.cs new file mode 100644 index 0000000..eb3a08c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveInterop/SenseGloveInterop.Build.cs @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveInterop : ModuleRules +{ + public SenseGloveInterop(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveTypes", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + "SenseGloveCoreImpl", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGBlueprintFunctionLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGBlueprintFunctionLibrary.cpp new file mode 100644 index 0000000..ff66440 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGBlueprintFunctionLibrary.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGKismet/SGBlueprintFunctionLibrary.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGameUserSettingsKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGameUserSettingsKismetLibrary.cpp new file mode 100644 index 0000000..907c4ad --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGameUserSettingsKismetLibrary.cpp @@ -0,0 +1,50 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGKismet/SGGameUserSettingsKismetLibrary.h" + +#include "SenseGlove/GameFramework/SGGameUserSettings.h" + +ESGEngineScalabilitySettings USGGameUserSettingsKismetLibrary::GetEngineScalabilitySettings( + const USGGameUserSettings* GameUserSettings) +{ + return GameUserSettings->GetEngineScalabilitySettings(); +} + +void USGGameUserSettingsKismetLibrary::SetEngineScalabilitySettings(USGGameUserSettings* GameUserSettings, + const ESGEngineScalabilitySettings Scalability) +{ + GameUserSettings->SetEngineScalabilitySettings(Scalability); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp new file mode 100644 index 0000000..6e8e581 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGGrabComponentKismetLibrary.cpp @@ -0,0 +1,149 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A data class containing the minimum required data for a hand's forward + * kinematics. + * Used in both kinematics and calibration. + */ + + +#include "SGKismet/SGGrabComponentKismetLibrary.h" + +#include "SenseGlove/Components/SGGrabComponent.h" + +USGGrabComponent* UGrabComponentKismetLibrary::GetGrabComponent(const AActor* Actor) +{ + return USGGrabComponent::GetGrabComponent(Actor); +} + +bool UGrabComponentKismetLibrary::IsGrabbable(const AActor* Actor) +{ + return USGGrabComponent::IsGrabbable(Actor); +} + +EAttachmentRule UGrabComponentKismetLibrary::GetAttachmentLocationRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetAttachmentLocationRule(); +} + +void UGrabComponentKismetLibrary::SetAttachmentLocationRule(USGGrabComponent* GrabComponent, + const EAttachmentRule InAttachmentLocationRule) +{ + GrabComponent->SetAttachmentLocationRule(InAttachmentLocationRule); +} + +EAttachmentRule UGrabComponentKismetLibrary::GetAttachmentRotationRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetAttachmentRotationRule(); +} + +void UGrabComponentKismetLibrary::SetAttachmentRotationRule(USGGrabComponent* GrabComponent, + const EAttachmentRule InAttachmentRotationRule) +{ + GrabComponent->SetAttachmentRotationRule(InAttachmentRotationRule); +} + +EAttachmentRule UGrabComponentKismetLibrary::GetAttachmentScaleRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetAttachmentScaleRule(); +} + +void UGrabComponentKismetLibrary::SetAttachmentScaleRule(USGGrabComponent* GrabComponent, + const EAttachmentRule InAttachmentScaleRule) +{ + GrabComponent->SetAttachmentScaleRule(InAttachmentScaleRule); +} + +bool UGrabComponentKismetLibrary::GetAttachmentWeldSimulatedBodies(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetAttachmentWeldSimulatedBodies(); +} + +void UGrabComponentKismetLibrary::SetAttachmentWeldSimulatedBodies(USGGrabComponent* GrabComponent, + const bool bInAttachmentWeldSimulatedBodies) +{ + GrabComponent->SetAttachmentWeldSimulatedBodies(bInAttachmentWeldSimulatedBodies); +} + +const FName& UGrabComponentKismetLibrary::GetAttachmentSocketName(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetAttachmentSocketName(); +} + +void UGrabComponentKismetLibrary::SetAttachmentSocketName(USGGrabComponent* GrabComponent, + const FName& InAttachmentSocketName) +{ + GrabComponent->SetAttachmentSocketName(InAttachmentSocketName); +} + +EDetachmentRule UGrabComponentKismetLibrary::GetDetachmentLocationRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetDetachmentLocationRule(); +} + +void UGrabComponentKismetLibrary::SetDetachmentLocationRule(USGGrabComponent* GrabComponent, + const EDetachmentRule InDetachmentLocationRule) +{ + GrabComponent->SetDetachmentLocationRule(InDetachmentLocationRule); +} + +EDetachmentRule UGrabComponentKismetLibrary::GetDetachmentRotationRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetDetachmentRotationRule(); +} + +void UGrabComponentKismetLibrary::SetDetachmentRotationRule(USGGrabComponent* GrabComponent, + const EDetachmentRule InDetachmentRotationRule) +{ + GrabComponent->SetDetachmentRotationRule(InDetachmentRotationRule); +} + +EDetachmentRule UGrabComponentKismetLibrary::GetDetachmentScaleRule(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetDetachmentScaleRule(); +} + +void UGrabComponentKismetLibrary::SetDetachmentScaleRule(USGGrabComponent* GrabComponent, + const EDetachmentRule InDetachmentScaleRule) +{ + GrabComponent->SetDetachmentScaleRule(InDetachmentScaleRule); +} + +bool UGrabComponentKismetLibrary::GetDetachmentInCallModify(const USGGrabComponent* GrabComponent) +{ + return GrabComponent->GetDetachmentInCallModify(); +} + +void UGrabComponentKismetLibrary::SetDetachmentInCallModify(USGGrabComponent* GrabComponent, + const bool bInDetachmentInCallModify) +{ + GrabComponent->SetDetachmentInCallModify(bInDetachmentInCallModify); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp new file mode 100644 index 0000000..7ef9514 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGPawnKismetLibrary.cpp @@ -0,0 +1,261 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGKismet/SGPawnKismetLibrary.h" + +#include "Camera/CameraComponent.h" +#include "Components/SphereComponent.h" +#include "Runtime/Launch/Resources/Version.h" +#include "XRDeviceVisualizationComponent.h" + +#include "SenseGlove/Components/SGVirtualHandComponent.h" +#include "SenseGlove/Components/SGWristTrackerComponent.h" +#include "SenseGlove/GameFramework/SGPawn.h" + +UCameraComponent* UPawnKismetLibrary::GetCamera(const ASGPawn* Pawn) +{ + return Pawn->GetCamera(); +} + +USGWristTrackerComponent* UPawnKismetLibrary::GetWristTrackerLeft(const ASGPawn* Pawn) +{ + return Pawn->GetWristTrackerLeft(); +} + +UXRDeviceVisualizationComponent* UPawnKismetLibrary::GetControllerVisualizerLeft(const ASGPawn* Pawn) +{ + return Pawn->GetControllerVisualizerLeft(); +} + +USGVirtualHandComponent* UPawnKismetLibrary::GetHandLeft(const ASGPawn* Pawn) +{ + return Pawn->GetHandLeft(); +} + +USGVirtualHandComponent* UPawnKismetLibrary::GetRealHandLeft(const ASGPawn* Pawn) +{ + return Pawn->GetHandLeft(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftThumbFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftThumbFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftIndexFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftIndexFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftMiddleFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftMiddleFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftThumbFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftThumbFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftIndexFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftIndexFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftMiddleFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftMiddleFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftRingFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftRingFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetLeftPinkyFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetLeftPinkyFingertipTouchCollider(); +} + +USGWristTrackerComponent* UPawnKismetLibrary::GetWristTrackerRight(const ASGPawn* Pawn) +{ + return Pawn->GetWristTrackerRight(); +} + +UXRDeviceVisualizationComponent* UPawnKismetLibrary::GetControllerVisualizerRight(const ASGPawn* Pawn) +{ + return Pawn->GetControllerVisualizerRight(); +} + +USGVirtualHandComponent* UPawnKismetLibrary::GetHandRight(const ASGPawn* Pawn) +{ + return Pawn->GetHandRight(); +} + +USGVirtualHandComponent* UPawnKismetLibrary::GetRealHandRight(const ASGPawn* Pawn) +{ + return Pawn->GetRealHandRight(); +} + +USphereComponent* UPawnKismetLibrary::GetRightThumbFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightThumbFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightIndexFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightIndexFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightMiddleFingertipGrabCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightMiddleFingertipGrabCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightThumbFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightThumbFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightIndexFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightIndexFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightMiddleFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightMiddleFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightRingFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightRingFingertipTouchCollider(); +} + +USphereComponent* UPawnKismetLibrary::GetRightPinkyFingertipTouchCollider(const ASGPawn* Pawn) +{ + return Pawn->GetRightPinkyFingertipTouchCollider(); +} + +bool UPawnKismetLibrary::CanLeftHandGrab(const ASGPawn* Pawn, const AActor* Actor) +{ + return Pawn->CanLeftHandGrab(Actor); +} + +bool UPawnKismetLibrary::IsLeftHandGrabbing_Actor(const ASGPawn* Pawn, const AActor* Actor) +{ + return Pawn->IsLeftHandGrabbing(Actor); +} + +bool UPawnKismetLibrary::IsLeftHandGrabbing_OutActor(const ASGPawn* Pawn, AActor*& OutActor) +{ + return Pawn->IsLeftHandGrabbing(OutActor); +} + +bool UPawnKismetLibrary::IsLeftHandGrabbing(const ASGPawn* Pawn) +{ + return Pawn->IsLeftHandGrabbing(); +} + +bool UPawnKismetLibrary::CanRightHandGrab(const ASGPawn* Pawn, const AActor* Actor) +{ + return Pawn->CanRightHandGrab(Actor); +} + +bool UPawnKismetLibrary::IsRightHandGrabbing_Actor(const ASGPawn* Pawn, const AActor* Actor) +{ + return Pawn->IsRightHandGrabbing(Actor); +} + +bool UPawnKismetLibrary::IsRightHandGrabbing_OutActor(const ASGPawn* Pawn) +{ + return Pawn->IsRightHandGrabbing(); +} + +bool UPawnKismetLibrary::IsRightHandGrabbing(const ASGPawn* Pawn, AActor*& OutActor) +{ + return Pawn->IsRightHandGrabbing(); +} + +bool UPawnKismetLibrary::CanGrab(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, const AActor* Actor) +{ + return Pawn->CanGrab(Hand, Actor); +} + +bool UPawnKismetLibrary::IsGrabbing_Actor(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, const AActor* Actor) +{ + return Pawn->IsGrabbing(Hand, Actor); +} + +bool UPawnKismetLibrary::IsGrabbing_OutActor(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, + AActor*& OutActor) +{ + return Pawn->IsGrabbing(Hand, OutActor); +} + +bool UPawnKismetLibrary::IsGrabbing(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand) +{ + return Pawn->IsGrabbing(Hand); +} + +void UPawnKismetLibrary::GrabLeft(ASGPawn* Pawn, AActor* Actor) +{ + Pawn->GrabLeft(Actor); +} + +void UPawnKismetLibrary::GrabRight(ASGPawn* Pawn, AActor* Actor) +{ + Pawn->GrabRight(Actor); +} + +void UPawnKismetLibrary::Grab(ASGPawn* Pawn, USGVirtualHandComponent* Hand, AActor* Actor) +{ + Pawn->Grab(Hand, Actor); +} + +void UPawnKismetLibrary::ReleaseLeft(ASGPawn* Pawn) +{ + Pawn->ReleaseLeft(); +} + +void UPawnKismetLibrary::ReleaseRight(ASGPawn* Pawn) +{ + Pawn->ReleaseRight(); +} + +void UPawnKismetLibrary::Release(ASGPawn* Pawn, const USGVirtualHandComponent* Hand) +{ + Pawn->Release(Hand); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp new file mode 100644 index 0000000..622c768 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGTouchComponentKismetLibrary.cpp @@ -0,0 +1,81 @@ + +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * A data class containing the minimum required data for a hand's forward + * kinematics. + * Used in both kinematics and calibration. + */ + + +#include "SGKismet/SGTouchComponentKismetLibrary.h" + +#include "SenseGlove/Components/SGTouchComponent.h" + +USGTouchComponent* UTouchComponentKismetLibrary::GetTouchComponent(const AActor* Actor) +{ + return USGTouchComponent::GetTouchComponent(Actor); +} + +bool UTouchComponentKismetLibrary::IsTouchable(const AActor* Actor) +{ + return USGTouchComponent::IsTouchable(Actor); +} + +int32 UTouchComponentKismetLibrary::GetForceFeedbackLevel(const USGTouchComponent* TouchComponent) +{ + return TouchComponent->GetForceFeedbackLevel(); +} + +void UTouchComponentKismetLibrary::SetForceFeedbackLevel(USGTouchComponent* TouchComponent, const float Level) +{ + TouchComponent->SetForceFeedbackLevel(Level); +} + +float UTouchComponentKismetLibrary::GetVibrotactileLevel(const USGTouchComponent* TouchComponent) +{ + return TouchComponent->GetVibrotactileLevel(); +} + +void UTouchComponentKismetLibrary::SetVibrotactileLevel(USGTouchComponent* TouchComponent, const float Level) +{ + TouchComponent->SetVibrotactileLevel(Level); +} + +float UTouchComponentKismetLibrary::GetVibrotactileDuration(const USGTouchComponent* TouchComponent) +{ + return TouchComponent->GetVibrotactileDuration(); +} + +void UTouchComponentKismetLibrary::SetVibrotactileDuration(USGTouchComponent* TouchComponent, const float Duration) +{ + TouchComponent->SetVibrotactileDuration(Duration); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp new file mode 100644 index 0000000..2ffceb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGVirtualHandComponentKismetLibrary.cpp @@ -0,0 +1,159 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGKismet/SGVirtualHandComponentKismetLibrary.h" + +#include "SenseGlove/Components/SGVirtualHandComponent.h" +#include "SGCore/SGHapticGlove.h" + +const TArray& UVirtualHandComponentKismetLibrary::GetLeftHandBoneNames() +{ + return USGVirtualHandComponent::GetLeftHandBoneNames(); +} + +const TArray& UVirtualHandComponentKismetLibrary::GetRightHandBoneNames() +{ + return USGVirtualHandComponent::GetRightHandBoneNames(); +} + +const FName& UVirtualHandComponentKismetLibrary::GetLeftHandBoneName(const int32 Joint) +{ + return USGVirtualHandComponent::GetLeftHandBoneName(Joint); +} + +const FName& UVirtualHandComponentKismetLibrary::GetRightHandBoneName(const int32 Joint) +{ + return USGVirtualHandComponent::GetRightHandBoneName(Joint); +} + +bool UVirtualHandComponentKismetLibrary::IsLeft(const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->IsLeft(); +} + +bool UVirtualHandComponentKismetLibrary::IsRight(const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->IsRight(); +} + +void UVirtualHandComponentKismetLibrary::SetRight( + USGVirtualHandComponent* VirtualHandComponent, const bool bInRight) +{ + VirtualHandComponent->SetRight(bInRight); +} + +bool UVirtualHandComponentKismetLibrary::OverridesPluginVirtualHandSettings( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->OverridesPluginVirtualHandSettings(); +} + +const FSGVirtualHandSettingsOverrides& UVirtualHandComponentKismetLibrary::GetVirtualHandSettingsOverrides( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetVirtualHandSettingsOverrides(); +} + +void UVirtualHandComponentKismetLibrary::SetVirtualHandSettingsOverrides( + USGVirtualHandComponent* VirtualHandComponent, + const FSGVirtualHandSettingsOverrides& InVirtualHandSettingsOverrides) +{ + VirtualHandComponent->SetVirtualHandSettingsOverrides(InVirtualHandSettingsOverrides); +} + +FSGVirtualHandSettings UVirtualHandComponentKismetLibrary::GetVirtualHandSettings( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetVirtualHandSettings(); +} + +bool UVirtualHandComponentKismetLibrary::IsGloveConnected(const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->IsGloveConnected(); +} + +USGHapticGlove* UVirtualHandComponentKismetLibrary::GetConnectedGlove( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetConnectedGlove(); +} + +bool UVirtualHandComponentKismetLibrary::GetMotionControllerData( + USGVirtualHandComponent* VirtualHandComponent, FXRMotionControllerData& OutMotionControllerData) +{ + return VirtualHandComponent->GetMotionControllerData(OutMotionControllerData); +} + +const TArray& UVirtualHandComponentKismetLibrary::GetHandBoneNames( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetHandBoneNames(); +} + +const FName& UVirtualHandComponentKismetLibrary::GetHandBoneName( + const USGVirtualHandComponent* VirtualHandComponent, const int32 Joint) +{ + return VirtualHandComponent->GetHandBoneName(Joint); +} + +const FTransform& UVirtualHandComponentKismetLibrary::GetHandBoneRefTransform_BN( + const USGVirtualHandComponent* VirtualHandComponent, const FName& BoneName) +{ + return VirtualHandComponent->GetHandBoneRefTransform(BoneName); +} + +const FTransform& UVirtualHandComponentKismetLibrary::GetHandBoneRefTransform_J( + const USGVirtualHandComponent* VirtualHandComponent, const int32 Joint) +{ + return VirtualHandComponent->GetHandBoneRefTransform(Joint); +} + +const FTransform& UVirtualHandComponentKismetLibrary::GetHandRootBoneRefTransform( + const USGVirtualHandComponent* VirtualHandComponent) +{ + return VirtualHandComponent->GetHandRootBoneRefTransform(); +} + +FRotator UVirtualHandComponentKismetLibrary::GetHandBoneRefRotation_BN( + const USGVirtualHandComponent* VirtualHandComponent, const FName& BoneName) +{ + return VirtualHandComponent->GetHandBoneRefRotation(BoneName); +} + +FRotator UVirtualHandComponentKismetLibrary::GetHandBoneRefRotation_J( + const USGVirtualHandComponent* VirtualHandComponent, const int32 Joint) +{ + return VirtualHandComponent->GetHandBoneRefRotation(Joint); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGWristTrackerComponentKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGWristTrackerComponentKismetLibrary.cpp new file mode 100644 index 0000000..0e83ee7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SGKismet/SGWristTrackerComponentKismetLibrary.cpp @@ -0,0 +1,97 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGKismet/SGWristTrackerComponentKismetLibrary.h" + +#include "SenseGlove/Components/SGWristTrackerComponent.h" + +bool UWristTrackerComponentKismetLibrary::IsLeft(const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->IsLeft(); +} + +bool UWristTrackerComponentKismetLibrary::IsRight(const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->IsRight(); +} + +void UWristTrackerComponentKismetLibrary::SetRight( + USGWristTrackerComponent* WristTrackerComponent, const bool bInRight) +{ + WristTrackerComponent->SetRight(bInRight); +} + +bool UWristTrackerComponentKismetLibrary::OverridesPluginWristTrackingSettings( + const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->OverridesPluginWristTrackingSettings(); +} + +const FSGWristTrackingSettingsOverrides& UWristTrackerComponentKismetLibrary::GetWristTrackingSettingsOverrides( + const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->GetWristTrackingSettingsOverrides(); +} + +void UWristTrackerComponentKismetLibrary::SetWristTrackingSettingsOverrides( + USGWristTrackerComponent* WristTrackerComponent, + const FSGWristTrackingSettingsOverrides& InWristTrackingSettingsOverrides) +{ + WristTrackerComponent->SetWristTrackingSettingsOverrides(InWristTrackingSettingsOverrides); +} + +FSGWristTrackingSettings UWristTrackerComponentKismetLibrary::GetWristTrackingSettings( + const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->GetWristTrackingSettings(); +} + +const FVector& UWristTrackerComponentKismetLibrary::GetWristLocation( + const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->GetWristLocation(); +} + +const FRotator& UWristTrackerComponentKismetLibrary::GetWristRotation( + const USGWristTrackerComponent* WristTrackerComponent) +{ + return WristTrackerComponent->GetWristRotation(); +} + +bool UWristTrackerComponentKismetLibrary::GetMotionControllerData( + USGWristTrackerComponent* WristTrackerComponent, FXRMotionControllerData& OutMotionControllerData) +{ + return WristTrackerComponent->GetMotionControllerData(OutMotionControllerData); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.cpp new file mode 100644 index 0000000..0af8b0b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveKismetModule, SenseGloveKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.cpp new file mode 100644 index 0000000..f45f111 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveKismetModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveKismetModule" + +void FSenseGloveKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveKismet module..."); +} + +void FSenseGloveKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveKismet module..."); +} + +void FSenseGloveKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveKismet module has succeeded!"); +} + +void FSenseGloveKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.h new file mode 100644 index 0000000..619d112 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Private/SenseGloveKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveKismet" + +class FSenseGloveKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGBlueprintFunctionLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGBlueprintFunctionLibrary.h new file mode 100644 index 0000000..b6f1dae --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGBlueprintFunctionLibrary.h @@ -0,0 +1,50 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Kismet/BlueprintFunctionLibrary.h" + +#include "SGBlueprintFunctionLibrary.generated.h" + +/** + * This class is a base class for any function libraries exposed to blueprints. + * Methods in subclasses are expected to be static, and no methods should be added to this base class. + */ +UCLASS(Abstract) +class SENSEGLOVEKISMET_API USGBlueprintFunctionLibrary : public UBlueprintFunctionLibrary +{ + GENERATED_BODY() +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGameUserSettingsKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGameUserSettingsKismetLibrary.h new file mode 100644 index 0000000..002b7ee --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGameUserSettingsKismetLibrary.h @@ -0,0 +1,57 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGTypes.h" + +#include "SGGameUserSettingsKismetLibrary.generated.h" + +class USGGameUserSettings; + +UCLASS(meta=(ScriptName = "SenseGloveGameUserSettingsKismetLibrary")) +class SENSEGLOVEKISMET_API USGGameUserSettingsKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Game User Settings") + static ESGEngineScalabilitySettings GetEngineScalabilitySettings(const USGGameUserSettings* GameUserSettings); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Game User Settings") + static void SetEngineScalabilitySettings(UPARAM(ref) USGGameUserSettings* GameUserSettings, + ESGEngineScalabilitySettings Scalability); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h new file mode 100644 index 0000000..55ab9b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGGrabComponentKismetLibrary.h @@ -0,0 +1,119 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGGrabComponentKismetLibrary.generated.h" + +class AActor; +class USGGrabComponent; + +UCLASS(meta=(ScriptName = "SenseGloveGrabComponentKismetLibrary")) +class SENSEGLOVEKISMET_API UGrabComponentKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static USGGrabComponent* GetGrabComponent(const AActor* Actor); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static bool IsGrabbable(const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EAttachmentRule GetAttachmentLocationRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetAttachmentLocationRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EAttachmentRule InAttachmentLocationRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EAttachmentRule GetAttachmentRotationRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetAttachmentRotationRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EAttachmentRule InAttachmentRotationRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EAttachmentRule GetAttachmentScaleRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetAttachmentScaleRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EAttachmentRule InAttachmentScaleRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static bool GetAttachmentWeldSimulatedBodies(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetAttachmentWeldSimulatedBodies(UPARAM(ref) USGGrabComponent* GrabComponent, + bool bInAttachmentWeldSimulatedBodies); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static const FName& GetAttachmentSocketName(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetAttachmentSocketName(UPARAM(ref) USGGrabComponent* GrabComponent, + const FName& InAttachmentSocketName); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EDetachmentRule GetDetachmentLocationRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetDetachmentLocationRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EDetachmentRule InDetachmentLocationRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EDetachmentRule GetDetachmentRotationRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetDetachmentRotationRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EDetachmentRule InDetachmentRotationRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static EDetachmentRule GetDetachmentScaleRule(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetDetachmentScaleRule(UPARAM(ref) USGGrabComponent* GrabComponent, + EDetachmentRule InDetachmentScaleRule); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Grab Component") + static bool GetDetachmentInCallModify(const USGGrabComponent* GrabComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Grab Component") + static void SetDetachmentInCallModify(UPARAM(ref) USGGrabComponent* GrabComponent, + bool bInDetachmentInCallModify); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h new file mode 100644 index 0000000..736106e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGPawnKismetLibrary.h @@ -0,0 +1,191 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/Map.h" +#include "GameFramework/Actor.h" +#include "Math/Rotator.h" +#include "Math/Transform.h" +#include "UObject/NameTypes.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGPawnKismetLibrary.generated.h" + +class UCameraComponent; +class USphereComponent; +class UXRDeviceVisualizationComponent; + +class ASGPawn; +class USGVirtualHandComponent; +class USGWristTrackerComponent; + +UCLASS(meta=(ScriptName = "SenseGlovePawnKismetLibrary")) +class SENSEGLOVEKISMET_API UPawnKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static UCameraComponent* GetCamera(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGWristTrackerComponent* GetWristTrackerLeft(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static UXRDeviceVisualizationComponent* GetControllerVisualizerLeft(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGVirtualHandComponent* GetHandLeft(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGVirtualHandComponent* GetRealHandLeft(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftThumbFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftIndexFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftMiddleFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftThumbFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftIndexFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftMiddleFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftRingFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetLeftPinkyFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGWristTrackerComponent* GetWristTrackerRight(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static UXRDeviceVisualizationComponent* GetControllerVisualizerRight(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGVirtualHandComponent* GetHandRight(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USGVirtualHandComponent* GetRealHandRight(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightThumbFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightIndexFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightMiddleFingertipGrabCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightThumbFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightIndexFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightMiddleFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightRingFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static USphereComponent* GetRightPinkyFingertipTouchCollider(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool CanLeftHandGrab(const ASGPawn* Pawn, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsLeftHandGrabbing_Actor(const ASGPawn* Pawn, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsLeftHandGrabbing_OutActor(const ASGPawn* Pawn, AActor*& OutActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsLeftHandGrabbing(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool CanRightHandGrab(const ASGPawn* Pawn, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsRightHandGrabbing_Actor(const ASGPawn* Pawn, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsRightHandGrabbing_OutActor(const ASGPawn* Pawn); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsRightHandGrabbing(const ASGPawn* Pawn, AActor*& OutActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool CanGrab(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsGrabbing_Actor(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsGrabbing_OutActor(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand, AActor*& OutActor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Game Framework | Pawn") + static bool IsGrabbing(const ASGPawn* Pawn, const USGVirtualHandComponent* Hand); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + static void GrabLeft(UPARAM(ref) ASGPawn* Pawn, AActor* Actor); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + static void GrabRight(UPARAM(ref) ASGPawn* Pawn, AActor* Actor); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + void Grab(UPARAM(ref) ASGPawn* Pawn, USGVirtualHandComponent* Hand, AActor* Actor); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + void ReleaseLeft(UPARAM(ref) ASGPawn* Pawn); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + void ReleaseRight(UPARAM(ref) ASGPawn* Pawn); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Game Framework | Pawn") + static void Release(UPARAM(ref) ASGPawn* Pawn, const USGVirtualHandComponent* Hand); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h new file mode 100644 index 0000000..3a42ca8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGTouchComponentKismetLibrary.h @@ -0,0 +1,74 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGTouchComponentKismetLibrary.generated.h" + +class AActor; +class USGTouchComponent; + +UCLASS(meta=(ScriptName = "SenseGloveTouchComponentKismetLibrary")) +class SENSEGLOVEKISMET_API UTouchComponentKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static USGTouchComponent* GetTouchComponent(const AActor* Actor); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static bool IsTouchable(const AActor* Actor); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Touch Component") + static int32 GetForceFeedbackLevel(const USGTouchComponent* TouchComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static void SetForceFeedbackLevel(UPARAM(ref) USGTouchComponent* TouchComponent, float Level); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Touch Component") + static float GetVibrotactileLevel(const USGTouchComponent* TouchComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static void SetVibrotactileLevel(UPARAM(ref) USGTouchComponent* TouchComponent, float Level); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Touch Component") + static float GetVibrotactileDuration(const USGTouchComponent* TouchComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Touch Component") + static void SetVibrotactileDuration(UPARAM(ref) USGTouchComponent* TouchComponent, float Duration); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h new file mode 100644 index 0000000..6906c19 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGVirtualHandComponentKismetLibrary.h @@ -0,0 +1,138 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/Map.h" +#include "HeadMountedDisplayTypes.h" +#include "Math/Rotator.h" +#include "Math/Transform.h" +#include "UObject/NameTypes.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGSettings/SGVirtualHandSettings.h" +#include "SGSettings/SGVirtualHandSettingsOverrides.h" + +#include "SGVirtualHandComponentKismetLibrary.generated.h" + +class USkeletalMeshComponent; + +class USGHandPose; +class USGHapticGlove; +class USGVirtualHandComponent; + +UCLASS(meta=(ScriptName = "SenseGloveVirtualHandComponentKismetLibrary")) +class SENSEGLOVEKISMET_API UVirtualHandComponentKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static const TArray& GetLeftHandBoneNames(); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static const TArray& GetRightHandBoneNames(); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetLeftHandBoneName(int32 Joint); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetRightHandBoneName(int32 Joint); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static bool IsLeft(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static bool IsRight(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetRight(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, bool bInRight); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static bool OverridesPluginVirtualHandSettings(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FSGVirtualHandSettingsOverrides& GetVirtualHandSettingsOverrides( + const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static void SetVirtualHandSettingsOverrides( + UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + const FSGVirtualHandSettingsOverrides& InVirtualHandSettingsOverrides); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static FSGVirtualHandSettings GetVirtualHandSettings(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static bool IsGloveConnected(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static USGHapticGlove* GetConnectedGlove(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Virtual Hand Component") + static bool GetMotionControllerData(UPARAM(ref) USGVirtualHandComponent* VirtualHandComponent, + FXRMotionControllerData& OutMotionControllerData); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const TArray& GetHandBoneNames(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FName& GetHandBoneName(const USGVirtualHandComponent* VirtualHandComponent, + int32 Joint); + + UFUNCTION(BlueprintPure, DisplayName="Get Hand Bone Ref Transform", + Category="SenseGlove | Components | Virtual Hand Component") + static const FTransform& GetHandBoneRefTransform_BN(const USGVirtualHandComponent* VirtualHandComponent, + const FName& BoneName); + + UFUNCTION(BlueprintPure, DisplayName="Get Hand Bone Ref Transform", + Category="SenseGlove | Components | Virtual Hand Component") + static const FTransform& GetHandBoneRefTransform_J(const USGVirtualHandComponent* VirtualHandComponent, + int32 Joint); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Virtual Hand Component") + static const FTransform& GetHandRootBoneRefTransform(const USGVirtualHandComponent* VirtualHandComponent); + + UFUNCTION(BlueprintPure, DisplayName="Get Hand Bone Ref Rotation", + Category="SenseGlove | Components | Virtual Hand Component") + static FRotator GetHandBoneRefRotation_BN(const USGVirtualHandComponent* VirtualHandComponent, + const FName& BoneName); + + UFUNCTION(BlueprintPure, DisplayName="Get Hand Bone Ref Rotation", + Category="SenseGlove | Components | Virtual Hand Component") + static FRotator GetHandBoneRefRotation_J(const USGVirtualHandComponent* VirtualHandComponent, + int32 Joint); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGWristTrackerComponentKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGWristTrackerComponentKismetLibrary.h new file mode 100644 index 0000000..91b3e82 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/Public/SGKismet/SGWristTrackerComponentKismetLibrary.h @@ -0,0 +1,89 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HeadMountedDisplayTypes.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGSettings/SGWristTrackingSettings.h" +#include "SGSettings/SGWristTrackingSettingsOverrides.h" + +#include "SGWristTrackerComponentKismetLibrary.generated.h" + +class USkeletalMeshComponent; + +class USGWristTrackerComponent; + +UCLASS(meta=(ScriptName = "SenseGloveWristTrackerComponentKismetLibrary")) +class SENSEGLOVEKISMET_API UWristTrackerComponentKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component") + static bool IsLeft(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component") + static bool IsRight(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component") + static void SetRight(UPARAM(ref) USGWristTrackerComponent* WristTrackerComponent, bool bInRight); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component") + static bool OverridesPluginWristTrackingSettings(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component") + static const FSGWristTrackingSettingsOverrides& GetWristTrackingSettingsOverrides( + const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component") + static void SetWristTrackingSettingsOverrides( + UPARAM(ref) USGWristTrackerComponent* WristTrackerComponent, + const FSGWristTrackingSettingsOverrides& InWristTrackingSettingsOverrides); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Components | Wrist Tracker Component") + static FSGWristTrackingSettings GetWristTrackingSettings(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component") + static const FVector& GetWristLocation(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component") + static const FRotator& GetWristRotation(const USGWristTrackerComponent* WristTrackerComponent); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Components | Wrist Tracker Component") + static bool GetMotionControllerData(UPARAM(ref) USGWristTrackerComponent* WristTrackerComponent, + FXRMotionControllerData& OutMotionControllerData); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveKismet/SenseGloveKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveKismet/SenseGloveKismet.Build.cs new file mode 100644 index 0000000..3403366 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveKismet/SenseGloveKismet.Build.cs @@ -0,0 +1,73 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveKismet : ModuleRules +{ + public SenseGloveKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + // NOTE + // UE 5.3+ provides UXRDeviceVisualizationComponent as part of the XRBase plugin. + // UE 5.2 provides UXRDeviceVisualizationComponent as part of the HeadMountDisplay module. +#if UE_5_3_OR_LATER + "XRBase", +#endif + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGlove", + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveSettings", + "SenseGloveTypes", + "SenseGloveUtils", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Private/SGLog/SGLog.cpp b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SGLog/SGLog.cpp new file mode 100644 index 0000000..eb6e452 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SGLog/SGLog.cpp @@ -0,0 +1,244 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGLog/SGLog.h" +#include "Containers/Map.h" +#include "Logging/LogMacros.h" + +DEFINE_LOG_CATEGORY(LogEditor) +DEFINE_LOG_CATEGORY(LogGeneric) + +struct FSGLogCore::FStaticImpl +{ +public: + struct VerbosityMapper + { + FString Tag; + FColor Color; + + VerbosityMapper(const FString& InTag, const FColor& InColor); + }; + +public: + TMap VerbosityMap; + + bool bInitialized; + +public: + FStaticImpl(); +}; + +struct FSGLogCore::FImpl +{ +public: + FSGLogCore::EVerbosity Verbosity; + FSGLogCore::ECategory Category; + FString File; + FString Function; + FString Line; +}; + +FSGLogCore::FStaticImplDeleter FSGLogCore::SPimplDeleter; +std::unique_ptr FSGLogCore::SPimpl = + std::unique_ptr( + new FSGLogCore::FStaticImpl{}, FSGLogCore::SPimplDeleter); + +FSGLogCore::FSGLogCore(const EVerbosity& Verbosity, const ECategory& Category, const std::string& File, + const std::string& Function, const int32 Line) + : Pimpl(std::unique_ptr(new FImpl{}, PimplDeleter)), + bAnyEntries(false) +{ +#if defined ( SENSEGLOVE_LOGGING ) + if (!SPimpl->bInitialized) + { + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Fatal, + FStaticImpl::VerbosityMapper(TEXT("FATAL"), FColor::White)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Error, FStaticImpl::VerbosityMapper(TEXT("ERROR"), FColor::Red)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Warning, + FStaticImpl::VerbosityMapper(TEXT("WARNING"), FColor::Yellow)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Display, + FStaticImpl::VerbosityMapper(TEXT("DISPLAY"), FColor::Green)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Log, FStaticImpl::VerbosityMapper(TEXT("LOG"), FColor::Silver)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::Verbose, + FStaticImpl::VerbosityMapper(TEXT("VERBOSE"), FColor::Purple)); + SPimpl->VerbosityMap.Add(FSGLogCore::EVerbosity::VeryVerbose, + FStaticImpl::VerbosityMapper(TEXT("VERY_VERBOSE"), FColor::Magenta)); + + SPimpl->bInitialized = true; + } + + Pimpl->Verbosity = Verbosity; + Pimpl->Category = Category; + Pimpl->File = FString(StringCast(File.c_str()).Get()); + Pimpl->Function = FString(StringCast(Function.c_str()).Get()); + Pimpl->Line = FString::FromInt(Line); +#endif /* defined ( SENSEGLOVE_LOGGING ) */ +} + +FSGLogCore::~FSGLogCore() +{ +#if defined ( SENSEGLOVE_LOGGING ) + const EVerbosity& Verbosity = Pimpl->Verbosity; + const ECategory& Category = Pimpl->Category; + const FStaticImpl::VerbosityMapper& VerbosityMapper = SPimpl->VerbosityMap[Verbosity]; + const FString& Tag = VerbosityMapper.Tag; + const FColor& Color = VerbosityMapper.Color; + + const FString Message(FString::Printf(TEXT("[%s %s %s %s] %s"), Tag.GetCharArray().GetData(), + Pimpl->File.GetCharArray().GetData(), + Pimpl->Function.GetCharArray().GetData(), + Pimpl->Line.GetCharArray().GetData(), Buffer.GetCharArray().GetData())); + + // Generic + if (Category == ECategory::Generic) + { + switch (Verbosity) + { + case EVerbosity::Display: + { + UE_LOG(LogGeneric, Display, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Error: + { + UE_LOG(LogGeneric, Error, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Fatal: + { + UE_LOG(LogGeneric, Fatal, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Log: + { + UE_LOG(LogGeneric, Log, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Verbose: + { + UE_LOG(LogGeneric, Verbose, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::VeryVerbose: + { + UE_LOG(LogGeneric, VeryVerbose, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Warning: + { + UE_LOG(LogGeneric, Warning, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + } + } + + // Editor + if (Category == ECategory::Editor) + { + switch (Verbosity) + { + case EVerbosity::Display: + { + UE_LOG(LogEditor, Display, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Error: + { + UE_LOG(LogEditor, Error, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Fatal: + { + UE_LOG(LogEditor, Fatal, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Log: + { + UE_LOG(LogEditor, Log, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Verbose: + { + UE_LOG(LogEditor, Verbose, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::VeryVerbose: + { + UE_LOG(LogEditor, VeryVerbose, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + + case EVerbosity::Warning: + { + UE_LOG(LogEditor, Warning, TEXT("%s"), Message.GetCharArray().GetData()); + } + break; + } + } +#endif /* defined ( SENSEGLOVE_LOGGING ) */ +} + +FSGLogCore::FStaticImpl::FStaticImpl() + : bInitialized(false) +{ +} + +FSGLogCore::FStaticImpl::VerbosityMapper::VerbosityMapper(const FString& InTag, + const FColor& InColor) + : Tag(InTag), + Color(InColor) +{ +} + +void FSGLogCore::FStaticImplDeleter::operator()(const FSGLogCore::FStaticImpl* Pointer) const +{ + delete Pointer; +} + +void FSGLogCore::FImplDeleter::operator()(const FSGLogCore::FImpl* Pointer) const +{ + delete Pointer; +} diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.cpp b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.cpp new file mode 100644 index 0000000..06c4af3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveLog.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveLogModule.h" + +IMPLEMENT_MODULE(FSenseGloveLogModule, SenseGloveLog); diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.h b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLog.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.cpp b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.cpp new file mode 100644 index 0000000..efe7041 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveLogModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveLogModule" + +void FSenseGloveLogModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveLog module..."); +} + +void FSenseGloveLogModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveLog module..."); +} + +void FSenseGloveLogModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveLog module has succeeded!"); +} + +void FSenseGloveLogModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveLog module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.h b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.h new file mode 100644 index 0000000..18179fd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Private/SenseGloveLogModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveLog" + +class FSenseGloveLogModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/Public/SGLog/SGLog.h b/Plugins/SenseGlove/Source/SenseGloveLog/Public/SGLog/SGLog.h new file mode 100644 index 0000000..d1725b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/Public/SGLog/SGLog.h @@ -0,0 +1,751 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include +#include +#include + +#include "Containers/StringConv.h" +#include "Containers/UnrealString.h" +#include "GameFramework/Actor.h" +#include "Logging/LogVerbosity.h" +#include "Math/Rotator.h" +#include "Math/Transform.h" +#include "Math/Vector.h" +#include "Templates/UnrealTemplate.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogEditor, All, All); + +DECLARE_LOG_CATEGORY_EXTERN(LogGeneric, All, All); + +template +struct TFSGLogString +{ + T T1; + FString T2; + static_assert(std::is_same::value, "Error: you are missing a template specialization!"); +}; + +template +struct TFSGLogString +{ + T T1; + FString T2; + static_assert(std::is_same::value, "Error: you are missing a template specialization!"); +}; + +template<> +struct TFSGLogString +{ + static void Format(const AActor* Actor, FString& OutString) + { + ensureAlwaysMsgf(Actor, TEXT("FATAL: cannot log a NULL actor object!")); + + OutString = FString::Printf(TEXT("%s"), Actor->GetName().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const AActor* Actor, FString& OutString) + { + ensureAlwaysMsgf(Actor, TEXT("FATAL: cannot log a NULL actor object!")); + + OutString = FString::Printf(TEXT("%s"), Actor->GetName().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const bool Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), (Value ? TEXT("True") : TEXT("False"))); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const bool Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), (Value ? TEXT("True") : TEXT("False"))); + } +}; + +template +struct TFSGLogString +{ + static void Format(const char* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template +struct TFSGLogString +{ + static void Format(const char* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const char* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const char* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +#if ! PLATFORM_ANDROID && PLATFORM_LINUX + +template< std::size_t L> +struct TFSGLogString +{ + static void Format(const char16_t* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template< std::size_t L> +struct TFSGLogString +{ + static void Format(const char16_t* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template <> +struct TFSGLogString +{ + static void Format(const char16_t* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +template <> +struct TFSGLogString +{ + static void Format(const char16_t* Value, FString& OutString) + { + OutString = FString(StringCast(Value).Get()); + } +}; + +#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */ + +template<> +struct TFSGLogString +{ + static void Format(const double Value, FString& OutString) + { + char Buffer[100]; + std::snprintf(Buffer, sizeof(Buffer), "%f", Value); + + std::string String(Buffer); + + OutString = FString(StringCast(String.c_str()).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const double Value, FString& OutString) + { + char Buffer[100]; + std::snprintf(Buffer, sizeof(Buffer), "%f", Value); + + std::string String(Buffer); + + OutString = FString(StringCast(String.c_str()).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const float Value, FString& OutString) + { + OutString = FString::SanitizeFloat(StaticCast(Value), 1); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const float Value, FString& OutString) + { + OutString = FString::SanitizeFloat(StaticCast(Value), 1); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FName& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FName& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FQuat& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FQuat& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FRotator& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FRotator& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FString& Value, FString& OutString) + { + OutString = Value; + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FString& Value, FString& OutString) + { + OutString = Value; + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FTransform& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FTransform& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FVector& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const FVector& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.ToString().GetCharArray().GetData()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int8 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int8 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int16 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int16 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int32 Value, FString& OutString) + { + OutString = FString::FromInt(Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int32 Value, FString& OutString) + { + OutString = FString::FromInt(Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int64 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int64 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const long double Value, FString& OutString) + { + char Buffer[100]; + std::snprintf(Buffer, sizeof(Buffer), "%Lf", Value); + + std::string String(Buffer); + + OutString = FString(StringCast(String.c_str()).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const long double Value, FString& OutString) + { + char Buffer[100]; + std::snprintf(Buffer, sizeof(Buffer), "%Lf", Value); + + std::string String(Buffer); + + OutString = FString(StringCast(String.c_str()).Get()); + } +}; + +#if ! PLATFORM_ANDROID && PLATFORM_LINUX +template<> +struct TFSGLogString +{ + static void Format(const std::size_t Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; +#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */ + +#if ! PLATFORM_ANDROID && PLATFORM_LINUX +template <> +struct TFSGLogString +{ + static void Format(const std::size_t Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; +#endif /* ! PLATFORM_ANDROID && PLATFORM_LINUX */ + +template<> +struct TFSGLogString +{ + static void Format(const int8 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int8 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int16 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int16 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int32 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int32 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int64 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const int64 Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%d"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const std::string& Value, FString& OutString) + { + OutString = FString(StringCast(Value.c_str()).Get()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const std::string& Value, FString& OutString) + { + OutString = FString(StringCast(Value.c_str()).Get()); + } +}; + +template +struct TFSGLogString +{ + static void Format(const wchar_t* Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value); + } +}; + +template +struct TFSGLogString +{ + static void Format(const wchar_t* Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const wchar_t* Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const wchar_t* Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const std::wstring& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.c_str()); + } +}; + +template<> +struct TFSGLogString +{ + static void Format(const std::wstring& Value, FString& OutString) + { + OutString = FString::Printf(TEXT("%s"), Value.c_str()); + } +}; + +class SENSEGLOVELOG_API FSGLogCore +{ +public: + enum class EVerbosity : uint8 + { + /** Always prints s fatal error to console (and log file) and crashes (even if logging is disabled) */ + Fatal, + + /** + * Prints an error to console (and log file). + * Commandlets and the editor collect and report errors. Error messages result in commandlet failure. + */ + Error, + + /** + * Prints a warning to console (and log file). + * Commandlets and the editor collect and report warnings. Warnings can be treated as an error. + */ + Warning, + + /** Prints a message to console (and log file) */ + Display, + + /** Prints a message to a log file (does not print to console) */ + Log, + + /** + * Prints a verbose message to a log file (if Verbose logging is enabled for the given category, + * usually used for detailed logging) + */ + Verbose, + + /** + * Prints a verbose message to a log file (if VeryVerbose logging is enabled, + * usually used for detailed logging that would otherwise spam output) + */ + VeryVerbose, + }; + + enum class ECategory + { + Editor, + Generic, + }; + +private: + struct FStaticImpl; + + struct FStaticImplDeleter + { + void operator()(const FStaticImpl* Pointer) const; + }; + + static std::unique_ptr SPimpl; + static FStaticImplDeleter SPimplDeleter; + + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* Pointer) const; + }; + + std::unique_ptr Pimpl; + FImplDeleter PimplDeleter; + +private: + FString Buffer; + bool bAnyEntries; + +public: + FSGLogCore(const EVerbosity& Verbosity, const ECategory& Category, const std::string& File, + const std::string& Function, const int32 Line); + virtual ~FSGLogCore(); + +public: + template + FSGLogCore& operator,(const T& Argument) + { + if (bAnyEntries) + { + Buffer += FString(TEXT(" • ")); + } + + FString FormattedArgument; + TFSGLogString::Format(Argument, FormattedArgument); + Buffer += FormattedArgument; + bAnyEntries = true; + + return *this; + } +}; + +/* Generic */ + +#define SGLOG_FATAL( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Fatal, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_ERROR( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Error, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_WARNING( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Warning, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_DISPLAY( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Display, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_LOG( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Log, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_VERBOSE( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Verbose, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_VERY_VERBOSE( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::VeryVerbose, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Log, FSGLogCore::ECategory::Generic, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +/* Editor */ + +#define SGLOG_EDITOR_FATAL( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Fatal, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_ERROR( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Error, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_WARNING( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Warning, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_DISPLAY( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Display, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_LOG( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Log, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_VERBOSE( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Verbose, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR_VERY_VERBOSE( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::VeryVerbose, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; + +#define SGLOG_EDITOR( ... ) \ + (FSGLogCore(FSGLogCore::EVerbosity::Log, FSGLogCore::ECategory::Editor, __FILE__, __FUNCTION__, __LINE__)), __VA_ARGS__; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveLog/SenseGloveLog.Build.cs b/Plugins/SenseGlove/Source/SenseGloveLog/SenseGloveLog.Build.cs new file mode 100644 index 0000000..9873839 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveLog/SenseGloveLog.Build.cs @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveLog : ModuleRules +{ + public SenseGloveLog(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + if (Target.Configuration != UnrealTargetConfiguration.Shipping) + { + PublicDefinitions.Add("SENSEGLOVE_LOGGING"); + } + } +} diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugCubeSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugCubeSettings.cpp new file mode 100644 index 0000000..fd86ccc --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugCubeSettings.cpp @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGDebugCubeSettings.h" + +FSGDebugCubeSettings::FSGDebugCubeSettings() + : FSGDebugCubeSettings{ + FVector{1.0f, 1.0f, 1.0f}, + FColor{255, 0, 0, 255}, + false, + 1.1f, + 0, + 1.0f, + } +{ +} + +FSGDebugCubeSettings::FSGDebugCubeSettings( + const FVector& InExtent, + const FColor& InColor, + const bool bInPersistentLines, + const float InLifeTimeModifier, + const uint8 InDepthPriority, + const float InThickness) + : Extent(InExtent), + Color(InColor), + bPersistentLines(bInPersistentLines), + LifeTimeModifier(InLifeTimeModifier), + DepthPriority(InDepthPriority), + Thickness(InThickness) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugGizmoSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugGizmoSettings.cpp new file mode 100644 index 0000000..9555d56 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGDebugGizmoSettings.cpp @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGDebugGizmoSettings.h" + +FSGDebugGizmoSettings::FSGDebugGizmoSettings() + : FSGDebugGizmoSettings{ + 1.0f, + FColor{255, 0, 0, 255}, + FColor{0, 255, 0, 255}, + FColor{0, 0, 255, 255}, + false, + 1.1f, + 0, + 1.0f, + } +{ +} + +FSGDebugGizmoSettings::FSGDebugGizmoSettings( + const float InLength, + const FColor& InXAxisColor, + const FColor& InYAxisColor, + const FColor& InZAxisColor, + const bool bInPersistentLines, + const float InLifeTimeModifier, + const uint8 InDepthPriority, + const float InThickness) + : Length(InLength), + XAxisColor{InXAxisColor}, + YAxisColor{InYAxisColor}, + ZAxisColor{InZAxisColor}, + bPersistentLines(bInPersistentLines), + LifeTimeModifier(InLifeTimeModifier), + DepthPriority(InDepthPriority), + Thickness(InThickness) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGameUserSettingsSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGameUserSettingsSettings.cpp new file mode 100644 index 0000000..2429c20 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGameUserSettingsSettings.cpp @@ -0,0 +1,47 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGGameUserSettingsSettings.h" + +FSGGameUserSettingsSettings::FSGGameUserSettingsSettings() + : HardwareBenchmarkingSettings{FSGHardwareBenchmarkingSettings{}} +{ +} + +FSGGameUserSettingsSettings::FSGGameUserSettingsSettings( + const FSGHardwareBenchmarkingSettings& InHardwareBenchmarkingSettings) + : HardwareBenchmarkingSettings{InHardwareBenchmarkingSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGloveTrackingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGloveTrackingSettings.cpp new file mode 100644 index 0000000..9a90247 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGGloveTrackingSettings.cpp @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGGloveTrackingSettings.h" + +FSGGloveTrackingSettings::FSGGloveTrackingSettings() + : FSGGloveTrackingSettings{ + 1000.0f / 60.0f + } +{ +} + +FSGGloveTrackingSettings::FSGGloveTrackingSettings( + const float InGloveConnectivityCheckInterval) + : GloveConnectivityCheckInterval(InGloveConnectivityCheckInterval) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHMDTrackingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHMDTrackingSettings.cpp new file mode 100644 index 0000000..58a8c98 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHMDTrackingSettings.cpp @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGHMDTrackingSettings.h" + +FSGHMDTrackingSettings::FSGHMDTrackingSettings() + : FSGHMDTrackingSettings{ + ESGViveHMDDetectionPriority::HtcViveFocus3First + } +{ +} + +FSGHMDTrackingSettings::FSGHMDTrackingSettings( + const ESGViveHMDDetectionPriority InViveHmdDetectionPriority) + : ViveHMDDetectionPriority(InViveHmdDetectionPriority) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHandTrackingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHandTrackingSettings.cpp new file mode 100644 index 0000000..a651201 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHandTrackingSettings.cpp @@ -0,0 +1,52 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGHandTrackingSettings.h" + +FSGHandTrackingSettings::FSGHandTrackingSettings() + : FSGHandTrackingSettings{ + false, + true + } +{ +} + +FSGHandTrackingSettings::FSGHandTrackingSettings( + const bool bInUseMoreSpecificMotionSourceNames, + const bool bInSupportLegacyControllerMotionSources) + : bUseMoreSpecificMotionSourceNames(bInUseMoreSpecificMotionSourceNames), + bSupportLegacyControllerMotionSources(bInSupportLegacyControllerMotionSources) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHardwareBenchmarkingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHardwareBenchmarkingSettings.cpp new file mode 100644 index 0000000..e7405db --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGHardwareBenchmarkingSettings.cpp @@ -0,0 +1,55 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGHardwareBenchmarkingSettings.h" + +FSGHardwareBenchmarkingSettings::FSGHardwareBenchmarkingSettings() + : FSGHardwareBenchmarkingSettings{ + 10.0f, + 1.0f, + 1.0f + } +{ +} + +FSGHardwareBenchmarkingSettings::FSGHardwareBenchmarkingSettings( + const float InWorkScale, + const float InCPUMultiplier, + const float InGPUMultiplier) + : WorkScale(InWorkScale), + CPUMultiplier(InCPUMultiplier), + GPUMultiplier(InGPUMultiplier) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGInitializationSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGInitializationSettings.cpp new file mode 100644 index 0000000..a70a399 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGInitializationSettings.cpp @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGInitializationSettings.h" + +FSGInitializationSettings::FSGInitializationSettings() + : FSGInitializationSettings{ + false + } +{ +} + +FSGInitializationSettings::FSGInitializationSettings( + const bool bInValidateIfDefaultClassesAreSGCompliant) + : bValidateIfDefaultClassesAreSGCompliant(bInValidateIfDefaultClassesAreSGCompliant) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGSettings.cpp new file mode 100644 index 0000000..a1b43f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGSettings.cpp @@ -0,0 +1,125 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGSettings.h" + +#include "Engine/Engine.h" +#include "UObject/Object.h" +#include "UObject/Package.h" +#include "UObject/UObjectGlobals.h" + +#include "SGLog/SGLog.h" + +struct USGSettings::FImpl +{ + /************************ + * Owner object + ************************/ + + USGSettings* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGSettings* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + +USGSettings* USGSettings::GetInstance() +{ + /// HACK + // Allow the game module to use the settings system in situations when GEngine is not initialized, yet! + // e.g. from SGPawn's CDO. + if (!GEngine) + { + USGSettings* StartupInstance{ + NewObject(GetTransientPackage(), FName(TEXT("SGSettings"))) + }; + return StartupInstance; + } + + USGSettings* Instance{GEngine->GetEngineSubsystem()}; + return Instance; +} + +USGSettings::USGSettings() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +bool USGSettings::ShouldCreateSubsystem(UObject* Outer) const +{ + return true; +} + +void USGSettings::Initialize(FSubsystemCollectionBase& Collection) +{ + SGLOG("Initializing the SenseGlove settings singleton with the engine lifetime..."); + + Super::Initialize(Collection); + + SGLOG("The SenseGlove settings singleton has been successfully initialized with the engine lifetime!"); +} + +void USGSettings::Deinitialize() +{ + SGLOG("De-initializing the SenseGlove settings singleton due to the engine lifetime expiration..."); + + Super::Deinitialize(); + + (void) Pimpl.Release(); + + SGLOG("The SenseGlove settings singleton has been successfully de-initialized!"); +} + +USGSettings::FImpl::FImpl(USGSettings* InOwner) + : Owner(InOwner) +{ +} + +USGSettings::FImpl::~FImpl() = default; + +void USGSettings::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp new file mode 100644 index 0000000..2a14945 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGTrackingSettings.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGTrackingSettings.h" + +FSGTrackingSettings::FSGTrackingSettings() + : FSGTrackingSettings{ + false, + FSGGloveTrackingSettings{}, + FSGHandTrackingSettings{}, + FSGHMDTrackingSettings{}, + FSGWristTrackingSettings{} + } +{ +} + +FSGTrackingSettings::FSGTrackingSettings( + const bool bInFallbackToHandTrackingIfNoGloveDetected, + const FSGGloveTrackingSettings& InGloveTrackingSettings, + const FSGHandTrackingSettings& InHandTrackingSettings, + const FSGHMDTrackingSettings& InHmdTrackingSettings, + const FSGWristTrackingSettings& InWristTrackingSettings) + : bFallbackToHandTrackingIfNoGloveDetected(bInFallbackToHandTrackingIfNoGloveDetected), + GloveTrackingSettings(InGloveTrackingSettings), + HandTrackingSettings(InHandTrackingSettings), + HMDTrackingSettings(InHmdTrackingSettings), + WristTrackingSettings(InWristTrackingSettings) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandAnimationSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandAnimationSettings.cpp new file mode 100644 index 0000000..99bb8e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandAnimationSettings.cpp @@ -0,0 +1,52 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandAnimationSettings.h" + +FSGVirtualHandAnimationSettings::FSGVirtualHandAnimationSettings() + : FSGVirtualHandAnimationSettings{ + FRotator{0.0f, 90.0f, 90.0f}, + true + } +{ +} + +FSGVirtualHandAnimationSettings::FSGVirtualHandAnimationSettings( + const FRotator& InAnimationBoneRotationCorrectionOffset, + const bool bInShouldAnimationApplyBoneLocation) + : AnimationBoneRotationCorrectionOffset{InAnimationBoneRotationCorrectionOffset}, + bShouldAnimationApplyBoneLocation(bInShouldAnimationApplyBoneLocation) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandDebuggingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandDebuggingSettings.cpp new file mode 100644 index 0000000..947fc39 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandDebuggingSettings.cpp @@ -0,0 +1,74 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandDebuggingSettings.h" + +FSGVirtualHandDebuggingSettings::FSGVirtualHandDebuggingSettings() + : FSGVirtualHandDebuggingSettings{ + false, + ESGDebugVirtualHandDrawingMode::None, + FSGDebugCubeSettings{ + FVector{0.5f, 0.5f, 0.5f}, + FColor{255, 0, 0, 255}, + false, + 1.1f, + 0, + 0.2f, + }, + FSGDebugGizmoSettings{ + 1.0f, + FColor{255, 0, 0, 255}, + FColor{0, 255, 0, 255}, + FColor{0, 0, 255, 255}, + false, + 1.1f, + 0, + 0.25f, + }, + } +{ +} + +FSGVirtualHandDebuggingSettings::FSGVirtualHandDebuggingSettings( + const bool bInDrawDebugVirtualHand, + const ESGDebugVirtualHandDrawingMode InDrawingMode, + const FSGDebugCubeSettings& InDebugCubicHandSettings, + const FSGDebugGizmoSettings& InDebugGizmoHandSettings) + : bDrawDebugVirtualHand(bInDrawDebugVirtualHand), + DrawingMode(InDrawingMode), + DebugCubicHandSettings{InDebugCubicHandSettings}, + DebugGizmoHandSettings{InDebugGizmoHandSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandGrabSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandGrabSettings.cpp new file mode 100644 index 0000000..6b60c5f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandGrabSettings.cpp @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandGrabSettings.h" + +FSGVirtualHandGrabSettings::FSGVirtualHandGrabSettings() + : FSGVirtualHandGrabSettings{ + FName{TEXT("GrabAttachPoint")}, + FTransform{FQuat::Identity, FVector{0.0f, 5.0f, -6.61557f}}, + FVector{0.04f, 0.04f, 0.04f}, + FName{TEXT("GrabThumbCollider")}, + FName{TEXT("GrabIndexCollider")}, + FName{TEXT("GrabMiddleCollider")} + } +{ +} + +FSGVirtualHandGrabSettings::FSGVirtualHandGrabSettings( + const FName& InGrabAttachPointSocketName, + const FTransform& InGrabAttachPointSocketTransform, + const FVector& InDefaultColliderSize, + const FName& InThumbColliderSocketName, + const FName& InIndexColliderSocketName, + const FName& InMiddleColliderSocketName) + : GrabAttachPointSocketName{InGrabAttachPointSocketName}, + GrabAttachPointSocketTransform{InGrabAttachPointSocketTransform}, + DefaultColliderSize{InDefaultColliderSize}, + ThumbColliderSocketName{InThumbColliderSocketName}, + IndexColliderSocketName{InIndexColliderSocketName}, + MiddleColliderSocketName{InMiddleColliderSocketName} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandHapticsSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandHapticsSettings.cpp new file mode 100644 index 0000000..db1ff24 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandHapticsSettings.cpp @@ -0,0 +1,49 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandHapticsSettings.h" + +FSGVirtualHandHapticsSettings::FSGVirtualHandHapticsSettings() + : FSGVirtualHandHapticsSettings{ + true + } +{ +} + +FSGVirtualHandHapticsSettings::FSGVirtualHandHapticsSettings( + bool bInAutoStopAllHapticsOnEndPlay) + : bAutoStopAllHapticsOnEndPlay(bInAutoStopAllHapticsOnEndPlay) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandMeshSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandMeshSettings.cpp new file mode 100644 index 0000000..ba1df99 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandMeshSettings.cpp @@ -0,0 +1,430 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandMeshSettings.h" + +#include "UObject/UnrealNames.h" + +#include "Engine/SkeletalMesh.h" + +FSGVirtualHandMeshSettings::FSGVirtualHandMeshSettings() + : FSGVirtualHandMeshSettings{ + nullptr, + nullptr, + FSGVirtualHandPhalangesLengthSettings{}, + FRotator{0.0f, -90.0f, 0.0f} + } +{ +} + +FSGVirtualHandMeshSettings::FSGVirtualHandMeshSettings( + const TSoftObjectPtr& InLeftHandReferenceMesh, + const TSoftObjectPtr& InRightHandReferenceMesh, + const FSGVirtualHandPhalangesLengthSettings& InDistalPhalangesLengthSettings, + const FRotator& InRootBoneRotationCorrection) + : LeftHandReferenceMesh{InLeftHandReferenceMesh}, + RightHandReferenceMesh{InRightHandReferenceMesh}, + DistalPhalangesLengthSettings{InDistalPhalangesLengthSettings}, + RootBoneRotationCorrection{InRootBoneRotationCorrection}, + LeftHandDefaultReferenceBoneTransforms{ + TPair{ + FName{TEXT("hand_l")}, + FTransform{ + FRotator{0.0f, -180.0f, 90.0f}, + FVector{0.0f, 0.0f, 0.0f} + } + }, + TPair{ + FName{TEXT("palm_l")}, + FTransform{ + FRotator{0.0f, 0.0f, 0.0f}, + FVector{0.0f, 0.0f, -6.61557f} + } + }, + TPair{ + FName{TEXT("thumb_01_l")}, + FTransform{ + FRotator{30.400068f, 75.42522f, 33.588919f}, + FVector{2.581536f, 1.356605f, -1.992447f} + } + }, + TPair{ + FName{TEXT("thumb_02_l")}, + FTransform{ + FRotator{-0.379136f, 4.00635f, -23.318826f}, + FVector{0.0f, 0.0f, -4.378f} + } + }, + TPair{ + FName{TEXT("thumb_03_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -10.0f}, + FVector{0.0f, 0.0f, -3.086f} + } + }, + TPair{ + FName{TEXT("index_metacarpal_l")}, + FTransform{ + FRotator{7.277920f, 3.392215f, 1.032481f}, + FVector{2.379324f, -0.384681f, -3.444506f} + } + }, + TPair{ + FName{TEXT("index_01_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -23.373f}, + FVector{-0.240876f, 0.043182f, -5.877098f} + } + }, + TPair{ + FName{TEXT("index_02_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -14.892568f}, + FVector{0.0f, 0.0f, -4.08f} + } + }, + TPair{ + FName{TEXT("index_03_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -12.516401f}, + FVector{0.0f, 0.0f, -2.595f} + } + }, + TPair{ + FName{TEXT("middle_metacarpal_l")}, + FTransform{ + FRotator{0.042392f, -4.274287f, 2.321687f}, + FVector{0.182864f, -0.753571f, -3.375834f} + } + }, + TPair{ + FName{TEXT("middle_01_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -31.572682f}, + FVector{0.0f, 0.0f, -6.098209f} + } + }, + TPair{ + FName{TEXT("middle_02_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -20.76921f}, + FVector{0.0f, 0.0f, -5.169f} + } + }, + TPair{ + FName{TEXT("middle_03_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -10.0f}, + FVector{0.0f, 0.0f, -2.474f} + } + }, + TPair{ + FName{TEXT("ring_metacarpal_l")}, + FTransform{ + FRotator{-11.109678f, -13.886395f, 4.333313f}, + FVector{-1.091757f, -0.542517f, -3.374304f} + } + }, + TPair{ + FName{TEXT("ring_01_l")}, + FTransform{ + FRotator{3.034822f, 5.633827f, -29.271656f}, + FVector{0.020689f, -0.041625f, -5.645517f} + } + }, + TPair{ + FName{TEXT("ring_02_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -18.964f}, + FVector{0.0f, 0.0f, -4.977f} + } + }, + TPair{ + FName{TEXT("ring_03_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -9.167999f}, + FVector{0.0f, 0.0f, -2.265f} + } + }, + TPair{ + FName{TEXT("pinky_metacarpal_l")}, + FTransform{ + FRotator{-22.65256f, -25.358337f, -1.818999f}, + FVector{-2.391111f, -0.305917f, -3.314378f} + } + }, + TPair{ + FName{TEXT("pinky_01_l")}, + FTransform{ + FRotator{3.247850f, 9.999765f, -14.49391f}, + FVector{0.19884f, -0.14312f, -4.957568f} + } + }, + TPair{ + FName{TEXT("pinky_02_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -21.286999f}, + FVector{0.0f, 0.0f, -3.816f} + } + }, + TPair{ + FName{TEXT("pinky_03_l")}, + FTransform{ + FRotator{0.0f, 0.0f, -4.917f}, + FVector{0.0f, 0.0f, -2.04f} + } + }, + }, + RightHandDefaultReferenceBoneTransforms{ + TPair{ + FName{TEXT("hand_r")}, + FTransform{ + FRotator{0.0f, -180.0f, 90.0f}, + FVector{0.0f, 0.0f, 0.0f} + } + }, + TPair{ + FName{TEXT("palm_r")}, + FTransform{ + FRotator{0.0f, 0.0f, 0.0f}, + FVector{0.000052f, -0.000629f, -6.615405f} + } + }, + TPair{ + FName{TEXT("thumb_01_r")}, + FTransform{ + FRotator{-30.400068f, -75.42522f, 33.588919f}, + FVector{-2.581326f, 1.356657f, -1.992833f} + } + }, + TPair{ + FName{TEXT("thumb_02_r")}, + FTransform{ + FRotator{0.379136f, -4.00635f, -23.318826f}, + FVector{0.000136f, -0.000427f, -4.377825f} + } + }, + TPair{ + FName{TEXT("thumb_03_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -10.0f}, + FVector{-0.000046f, 0.000015f, -3.085952f} + } + }, + TPair{ + FName{TEXT("index_metacarpal_r")}, + FTransform{ + FRotator{-7.277920f, -3.392215f, 1.032481f}, + FVector{-2.379309f, -0.385167f, -3.444514f} + } + }, + TPair{ + FName{TEXT("index_01_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -23.373f}, + FVector{0.240952f, 0.043412f, -5.877205f} + } + }, + TPair{ + FName{TEXT("index_02_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -14.892568f}, + FVector{-0.000032f, -0.000005f, -4.079933f} + } + }, + TPair{ + FName{TEXT("index_03_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -12.516401f}, + FVector{0.000004f, -0.00004f, -2.595076f} + } + }, + TPair{ + FName{TEXT("middle_metacarpal_r")}, + FTransform{ + FRotator{-0.042392f, 4.274287f, 2.321687f}, + FVector{-0.182806f, -0.754004f, -3.3758f} + } + }, + TPair{ + FName{TEXT("middle_01_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -31.572682f}, + FVector{-0.000001f, 0.000124f, -6.098366f} + } + }, + TPair{ + FName{TEXT("middle_02_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -20.76921f}, + FVector{0.000037f, 0.000077f, -5.168992f} + } + }, + TPair{ + FName{TEXT("middle_03_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -10.0f}, + FVector{-0.000034f, -0.000046f, -2.474047f} + } + }, + TPair{ + FName{TEXT("ring_metacarpal_r")}, + FTransform{ + FRotator{11.109678f, 13.886395f, 4.333313f}, + FVector{1.091782f, -0.542992f, -3.374208f} + } + }, + TPair{ + FName{TEXT("ring_01_r")}, + FTransform{ + FRotator{-3.034822f, -5.633827f, -29.271656f}, + FVector{-0.020675f, -0.041443f, -5.645712f} + } + }, + TPair{ + FName{TEXT("ring_02_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -18.964f}, + FVector{0.000024f, 0.000021f, -4.977067f} + } + }, + TPair{ + FName{TEXT("ring_03_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -9.167999f}, + FVector{0.000011f, -0.00005f, -2.264975f} + } + }, + TPair{ + FName{TEXT("pinky_metacarpal_r")}, + FTransform{ + FRotator{22.65256f, 25.358337f, -1.818999f}, + FVector{2.391287f, -0.305935f, -3.314677f} + } + }, + TPair{ + FName{TEXT("pinky_01_r")}, + FTransform{ + FRotator{-3.24785f, -9.999765f, -14.49391f}, + FVector{-0.19892f, -0.143261f, -4.957301f} + } + }, + TPair{ + FName{TEXT("pinky_02_r")}, + FTransform{ + FRotator{0.0f, 0.0f, -21.286999f}, + FVector{-0.000033f, -0.00003f, -3.816036f} + } + }, + TPair{ + FName{TEXT("pinky_03_r")}, + FTransform{ + FRotator{0.0f, -0.000002f, -4.917f}, + FVector{0.000031f, 0.000018f, -2.04f} + } + }, + }, + LeftHandBoneNames + { + FName{TEXT("palm_l")},// Palm + FName{TEXT("hand_l")},// Wrist + FName{TEXT("thumb_01_l")},// ThumbMetacarpal + FName{TEXT("thumb_02_l")},// ThumbProximal + FName{TEXT("thumb_03_l")},// ThumbDistal + NAME_None,// ThumbTip + FName{TEXT("index_metacarpal_l")},// IndexMetacarpal + FName{TEXT("index_01_l")},// IndexProximal + FName{TEXT("index_02_l")},// IndexIntermediate + FName{TEXT("index_03_l")},// IndexDistal + NAME_None,// IndexTip + FName{TEXT("middle_metacarpal_l")},// MiddleMetacarpal + FName{TEXT("middle_01_l")},// MiddleProximal + FName{TEXT("middle_02_l")},// MiddleIntermediate + FName{TEXT("middle_03_l")},// MiddleDistal + NAME_None,// MiddleTip + FName{TEXT("ring_metacarpal_l")},// RingMetacarpal + FName{TEXT("ring_01_l")},// RingProximal + FName{TEXT("ring_02_l")},// RingIntermediate + FName{TEXT("ring_03_l")},// RingDistal + NAME_None,// RingTip + FName{TEXT("pinky_metacarpal_l")},// LittleMetacarpal + FName{TEXT("pinky_01_l")},// LittleProximal + FName{TEXT("pinky_02_l")},// LittleIntermediate + FName{TEXT("pinky_03_l")},// LittleDistal + NAME_None,// LittleTip + }, + RightHandBoneNames + { + FName{TEXT("palm_r")},// Palm + FName{TEXT("hand_r")},// Wrist + FName{TEXT("thumb_01_r")},// ThumbMetacarpal + FName{TEXT("thumb_02_r")},// ThumbProximal + FName{TEXT("thumb_03_r")},// ThumbDistal + NAME_None,// ThumbTip + FName{TEXT("index_metacarpal_r")},// IndexMetacarpal + FName{TEXT("index_01_r")},// IndexProximal + FName{TEXT("index_02_r")},// IndexIntermediate + FName{TEXT("index_03_r")},// IndexDistal + NAME_None,// IndexTip + FName{TEXT("middle_metacarpal_r")},// MiddleMetacarpal + FName{TEXT("middle_01_r")},// MiddleProximal + FName{TEXT("middle_02_r")},// MiddleIntermediate + FName{TEXT("middle_03_r")},// MiddleDistal + NAME_None,// MiddleTip + FName{TEXT("ring_metacarpal_r")},// RingMetacarpal + FName{TEXT("ring_01_r")},// RingProximal + FName{TEXT("ring_02_r")},// RingIntermediate + FName{TEXT("ring_03_r")},// RingDistal + NAME_None,// RingTip + FName{TEXT("pinky_metacarpal_r")},// LittleMetacarpal + FName{TEXT("pinky_01_r")},// LittleProximal + FName{TEXT("pinky_02_r")},// LittleIntermediate + FName{TEXT("pinky_03_r")},// LittleDistal + NAME_None// LittleTip + }, + DefaultLeftHandMeshPath{ + TEXT("SkeletalMesh'/SenseGlove/Meshes/SK_SenseGlove_VirtualHand_Left.SK_SenseGlove_VirtualHand_Left'") + }, + DefaultLeftHandMeshPathOnly{ + TEXT("/SenseGlove/Meshes/SK_SenseGlove_VirtualHand_Left.SK_SenseGlove_VirtualHand_Left") + }, + DefaultRightHandMeshPath{ + TEXT("SkeletalMesh'/SenseGlove/Meshes/SK_SenseGlove_VirtualHand_Right.SK_SenseGlove_VirtualHand_Right'") + }, + DefaultRightHandMeshPathOnly{ + TEXT("/SenseGlove/Meshes/SK_SenseGlove_VirtualHand_Right.SK_SenseGlove_VirtualHand_Right") + } +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandPhalangesLengthSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandPhalangesLengthSettings.cpp new file mode 100644 index 0000000..4f9f4c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandPhalangesLengthSettings.cpp @@ -0,0 +1,63 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandPhalangesLengthSettings.h" + +#include "Engine/SkeletalMesh.h" + +FSGVirtualHandPhalangesLengthSettings::FSGVirtualHandPhalangesLengthSettings() + : FSGVirtualHandPhalangesLengthSettings{ + 2.4f, + 2.4f, + 2.4f, + 2.4f, + 2.4f, + } +{ +} + +FSGVirtualHandPhalangesLengthSettings::FSGVirtualHandPhalangesLengthSettings( + const float InThumb, + const float InIndex, + const float InMiddle, + const float InRing, + const float InLittle) + : Thumb(InThumb), + Index(InIndex), + Middle(InMiddle), + Ring(InRing), + Little(InLittle) +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp new file mode 100644 index 0000000..7d52581 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettings.cpp @@ -0,0 +1,69 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandSettings.h" + +#include "Engine/SkeletalMesh.h" + +FSGVirtualHandSettings::FSGVirtualHandSettings() + : FSGVirtualHandSettings{ + false, + FSGVirtualHandAnimationSettings{}, + FSGVirtualHandDebuggingSettings{}, + FSGVirtualHandGrabSettings{}, + FSGVirtualHandHapticsSettings{}, + FSGVirtualHandMeshSettings{}, + FSGVirtualHandTouchSettings{} + } +{ +} + +FSGVirtualHandSettings::FSGVirtualHandSettings( + const bool bInVisibleWhenHandDataUnavailable, + const FSGVirtualHandAnimationSettings& InAnimationSettings, + const FSGVirtualHandDebuggingSettings& InDebuggingSettings, + const FSGVirtualHandGrabSettings& InGrabSettings, + const FSGVirtualHandHapticsSettings& InHapticsSettings, + const FSGVirtualHandMeshSettings& InMeshSettings, + const FSGVirtualHandTouchSettings& InTouchSettings) + : bVisibleWhenHandDataUnavailable(bInVisibleWhenHandDataUnavailable), + AnimationSettings{InAnimationSettings}, + DebuggingSettings{InDebuggingSettings}, + GrabSettings{InGrabSettings}, + HapticsSettings{InHapticsSettings}, + MeshSettings{InMeshSettings}, + TouchSettings{InTouchSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettingsOverrides.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettingsOverrides.cpp new file mode 100644 index 0000000..b4a82e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandSettingsOverrides.cpp @@ -0,0 +1,69 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandSettingsOverrides.h" + +#include "Engine/SkeletalMesh.h" + +FSGVirtualHandSettingsOverrides::FSGVirtualHandSettingsOverrides() + : FSGVirtualHandSettingsOverrides{ + false, + false, + FSGVirtualHandAnimationSettings{}, + FSGVirtualHandDebuggingSettings{}, + FSGVirtualHandGrabSettings{}, + FSGVirtualHandHapticsSettings{}, + FSGVirtualHandTouchSettings{} + } +{ +} + +FSGVirtualHandSettingsOverrides::FSGVirtualHandSettingsOverrides( + const bool bInOverridePluginSettings, + const bool bInVisibleWhenHandDataUnavailable, + const FSGVirtualHandAnimationSettings& InAnimationSettings, + const FSGVirtualHandDebuggingSettings& InDebuggingSettings, + const FSGVirtualHandGrabSettings& InGrabSettings, + const FSGVirtualHandHapticsSettings& InHapticsSettings, + const FSGVirtualHandTouchSettings& InTouchSettings) + : bOverridePluginSettings(bInOverridePluginSettings), + bVisibleWhenHandDataUnavailable(bInVisibleWhenHandDataUnavailable), + AnimationSettings{InAnimationSettings}, + DebuggingSettings{InDebuggingSettings}, + GrabSettings{InGrabSettings}, + HapticsSettings{InHapticsSettings}, + TouchSettings{InTouchSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTouchSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTouchSettings.cpp new file mode 100644 index 0000000..8e51edd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGVirtualHandTouchSettings.cpp @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGVirtualHandTouchSettings.h" + +FSGVirtualHandTouchSettings::FSGVirtualHandTouchSettings() + : FSGVirtualHandTouchSettings{ + FVector{0.04f, 0.04f, 0.04f}, + FName{TEXT("TouchThumbCollider")}, + FName{TEXT("TouchIndexCollider")}, + FName{TEXT("TouchMiddleCollider")}, + FName{TEXT("TouchRingCollider")}, + FName{TEXT("TouchPinkyCollider")} + } +{ +} + +FSGVirtualHandTouchSettings::FSGVirtualHandTouchSettings( + const FVector& InDefaultColliderSize, + const FName& InThumbColliderSocketName, + const FName& InIndexColliderSocketName, + const FName& InMiddleColliderSocketName, + const FName& InRingColliderSocketName, + const FName& InPinkyColliderSocketName) + : DefaultColliderSize{InDefaultColliderSize}, + ThumbColliderSocketName{InThumbColliderSocketName}, + IndexColliderSocketName{InIndexColliderSocketName}, + MiddleColliderSocketName{InMiddleColliderSocketName}, + RingColliderSocketName{InRingColliderSocketName}, + PinkyColliderSocketName{InPinkyColliderSocketName} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingDebuggingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingDebuggingSettings.cpp new file mode 100644 index 0000000..2028813 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingDebuggingSettings.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGWristTrackingDebuggingSettings.h" + +FSGWristTrackingDebuggingSettings::FSGWristTrackingDebuggingSettings() + : FSGWristTrackingDebuggingSettings{ + false, + FSGDebugGizmoSettings{ + 4.0f, + FColor{255, 0, 0, 255}, + FColor{0, 255, 0, 255}, + FColor{0, 0, 255, 255}, + false, + 1.1f, + 0, + 0.4f, + }, + } +{ +} + +FSGWristTrackingDebuggingSettings::FSGWristTrackingDebuggingSettings( + const bool bInDrawDebugWristTracker, + const FSGDebugGizmoSettings& InDebugWristTrackerSettings) + : bDrawDebugWristTracker(bInDrawDebugWristTracker), + DebugWristTrackerSettings{InDebugWristTrackerSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettings.cpp new file mode 100644 index 0000000..36d4c01 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettings.cpp @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGWristTrackingSettings.h" + +FSGWristTrackingSettings::FSGWristTrackingSettings() + : FSGWristTrackingSettings{ + ESGPositionalTrackingHardware::None, + FVector::ZeroVector, + FVector::ZeroVector, + FRotator::ZeroRotator, + FRotator::ZeroRotator, + EControllerHand::Left, + EControllerHand::Right, + FSGWristTrackingDebuggingSettings{} + } +{ +} + +FSGWristTrackingSettings::FSGWristTrackingSettings( + const ESGPositionalTrackingHardware InTrackingHardware, + const FVector& InTrackingHardwareLocationOffsetLeftHand, + const FVector& InTrackingHardwareLocationOffsetRightHand, + const FRotator& InTrackingHardwareRotationOffsetLeftHand, + const FRotator& InTrackingHardwareRotationOffsetRightHand, + const EControllerHand InLeftHandMotionSource, + const EControllerHand InRightHandMotionSource, + const FSGWristTrackingDebuggingSettings& InDebuggingSettings) + : TrackingHardware(InTrackingHardware), + TrackingHardwareLocationOffsetLeftHand{InTrackingHardwareLocationOffsetLeftHand}, + TrackingHardwareLocationOffsetRightHand{InTrackingHardwareLocationOffsetRightHand}, + TrackingHardwareRotationOffsetLeftHand{InTrackingHardwareRotationOffsetLeftHand}, + TrackingHardwareRotationOffsetRightHand{InTrackingHardwareRotationOffsetRightHand}, + LeftHandMotionSource(InLeftHandMotionSource), + RightHandMotionSource(InRightHandMotionSource), + DebuggingSettings{InDebuggingSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettingsOverrides.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettingsOverrides.cpp new file mode 100644 index 0000000..4916522 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SGSettings/SGWristTrackingSettingsOverrides.cpp @@ -0,0 +1,52 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettings/SGWristTrackingSettingsOverrides.h" + +FSGWristTrackingSettingsOverrides::FSGWristTrackingSettingsOverrides() + : FSGWristTrackingSettingsOverrides{ + false, + FSGWristTrackingDebuggingSettings{} + } +{ +} + +FSGWristTrackingSettingsOverrides::FSGWristTrackingSettingsOverrides( + const bool bInOverridePluginSettings, + const FSGWristTrackingDebuggingSettings& InDebuggingSettings) + : bOverridePluginSettings(bInOverridePluginSettings), + DebuggingSettings{InDebuggingSettings} +{ +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.cpp new file mode 100644 index 0000000..18332d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveSettings.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveSettingsModule.h" + +IMPLEMENT_MODULE(FSenseGloveSettingsModule, SenseGloveSettings) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettings.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.cpp b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.cpp new file mode 100644 index 0000000..63c2287 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.cpp @@ -0,0 +1,132 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveSettingsModule.h" + +#include "ISettingsModule.h" +#include "ISettingsSection.h" +#include "Modules/ModuleManager.h" + +#include "SGLog/SGLog.h" +#include "SGSettings/SGSettings.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveSettingsModule" + +void FSenseGloveSettingsModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveSettings module..."); + + SGLOG("Trying to get the Unreal Engine's Settings module..."); + + ISettingsModule* SettingsModule{FModuleManager::GetModulePtr("Settings")}; + if (SettingsModule) + { + SGLOG("Registering the SenseGlove settings manager through the Unreal Engine's Settings module..."); + + ISettingsSectionPtr SenseGloveSettingsSection{ + SettingsModule->RegisterSettings( + "Project", "Plugins", "SenseGloveSettings", + LOCTEXT("RuntimeSettingsName", "SenseGlove"), + LOCTEXT("RuntimeSettingsDescription", "Configure the SenseGlove settings"), + GetMutableDefault() + ) + }; + + if (SenseGloveSettingsSection.IsValid()) + { + SenseGloveSettingsSection->OnModified().BindRaw(this, &FSenseGloveSettingsModule::OnSettingsSaved); + + SGLOG("Successfully registered the SenseGlove settings manager!"); + } + else + { + SGLOG_ERROR("Failed to register the SenseGlove settings manager!"); + } + } + else + { + SGLOG_ERROR("Failed to get the Unreal Engine's Settings module!"); + } +} + +void FSenseGloveSettingsModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveSettings module..."); +} + +void FSenseGloveSettingsModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveSettings module has succeeded!"); +} + +void FSenseGloveSettingsModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveSettings module..."); + + SGLOG("Trying to get the Unreal Engine's Settings module..."); + + ISettingsModule* SettingsModule{FModuleManager::GetModulePtr("Settings")}; + if (SettingsModule) + { + SGLOG("Unregistering the SenseGlove settings manager through the Unreal Engine's Settings module..."); + + SettingsModule->UnregisterSettings("Project", "Plugins", "SenseGloveSettings"); + + SGLOG("Successfully unregistered the SenseGlove settings manager!"); + } + else + { + SGLOG_ERROR("Failed to get the Unreal Engine's Settings module!"); + } +} + +bool FSenseGloveSettingsModule::OnSettingsSaved() const +{ + USGSettings* Settings = GetMutableDefault(); + bool bResaveConfig = false; + + /// TODO + /// Validate settings here in case of invalid values. + /// In that case, we have to set bResaveConfig to true. + + if (bResaveConfig) + { + Settings->SaveConfig(); + } + + return true; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.h new file mode 100644 index 0000000..f1298e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Private/SenseGloveSettingsModule.h @@ -0,0 +1,54 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveSettings" + +class FSenseGloveSettingsModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; + +private: + bool OnSettingsSaved() const; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugCubeSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugCubeSettings.h new file mode 100644 index 0000000..b6b08fd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugCubeSettings.h @@ -0,0 +1,82 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "Math/Color.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGDebugCubeSettings.generated.h" + +/** +* Implements the debug cube settings. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGDebugCubeSettings +{ + GENERATED_USTRUCT_BODY() + +public: + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + FVector Extent; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + FColor Color; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + bool bPersistentLines; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + float LifeTimeModifier; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + uint8 DepthPriority; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Cube") + float Thickness; + +public: + FSGDebugCubeSettings(); + + FSGDebugCubeSettings( + const FVector& InExtent, + const FColor& InColor, + bool bInPersistentLines, + float InLifeTimeModifier, + uint8 InDepthPriority, + float InThickness); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugGizmoSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugGizmoSettings.h new file mode 100644 index 0000000..dc7256e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGDebugGizmoSettings.h @@ -0,0 +1,89 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "Math/Color.h" +#include "UObject/ObjectMacros.h" + +#include "SGDebugGizmoSettings.generated.h" + +/** +* Implements the debug gizmo settings. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGDebugGizmoSettings +{ + GENERATED_USTRUCT_BODY() + +public: + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + float Length; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + FColor XAxisColor; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + FColor YAxisColor; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + FColor ZAxisColor; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + bool bPersistentLines; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + float LifeTimeModifier; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + uint8 DepthPriority; + + UPROPERTY(Config, EditDefaultsOnly, Category = "Debug Gizmo") + float Thickness; + +public: + FSGDebugGizmoSettings(); + + FSGDebugGizmoSettings( + float InLength, + const FColor& InXAxisColor, + const FColor& InYAxisColor, + const FColor& InZAxisColor, + bool bInPersistentLines, + float InLifeTimeModifier, + uint8 InDepthPriority, + float InThickness); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGameUserSettingsSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGameUserSettingsSettings.h new file mode 100644 index 0000000..7253539 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGameUserSettingsSettings.h @@ -0,0 +1,74 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGSettings/SGHardwareBenchmarkingSettings.h" + +#include "SGGameUserSettingsSettings.generated.h" + +/** +* Implements the game user settings. +* +* The Game User Settings control the behavior of the SenseGlove instance of UGameUserSettings. The USGGameUserSettings +* class extends the functionality of UGameUserSettings to provide enhanced customization options specifically for +* applications that utilize the SenseGlove Unreal Engine Plugin. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGGameUserSettingsSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The hardware-benchmarking settings. + * + * The settings in this section are utilized by the USGGameUserSettings::SetEngineScalabilitySettings() method when + * the Scalability parameter is set to ESGEngineScalabilitySettings::Auto. When the engine scalability settings set + * to auto the graphics settings are determined by running a hardware benchmark by calling the + * UGameUserSettings::RunHardwareBenchmark(). The settings listed here are basically the parameters passed to + * UGameUserSettings::RunHardwareBenchmark(). + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Game User Settings") + FSGHardwareBenchmarkingSettings HardwareBenchmarkingSettings; + +public: + FSGGameUserSettingsSettings(); + + FSGGameUserSettingsSettings( + const FSGHardwareBenchmarkingSettings& InHardwareBenchmarkingSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGloveTrackingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGloveTrackingSettings.h new file mode 100644 index 0000000..914b4d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGGloveTrackingSettings.h @@ -0,0 +1,66 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGGloveTrackingSettings.generated.h" + +/** +* Implements the glove tracking settings for the SenseGlove Tracking module. +* +* Provides the tracking settings related to SenseGlove devices. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGGloveTrackingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The interval in which the tracking module checks for glove connectivity. + * + * The default is 16.666666f which means 60 times per second. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Glove Tracking") + float GloveConnectivityCheckInterval; + +public: + FSGGloveTrackingSettings(); + + explicit FSGGloveTrackingSettings( + float InGloveConnectivityCheckInterval); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHMDTrackingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHMDTrackingSettings.h new file mode 100644 index 0000000..ee865e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHMDTrackingSettings.h @@ -0,0 +1,67 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGTrackingTypes.h" + +#include "SGHMDTrackingSettings.generated.h" + +/** +* Implements the HMD tracking settings for the SenseGlove Tracking module. +* +* Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGHMDTrackingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Determines which VIVE HMD to prioritize for detection, as the current detection mechanism cannot differentiate + * between the HTC VIVE Focus 3 and the HTC VIVE XR Elite. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="HMD Tracking") + ESGViveHMDDetectionPriority ViveHMDDetectionPriority; + +public: + FSGHMDTrackingSettings(); + + explicit FSGHMDTrackingSettings( + ESGViveHMDDetectionPriority InViveHmdDetectionPriority); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHandTrackingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHandTrackingSettings.h new file mode 100644 index 0000000..dfdddf9 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHandTrackingSettings.h @@ -0,0 +1,77 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGHandTrackingSettings.generated.h" + +/** +* Implements the hand tracking settings for the SenseGlove Tracking module. +* +* The settings in this section only affects the hand-tracking functionality when it's enabled and available. When +* enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course +* without the haptics feedback provided by the SenseGlove devices. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGHandTrackingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * If disabled, (the default) the motion sources for hand tracking will be of the form '[Left|Right][Keypoint]'. If + * enabled, they will be of the form 'HandTracking[Left|Right][Keypoint]'. It is recommended to be enabled to avoid + * collisions between motion sources from different device types. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Hand Tracking") + bool bUseMoreSpecificMotionSourceNames; + + /** + * If enabled, hand tracking supports the 'Left' and 'Right' legacy motion sources. If disabled, it does not. It is + * recommended to be disabled unless you need legacy compatibility in older unreal projects. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Hand Tracking") + bool bSupportLegacyControllerMotionSources; + +public: + FSGHandTrackingSettings(); + + FSGHandTrackingSettings( + bool bInUseMoreSpecificMotionSourceNames, + bool bInSupportLegacyControllerMotionSources); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHardwareBenchmarkingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHardwareBenchmarkingSettings.h new file mode 100644 index 0000000..e9735d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGHardwareBenchmarkingSettings.h @@ -0,0 +1,85 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" + +#include "SGHardwareBenchmarkingSettings.generated.h" + +/** +* Implements the hardware-benchmarking settings. +* +* The settings in this section are utilized by the USGGameUserSettings::SetEngineScalabilitySettings() method when the +* Scalability parameter is set to ESGEngineScalabilitySettings::Auto. When the engine scalability settings set to auto +* the graphics settings are determined by running a hardware benchmark by calling the +* UGameUserSettings::RunHardwareBenchmark(). The settings listed here are basically the parameters passed to +* UGameUserSettings::RunHardwareBenchmark(). +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGHardwareBenchmarkingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The WorkScale parameter determines the intensity of the benchmark test. Higher values result in more intensive + * testing, which can help achieve more accurate scalability settings. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking") + float WorkScale; + + /** + * The CPUMultiplier parameter allows you to adjust the impact of CPU performance on the benchmark results. + * Increasing this value will emphasize CPU performance more heavily in determining scalability settings. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking") + float CPUMultiplier; + + /** + * The GPUMultiplier parameter lets you modify the influence of GPU performance on the benchmark outcomes. A higher + * value will increase the weight of GPU performance in setting scalability. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Hardware Benchmarking") + float GPUMultiplier; + +public: + FSGHardwareBenchmarkingSettings(); + + FSGHardwareBenchmarkingSettings( + float InWorkScale, + float InCPUMultiplier, + float InGPUMultiplier); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGInitializationSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGInitializationSettings.h new file mode 100644 index 0000000..78df0e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGInitializationSettings.h @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGInitializationSettings.generated.h" + +/** +* Implements the plugin initialization settings. +* +* The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is initialized, +* allowing you to customize its behavior to suit your project's needs. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGInitializationSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * If enabled, the plugin tries to check and validate whether the default for classes such as GameMode, + * GameInstance, etc. are indeed SenseGlove classes or SenseGlove-derived classes. If not, it attempts to set them. + * If you don't like this behavior for whatever reason, consider disabling this option. + * + * By default, this option is disabled. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Initialization") + bool bValidateIfDefaultClassesAreSGCompliant; + +public: + FSGInitializationSettings(); + + explicit FSGInitializationSettings( + bool bInValidateIfDefaultClassesAreSGCompliant); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h new file mode 100644 index 0000000..3300ef1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGSettings.h @@ -0,0 +1,153 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Subsystems/EngineSubsystem.h" +#include "Templates/UniquePtr.h" +#include "UObject/ObjectMacros.h" + +#include "SGSettings/SGGameUserSettingsSettings.h" +#include "SGSettings/SGInitializationSettings.h" +#include "SGSettings/SGTrackingSettings.h" +#include "SGSettings/SGVirtualHandSettings.h" + +#include "SGSettings.generated.h" + +/** +* Implements the settings for the SenseGlove Unreal Engine Plugin. +*/ +UCLASS(config = SenseGloveSettings, DefaultConfig) +class SENSEGLOVESETTINGS_API USGSettings : public UEngineSubsystem +{ + GENERATED_BODY() + +public: + static USGSettings* GetInstance(); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + /** + * The Initialization Settings section is designed to control how the SenseGlove Unreal Engine Plugin is + * initialized, allowing you to customize its behavior to suit your project's needs. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove") + FSGInitializationSettings InitializationSettings; + + /** + * The Game User Settings control the behavior of the SenseGlove instance of UGameUserSettings. The + * USGGameUserSettings class extends the functionality of UGameUserSettings to provide enhanced customization + * options specifically for applications that utilize the SenseGlove Unreal Engine Plugin. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove") + FSGGameUserSettingsSettings GameUserSettings; + + /** + * The tracking settings are primarily used by the SenseGlove Tracking module and are divided into various + * subsections, each focusing on a specific aspect of tracking. These subsections, along with the other settings + * directly provided by this section, provide comprehensive control over the tracking functionalities. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "SenseGlove") + FSGTrackingSettings TrackingSettings; + + /** + * The Virtual Hand Settings are utilized by various SenseGlove modules such as Debug, Editor, Tracking, and the + * main module. These settings are divided into several subsections, each focusing on a specific aspect of the + * virtual hand functionality. Together with the settings provided directly in this section, they offer + * comprehensive control over any system or component that utilizes the virtual hand. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="SenseGlove") + FSGVirtualHandSettings VirtualHandSettings; + +private: + USGSettings(); + +public: + FORCEINLINE const FSGInitializationSettings& GetInitializationSettings() const + { + return InitializationSettings; + } + + void SetInitializationSettings(const FSGInitializationSettings& InInitializationSettings) + { + InitializationSettings = InInitializationSettings; + } + + FORCEINLINE const FSGGameUserSettingsSettings& GetGameUserSettings() const + { + return GameUserSettings; + } + + void SetGameUserSettings(const FSGGameUserSettingsSettings& InGameUserSettings) + { + GameUserSettings = InGameUserSettings; + } + + FORCEINLINE const FSGTrackingSettings& GetTrackingSettings() const + { + return TrackingSettings; + } + + void SetTrackingSettings(const FSGTrackingSettings& InTrackingSettings) + { + TrackingSettings = InTrackingSettings; + } + + FORCEINLINE const FSGVirtualHandSettings& GetVirtualHandSettings() const + { + return VirtualHandSettings; + } + + void SetVirtualHandSettings(const FSGVirtualHandSettings& InVirtualHandSettings) + { + VirtualHandSettings = InVirtualHandSettings; + } + +public: + virtual bool ShouldCreateSubsystem(UObject* Outer) const override; + + virtual void Initialize(FSubsystemCollectionBase& Collection) override; + virtual void Deinitialize() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h new file mode 100644 index 0000000..3066162 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGTrackingSettings.h @@ -0,0 +1,109 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGSettings/SGGloveTrackingSettings.h" +#include "SGSettings/SGHandTrackingSettings.h" +#include "SGSettings/SGHMDTrackingSettings.h" +#include "SGSettings/SGWristTrackingSettings.h" + +#include "SGTrackingSettings.generated.h" + +/** +* Implements the settings for the SenseGlove Tracking module. +* +* The tracking settings are primarily used by the SenseGlove Tracking module and are divided into various subsections, +* each focusing on a specific aspect of tracking. These subsections, along with the other settings directly provided by +* this section, provide comprehensive control over the tracking functionalities. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGTrackingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Determines whether to fallback to hand-tracking, or not, when no SenseGlove device is detected: + * + * - If disabled, only a real glove will be tracked. + * - If enabled, the plugin will fall back to hand-tracking when it's available and supported by the HMD device. + * + * Note: disabling this option hides the hand-tracking settings section, while enabling it makes the hand-tracking + * settings visible. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") + bool bFallbackToHandTrackingIfNoGloveDetected; + + /** + * Provides the tracking settings related to SenseGlove devices. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") + FSGGloveTrackingSettings GloveTrackingSettings; + + /** + * The settings in this section only affects the hand-tracking functionality when it's enabled and available. When + * enabled the bare hands can be used instead of SenseGlove devices to interact within the VR simulation, of course + * without the haptics feedback provided by the SenseGlove devices. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Tracking", + meta=(EditCondition="bFallbackToHandTrackingIfNoGloveDetected", EditConditionHides)) + FSGHandTrackingSettings HandTrackingSettings; + + /** + * Provides the tracking settings related to head-mounted displays (HDMs) and their auto-detection functionality. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") + FSGHMDTrackingSettings HMDTrackingSettings; + + /** + * Provides the tracking settings applicable to wrist-tracking hardware. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Tracking") + FSGWristTrackingSettings WristTrackingSettings; + +public: + FSGTrackingSettings(); + + FSGTrackingSettings( + bool bInFallbackToHandTrackingIfNoGloveDetected, + const FSGGloveTrackingSettings& InGloveTrackingSettings, + const FSGHandTrackingSettings& InHandTrackingSettings, + const FSGHMDTrackingSettings& InHmdTrackingSettings, + const FSGWristTrackingSettings& InWristTrackingSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandAnimationSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandAnimationSettings.h new file mode 100644 index 0000000..2c78e9d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandAnimationSettings.h @@ -0,0 +1,82 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "Math/Rotator.h" +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGVirtualHandAnimationSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand animation settings. +* +* Controls how the virtual hand model is animated by the animation system. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandAnimationSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Specifies the offset to apply to each bone's rotation when translating hand pose data to the virtual hand bones. + * This is useful if the virtual hand mesh was imported with an initial rotation. For example, the virtual hand + * model shipped with Unreal Engine's VRTemplate typically has an initial 90.0f degrees rotation on the Yaw axis. + * By default, this option has been set up with the Unreal Engine's VRTemplate virtual hand model in mind. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Animation") + FRotator AnimationBoneRotationCorrectionOffset; + + /** + * When enabled, the animation system applies the joint locations to the current virtual hand mesh bones in + * addition to the joint rotation. Otherwise, only the joint rotations are applied, and joint locations are + * ignored, leaving the bone locations untouched on the virtual hand mesh when animating it. Enabling this option + * typically improves the virtual hand animation. By default, this option is enabled. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Animation") + bool bShouldAnimationApplyBoneLocation; + +public: + FSGVirtualHandAnimationSettings(); + + FSGVirtualHandAnimationSettings( + const FRotator& InAnimationBoneRotationCorrectionOffset, + bool bInShouldAnimationApplyBoneLocation); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandDebuggingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandDebuggingSettings.h new file mode 100644 index 0000000..2f7a376 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandDebuggingSettings.h @@ -0,0 +1,99 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +#include "SGSettings/SGDebugCubeSettings.h" +#include "SGSettings/SGDebugGizmoSettings.h" +#include "SGTypes/SGDebugTypes.h" + +#include "SGVirtualHandDebuggingSettings.generated.h" + +/** +* Implements the virtual hand debugging settings. +* +* Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a +* debug virtual hand by drawing all individual hand joints. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandDebuggingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * If enabled, visualizes the debug virtual hand where possible. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging") + bool bDrawDebugVirtualHand; + + /** + * Determines the virtual hand drawing mode. If set to `CubicJoints, for every joint a debug cube will be drawn. + * If set to GizmoJoints, for every joint a debug gizmo will be drawn. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging", + meta=(EditCondition="bDrawDebugVirtualHand", EditConditionHides)) + ESGDebugVirtualHandDrawingMode DrawingMode; + + /** + * Visible and valid only if bDrawDebugVirtualHand is enabled and DrawingMode has been set to + * ESGDebugVirtualHandDrawingMode::CubicJoints. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging", + meta=(EditCondition="bDrawDebugVirtualHand && DrawingMode == ESGDebugVirtualHandDrawingMode::CubicJoints", + EditConditionHides)) + FSGDebugCubeSettings DebugCubicHandSettings; + + /** + * Visible and valid only if bDrawDebugVirtualHand is enabled and DrawingMode has been set to + * ESGDebugVirtualHandDrawingMode::GizmoJoints. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Debugging", + meta=(EditCondition="bDrawDebugVirtualHand && DrawingMode == ESGDebugVirtualHandDrawingMode::GizmoJoints", + EditConditionHides)) + FSGDebugGizmoSettings DebugGizmoHandSettings; + +public: + FSGVirtualHandDebuggingSettings(); + + FSGVirtualHandDebuggingSettings( + bool bInDrawDebugVirtualHand, + ESGDebugVirtualHandDrawingMode InDrawingMode, + const FSGDebugCubeSettings& InDebugCubicHandSettings, + const FSGDebugGizmoSettings& InDebugGizmoHandSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandGrabSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandGrabSettings.h new file mode 100644 index 0000000..6faf403 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandGrabSettings.h @@ -0,0 +1,109 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Transform.h" +#include "Math/Vector.h" +#include "UObject/NameTypes.h" +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGVirtualHandGrabSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand grab settings. +* +* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab +* system to function. +* +* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandGrabSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The default socket name for the grab attach point, usually located at the palm of the hand. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FName GrabAttachPointSocketName; + + /** + * The default socket transform (location, rotation, scale) for the grab attach point, usually located at the palm + * of the hand. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FTransform GrabAttachPointSocketTransform; + + /** + * The default collider size for the fingers' grab colliders. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FVector DefaultColliderSize; + + /** + * The default socket name for the thumb finger's grab collider, usually located at the tip of the thumb finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FName ThumbColliderSocketName; + + /** + * The default socket name for the index finger's grab collider, usually located at the tip of the index finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FName IndexColliderSocketName; + + /** + * The default socket name for the middle finger's grab collider, usually located at the tip of the middle finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Grab") + FName MiddleColliderSocketName; + +public: + FSGVirtualHandGrabSettings(); + + FSGVirtualHandGrabSettings( + const FName& InGrabAttachPointSocketName, + const FTransform& InGrabAttachPointSocketTransform, + const FVector& InDefaultColliderSize, + const FName& InThumbColliderSocketName, + const FName& InIndexColliderSocketName, + const FName& InMiddleColliderSocketName); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandHapticsSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandHapticsSettings.h new file mode 100644 index 0000000..e52ba01 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandHapticsSettings.h @@ -0,0 +1,69 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGVirtualHandHapticsSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand haptics settings. +* +* Utilized by the haptics system. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandHapticsSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Forces all haptics to stop automatically on the EndPlay event. This is useful for situations where the + * simulation has ended, but ongoing haptic feedback might remain active on the glove indefinitely. By default, + * this setting is enabled. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Haptics") + bool bAutoStopAllHapticsOnEndPlay; + +public: + FSGVirtualHandHapticsSettings(); + + FSGVirtualHandHapticsSettings( + bool bInAutoStopAllHapticsOnEndPlay); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandMeshSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandMeshSettings.h new file mode 100644 index 0000000..7ee17d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandMeshSettings.h @@ -0,0 +1,179 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Containers/Map.h" +#include "Containers/UnrealString.h" +#include "Engine/SkeletalMesh.h" +#include "Math/Rotator.h" +#include "Math/Transform.h" +#include "UObject/NameTypes.h" +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGSettings/SGVirtualHandPhalangesLengthSettings.h" + +#include "SGVirtualHandMeshSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand mesh settings. +* +* Utilized by the SenseGlove Tracking module to account for the current virtual hand mesh when generating hand pose +* data, resulting in more accurate glove or hand data representation and also smoother animations. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandMeshSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The virtual hand model for the left hand is to be used by the SenseGlove Tracking module to generate all the 26 + * joint data present in the FXRMotionControllerData. The main reason the Tracking module requires a virtual hand + * mesh as a reference is the SenseGlove Hand Pose format only provides 15 joints. So, the remaining joint data for + * FXRMotionControllerData are calculated from a virtual hand mesh compatible with the Epic rig and also the values + * specified by DistalPhalangesLengthSettings. Furthermore, when calculating the existing joints data, their + * current locations and rotations are taken into account in calculating the resulting FXRMotionControllerData. + * + * By default, no virtual hand mesh is set. + * + * Caution: + * If no virtual hand mesh is set, the Tracking module will fall back to hard-coded values extracted from the + * standard virtual hand model shipped by Unreal Engine VRTemplate. This may result in distorted hand mesh while + * animating a hand in case a different hand mesh other than the default Epic virtual hand mesh is being set on the + * virtual hand components. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Mesh") + TSoftObjectPtr LeftHandReferenceMesh; + + /** + * The virtual hand model for the right hand is to be used by the SenseGlove Tracking module to generate all the 26 + * joint data present in the FXRMotionControllerData. The main reason the Tracking module requires a virtual hand + * mesh as a reference is the SenseGlove Hand Pose format only provides 15 joints. So, the remaining joint data for + * FXRMotionControllerData are calculated from a virtual hand mesh compatible with the Epic rig and also the values + * specified by DistalPhalangesLengthSettings. Furthermore, when calculating the existing joints data, their + * current locations and rotations are taken into account in calculating the resulting FXRMotionControllerData. + * + * By default, no virtual hand mesh is set. + * + * Caution: + * If no virtual hand mesh is set, the Tracking module will fall back to hard-coded values extracted from the + * standard virtual hand model shipped by Unreal Engine VRTemplate. This may result in distorted hand mesh while + * animating a hand in case a different hand mesh other than the default Epic virtual hand mesh is being set on the + * virtual hand components. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Mesh") + TSoftObjectPtr RightHandReferenceMesh; + + /** + * The length of distal phalanges that cannot be retrieved from any virtual hand mesh compliant with the Epic + * standard rig. Also, the SenseGlove Hand Pose format does not provide these. This is used by SenseGlove Tracking + * module to calculate an FXRMotionControllerData the all 26 joints. The values you specify here depend on the + * shape of the virtual hand mesh and the defaults are approximated for the virtual hand model shipped with the + * Unreal Engine VRTemplate. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Mesh") + FSGVirtualHandPhalangesLengthSettings DistalPhalangesLengthSettings; + + /** + * Used mostly by the SenseGlove Tracking module and SGPawn to offset for any initial rotation during the virtual + * hand mesh import process. This is the case for example with the virtual hand model shipped with Unreal Engine's + * VRTemplate, which typically has an initial -90.0f degrees rotation on the Yaw axis. By default, this option has + * been set up with the Unreal Engine's VRTemplate virtual hand model in mind. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Mesh") + FRotator RootBoneRotationCorrection; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + TMap LeftHandDefaultReferenceBoneTransforms; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + TMap RightHandDefaultReferenceBoneTransforms; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + TArray LeftHandBoneNames; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + TArray RightHandBoneNames; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + FString DefaultLeftHandMeshPath; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + FString DefaultLeftHandMeshPathOnly; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + FString DefaultRightHandMeshPath; + + /** + * Read-only and for internal use only. + */ + UPROPERTY(Config, VisibleDefaultsOnly, Category="Mesh") + FString DefaultRightHandMeshPathOnly; + +public: + FSGVirtualHandMeshSettings(); + + FSGVirtualHandMeshSettings( + const TSoftObjectPtr& InLeftHandReferenceMesh, + const TSoftObjectPtr& InRightHandReferenceMesh, + const FSGVirtualHandPhalangesLengthSettings& InDistalPhalangesLengthSettings, + const FRotator& InRootBoneRotationCorrection); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandPhalangesLengthSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandPhalangesLengthSettings.h new file mode 100644 index 0000000..67b7d4a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandPhalangesLengthSettings.h @@ -0,0 +1,78 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGVirtualHandPhalangesLengthSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand phalanges length settings. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandPhalangesLengthSettings +{ + GENERATED_USTRUCT_BODY() + +public: + UPROPERTY(Config, EditDefaultsOnly, Category="Phalanges Length") + float Thumb; + + UPROPERTY(Config, EditDefaultsOnly, Category="Phalanges Length") + float Index; + + UPROPERTY(Config, EditDefaultsOnly, Category="Phalanges Length") + float Middle; + + UPROPERTY(Config, EditDefaultsOnly, Category="Phalanges Length") + float Ring; + + UPROPERTY(Config, EditDefaultsOnly, Category="Phalanges Length") + float Little; + +public: + FSGVirtualHandPhalangesLengthSettings(); + + FSGVirtualHandPhalangesLengthSettings( + float InThumb, + float InIndex, + float InMiddle, + float InRing, + float InLittle); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h new file mode 100644 index 0000000..964cb2f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettings.h @@ -0,0 +1,128 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGSettings/SGVirtualHandAnimationSettings.h" +#include "SGSettings/SGVirtualHandDebuggingSettings.h" +#include "SGSettings/SGVirtualHandGrabSettings.h" +#include "SGSettings/SGVirtualHandHapticsSettings.h" +#include "SGSettings/SGVirtualHandMeshSettings.h" +#include "SGSettings/SGVirtualHandTouchSettings.h" + +#include "SGVirtualHandSettings.generated.h" + +/** +* Implements the virtual hand settings. +* +* The Virtual Hand Settings are utilized by various SenseGlove modules such as Debug, Editor, Tracking, and the main +* module. These settings are divided into several subsections, each focusing on a specific aspect of the virtual hand +* functionality. Together with the settings provided directly in this section, they offer comprehensive control over +* any system or component that utilizes the virtual hand. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or + * hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available. + * By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data + * is currently available. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + bool bVisibleWhenHandDataUnavailable; + + /** + * Controls how the virtual hand model is animated by the animation system. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandAnimationSettings AnimationSettings; + + /** + * Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a + * debug virtual hand by drawing all individual hand joints. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandDebuggingSettings DebuggingSettings; + + /** + * Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab + * system to function. + * + * The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandGrabSettings GrabSettings; + + /** + * Utilized by the haptics system. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandHapticsSettings HapticsSettings; + + /** + * Utilized by the SenseGlove Tracking module to account for the current virtual hand mesh when generating hand + * pose data, resulting in more accurate glove or hand data representation and also smoother animations. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandMeshSettings MeshSettings; + + /** + * Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch + * system to function. + * + * The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Virtual Hand") + FSGVirtualHandTouchSettings TouchSettings; + +public: + FSGVirtualHandSettings(); + + FSGVirtualHandSettings( + bool bInVisibleWhenHandDataUnavailable, + const FSGVirtualHandAnimationSettings& InAnimationSettings, + const FSGVirtualHandDebuggingSettings& InDebuggingSettings, + const FSGVirtualHandGrabSettings& InGrabSettings, + const FSGVirtualHandHapticsSettings& InHapticsSettings, + const FSGVirtualHandMeshSettings& InMeshSettings, + const FSGVirtualHandTouchSettings& InTouchSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettingsOverrides.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettingsOverrides.h new file mode 100644 index 0000000..da34cd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandSettingsOverrides.h @@ -0,0 +1,127 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGSettings/SGVirtualHandAnimationSettings.h" +#include "SGSettings/SGVirtualHandDebuggingSettings.h" +#include "SGSettings/SGVirtualHandGrabSettings.h" +#include "SGSettings/SGVirtualHandHapticsSettings.h" +#include "SGSettings/SGVirtualHandTouchSettings.h" + +#include "SGVirtualHandSettingsOverrides.generated.h" + +/** +* Implements the virtual hand settings' overrides. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandSettingsOverrides +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Determines whether to override the plugin's virtual hand settings or not. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove") + bool bOverridePluginSettings; + + /** + * Used by the Virtual Hand Component to determine its visibility when no hand data, either from a SenseGlove or + * hand-tracking, is available. If enabled, the virtual hand mesh remains visible even when no data is available. + * By default, this setting is disabled, providing users of the simulation with a clear indicator that no hand data + * is currently available. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + bool bVisibleWhenHandDataUnavailable; + + /** + * Controls how the virtual hand model is animated by the animation system. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGVirtualHandAnimationSettings AnimationSettings; + + /** + * Primarily used for visually debugging low-level hand data. When enabled, the Virtual Hand Component visualizes a + * debug virtual hand by drawing all individual hand joints. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGVirtualHandDebuggingSettings DebuggingSettings; + + /** + * Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the Grab + * system to function. + * + * The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGVirtualHandGrabSettings GrabSettings; + + /** + * Utilized by the haptics system. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGVirtualHandHapticsSettings HapticsSettings; + + /** + * Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch + * system to function. + * + * The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGVirtualHandTouchSettings TouchSettings; + +public: + FSGVirtualHandSettingsOverrides(); + + FSGVirtualHandSettingsOverrides( + bool bInOverridePluginSettings, + bool bInVisibleWhenHandDataUnavailable, + const FSGVirtualHandAnimationSettings& InAnimationSettings, + const FSGVirtualHandDebuggingSettings& InDebuggingSettings, + const FSGVirtualHandGrabSettings& InGrabSettings, + const FSGVirtualHandHapticsSettings& InHapticsSettings, + const FSGVirtualHandTouchSettings& InTouchSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTouchSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTouchSettings.h new file mode 100644 index 0000000..782c770 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGVirtualHandTouchSettings.h @@ -0,0 +1,107 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Vector.h" +#include "UObject/NameTypes.h" +#include "UObject/ObjectMacros.h" +#include "UObject/SoftObjectPtr.h" + +#include "SGVirtualHandTouchSettings.generated.h" + +class USkeletalMesh; + +/** +* Implements the virtual hand touch settings. +* +* Utilized by the SenseGlove Sockets Editor to automatically generate the hand sockets required by the touch +* system to function. +* +* The SGPawn also utilizes these settings to set up the grab colliders on the virtual hand components. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGVirtualHandTouchSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * The default collider size for the fingers' touch colliders. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FVector DefaultColliderSize; + + /** + * The default socket name for the thumb finger's touch collider, usually located at the tip of the thumb finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FName ThumbColliderSocketName; + + /** + * The default socket name for the index finger's touch collider, usually located at the tip of the index finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FName IndexColliderSocketName; + + /** + * The default socket name for the middle finger's touch collider, usually located at the tip of the middle finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FName MiddleColliderSocketName; + + /** + * The default socket name for the ring finger's touch collider, usually located at the tip of the ring finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FName RingColliderSocketName; + + /** + * The default socket name for the pinky finger's touch collider, usually located at the tip of the pinky finger. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Touch") + FName PinkyColliderSocketName; + +public: + FSGVirtualHandTouchSettings(); + + FSGVirtualHandTouchSettings( + const FVector& InDefaultColliderSize, + const FName& InThumbColliderSocketName, + const FName& InIndexColliderSocketName, + const FName& InMiddleColliderSocketName, + const FName& InRingColliderSocketName, + const FName& InPinkyColliderSocketName); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingDebuggingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingDebuggingSettings.h new file mode 100644 index 0000000..f8e26b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingDebuggingSettings.h @@ -0,0 +1,77 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "Math/Color.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGDebugGizmoSettings.h" + +#include "SGWristTrackingDebuggingSettings.generated.h" + +/** +* Implements the wrist tracking debugging settings. +* +* Provides debugging options for visually debugging the wrist tracker. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGWristTrackingDebuggingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * If enabled, visualizes the debug wrist trackers where possible. + */ + UPROPERTY(EditAnywhere, Category = "Debugging") + bool bDrawDebugWristTracker; + + /** + * Visible and valid only if bDrawDebugGizmo is enabled. + */ + UPROPERTY(EditAnywhere, Category = "Debugging", + meta=(EditCondition="bDrawDebugWristTracker", EditConditionHides)) + FSGDebugGizmoSettings DebugWristTrackerSettings; + +public: + FSGWristTrackingDebuggingSettings(); + + FSGWristTrackingDebuggingSettings( + bool bInDrawDebugWristTracker, + const FSGDebugGizmoSettings& InDebugWristTrackerSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettings.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettings.h new file mode 100644 index 0000000..476b4af --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettings.h @@ -0,0 +1,161 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "InputCoreTypes.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" +#include "UObject/ObjectMacros.h" + +#include "SGSettings/SGWristTrackingDebuggingSettings.h" +#include "SGTypes/SGCoreTypes.h" + +#include "SGWristTrackingSettings.generated.h" + +/** +* Implements the wrist tracking settings. +* +* Provides the tracking settings applicable to wrist-tracking hardware. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGWristTrackingSettings +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Specifies the type of tracking hardware to use. If set to None, the plugin attempts at HMD auto-detection to + * automatically specify a compatible tracking hardware. If set to `Custom`, aby desired location and rotation can + * be specified. + * + * Caution: + * HMD auto-detection is currently an experimental feature and may fail because HMD vendors occasionally change the + * properties utilized by the plugin for HMD + * detection. If you encounter issues, such as incorrect tracker offsets, it is recommended to explicitly specify + * the tracking hardware. + * + * Caution: + * Due to highly experimental nature of the HMD auto-detection feature, the HTC VIVE Focus 3 and HTC XR Elite + * cannot be distinguished from each other in the current iteration. However, since the tracker devices and offsets + * for both headsets are the same, this should not affect performance or functionality. + * The order in which the HMD is detected can be specified through the HMD-tracker setting + * `ViveHMDDetectionPriority`. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking") + ESGPositionalTrackingHardware TrackingHardware; + + /** + * Sets a custom location offset for left hand's wrist-tracking hardware. + * + * Note: + * This setting is visible and valid only if TrackingHardware is set to Custom. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking", + meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides)) + FVector TrackingHardwareLocationOffsetLeftHand; + + /** + * Sets a custom location offset for right hand's wrist-tracking hardware. + * + * Note: + * This setting is visible and valid only if TrackingHardware is set to Custom. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking", + meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides)) + FVector TrackingHardwareLocationOffsetRightHand; + + /** + * Sets a custom rotation offset for left hand's wrist-tracking hardware. + * + * Note: + * This setting is visible and valid only if TrackingHardware is set to Custom. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking", + meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides)) + FRotator TrackingHardwareRotationOffsetLeftHand; + + /** + * Sets a custom rotation offset for right hand's wrist-tracking hardware. + * + * Note: + * This setting is visible and valid only if TrackingHardware is set to Custom. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking", + meta=(EditCondition="TrackingHardware == ESGPositionalTrackingHardware::Custom", EditConditionHides)) + FRotator TrackingHardwareRotationOffsetRightHand; + + /** + * Determines the motion source for the left hand. For Oculus HMDs, this is usually Left, and for VIVE HMDs, it's + * typically LeftFoot. + * + * Note: + * For VIVE devices using SteamVR, the motion source hardware for the left hand can be specified by the user + * through the SteamVR app. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Wrist Tracking") + EControllerHand LeftHandMotionSource; + + /** + * Determines the motion source for the left hand. For Oculus HMDs, this is usually Right, and for VIVE HMDs, it's + * typically RightFoot. + * + * Note: + * For VIVE devices using SteamVR, the motion source hardware for the right hand can be specified by the user + * through the SteamVR app. + */ + UPROPERTY(Config, EditDefaultsOnly, Category="Wrist Tracking") + EControllerHand RightHandMotionSource; + + /** + * Provides debugging options for visually debugging the wrist tracker. + */ + UPROPERTY(Config, EditDefaultsOnly, Category = "Wrist Tracking") + FSGWristTrackingDebuggingSettings DebuggingSettings; + +public: + FSGWristTrackingSettings(); + + FSGWristTrackingSettings( + ESGPositionalTrackingHardware InTrackingHardware, + const FVector& InTrackingHardwareLocationOffsetLeftHand, + const FVector& InTrackingHardwareLocationOffsetRightHand, + const FRotator& InTrackingHardwareRotationOffsetLeftHand, + const FRotator& InTrackingHardwareRotationOffsetRightHand, + EControllerHand InLeftHandMotionSource, + EControllerHand InRightHandMotionSource, + const FSGWristTrackingDebuggingSettings& InDebuggingSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettingsOverrides.h b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettingsOverrides.h new file mode 100644 index 0000000..92ce573 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/Public/SGSettings/SGWristTrackingSettingsOverrides.h @@ -0,0 +1,74 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "InputCoreTypes.h" +#include "UObject/ObjectMacros.h" + +#include "SGWristTrackingDebuggingSettings.h" + +#include "SGWristTrackingSettingsOverrides.generated.h" + +/** +* Implements the wrist tracking settings' overrides. +*/ +USTRUCT(BlueprintType) +struct SENSEGLOVESETTINGS_API FSGWristTrackingSettingsOverrides +{ + GENERATED_USTRUCT_BODY() + +public: + /** + * Determines whether to override the plugin's wrist tracking settings or not. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove") + bool bOverridePluginSettings; + + /** + * Provides debugging options for visually debugging the wrist tracker. + */ + UPROPERTY(EditAnywhere, Category = "SenseGlove", + meta=(EditCondition="bOverridePluginSettings", EditConditionHides)) + FSGWristTrackingDebuggingSettings DebuggingSettings; + +public: + FSGWristTrackingSettingsOverrides(); + + FSGWristTrackingSettingsOverrides( + bool bInOverridePluginSettings, + const FSGWristTrackingDebuggingSettings& InDebuggingSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettings/SenseGloveSettings.Build.cs b/Plugins/SenseGlove/Source/SenseGloveSettings/SenseGloveSettings.Build.cs new file mode 100644 index 0000000..691fd4c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettings/SenseGloveSettings.Build.cs @@ -0,0 +1,71 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveSettings : ModuleRules +{ + public SenseGloveSettings(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "InputCore", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "Settings", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SGSettingsKismet/SGSettingsKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SGSettingsKismet/SGSettingsKismetLibrary.cpp new file mode 100644 index 0000000..2ead44c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SGSettingsKismet/SGSettingsKismetLibrary.cpp @@ -0,0 +1,87 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGSettingsKismet/SGSettingsKismetLibrary.h" + +#include "SGSettings/SGSettings.h" + +USGSettings* USGSettingsKismetLibrary::GetInstance() +{ + return USGSettings::GetInstance(); +} + +const FSGInitializationSettings& USGSettingsKismetLibrary::GetInitializationSettings(const USGSettings* Settings) +{ + return Settings->GetInitializationSettings(); +} + +void USGSettingsKismetLibrary::SetInitializationSettings( + USGSettings* Settings, const FSGInitializationSettings& InInitializationSettings) +{ + Settings->SetInitializationSettings(InInitializationSettings); +} + +const FSGGameUserSettingsSettings& USGSettingsKismetLibrary::GetGameUserSettings(const USGSettings* Settings) +{ + return Settings->GetGameUserSettings(); +} + +void USGSettingsKismetLibrary::SetGameUserSettings( + USGSettings* Settings, const FSGGameUserSettingsSettings& InGameUserSettingsSettings) +{ + Settings->SetGameUserSettings(InGameUserSettingsSettings); +} + +const FSGTrackingSettings& USGSettingsKismetLibrary::GetTrackingSettings(const USGSettings* Settings) +{ + return Settings->GetTrackingSettings(); +} + +void USGSettingsKismetLibrary::SetTrackingSettings( + USGSettings* Settings, const FSGTrackingSettings& InTrackingSettings) +{ + Settings->SetTrackingSettings(InTrackingSettings); +} + +const FSGVirtualHandSettings& USGSettingsKismetLibrary::GetVirtualHandSettings(const USGSettings* Settings) +{ + return Settings->GetVirtualHandSettings(); +} + +void USGSettingsKismetLibrary::SetVirtualHandSettings( + USGSettings* Settings, const FSGVirtualHandSettings& InVirtualHandSettings) +{ + Settings->SetVirtualHandSettings(InVirtualHandSettings); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.cpp new file mode 100644 index 0000000..3c0f069 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveSettingsKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveSettingsKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveSettingsKismetModule, SenseGloveSettingsKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.h b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.cpp new file mode 100644 index 0000000..55e04c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveSettingsKismetModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveSettingsKismetModule" + +void FSenseGloveSettingsKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveSettingsKismet module..."); +} + +void FSenseGloveSettingsKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveSettingsKismet module..."); +} + +void FSenseGloveSettingsKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveSettingsKismet module has succeeded!"); +} + +void FSenseGloveSettingsKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveSettingsKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.h new file mode 100644 index 0000000..6e83abb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Private/SenseGloveSettingsKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveSettingsKismet" + +class FSenseGloveSettingsKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Public/SGSettingsKismet/SGSettingsKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Public/SGSettingsKismet/SGSettingsKismetLibrary.h new file mode 100644 index 0000000..caf000f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/Public/SGSettingsKismet/SGSettingsKismetLibrary.h @@ -0,0 +1,84 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGSettings/SGInitializationSettings.h" +#include "SGSettings/SGGameUserSettingsSettings.h" +#include "SGSettings/SGTrackingSettings.h" +#include "SGSettings/SGVirtualHandSettings.h" + +#include "SGSettingsKismetLibrary.generated.h" + +class USGSettings; + +UCLASS(meta=(ScriptName = "SenseGloveSettingsKismetLibrary")) +class SENSEGLOVESETTINGSKISMET_API USGSettingsKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Settings") + static USGSettings* GetInstance(); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Settings") + static const FSGInitializationSettings& GetInitializationSettings(const USGSettings* Settings); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Settings") + static void SetInitializationSettings(UPARAM(ref) USGSettings* Settings, + const FSGInitializationSettings& InInitializationSettings); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Settings") + static const FSGGameUserSettingsSettings& GetGameUserSettings(const USGSettings* Settings); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Settings") + static void SetGameUserSettings(UPARAM(ref) USGSettings* Settings, + const FSGGameUserSettingsSettings& InGameUserSettings); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Settings") + static const FSGTrackingSettings& GetTrackingSettings(const USGSettings* Settings); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Settings") + static void SetTrackingSettings(UPARAM(ref) USGSettings* Settings, + const FSGTrackingSettings& InTrackingSettings); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Settings") + static const FSGVirtualHandSettings& GetVirtualHandSettings(const USGSettings* Settings); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Settings") + static void SetVirtualHandSettings(UPARAM(ref) USGSettings* Settings, + const FSGVirtualHandSettings& InVirtualHandSettings); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/SenseGloveSettingsKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/SenseGloveSettingsKismet.Build.cs new file mode 100644 index 0000000..ea6782e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveSettingsKismet/SenseGloveSettingsKismet.Build.cs @@ -0,0 +1,64 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveSettingsKismet : ModuleRules +{ + public SenseGloveSettingsKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveKismet", + "SenseGloveSettings", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp new file mode 100644 index 0000000..421f815 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGGloveTracker.cpp @@ -0,0 +1,202 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTracking/SGGloveTracker.h" + +#include "Engine/Engine.h" +#include "Engine/TimerHandle.h" +#include "Engine/World.h" +#include "TimerManager.h" + +#include "SGBackend/SGBackend.h" +#include "SGBuildHacks/SGPlatform.h" +#include "SGCore/SGHapticGlove.h" +#include "SGLog/SGLog.h" +#include "SGSettings/SGSettings.h" +#include "SGSettings/SGTrackingSettings.h" +#include "SGUtils/SGEngineUtils.h" + +struct USGGloveTracker::FImpl +{ + /************************ + * Static methods + ************************/ + + FORCEINLINE static float GetGloveConnectivityCheckInterval() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + return Settings->GetTrackingSettings().GloveTrackingSettings.GloveConnectivityCheckInterval; + } + + /************************ + * Member variables + ************************/ + + FTimerHandle GloveConnectivityCheckTimer; + + /************************ + * Owner object + ************************/ + + USGGloveTracker* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(USGGloveTracker* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; + + /************************ + * Methods + ************************/ + + void UpdateGloves() const; +}; + +USGGloveTracker* USGGloveTracker::GetInstance(const UObject* WorldContextObject) +{ + const UWorld* World{WorldContextObject ? WorldContextObject->GetWorld() : FSGEngineUtils::GetWorld()}; + USGGloveTracker* Instance{IsValid(World) ? World->GetSubsystem() : nullptr}; + return Instance; +} + +USGGloveTracker::USGGloveTracker() + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)), + LeftGlove(nullptr), + RightGlove(nullptr) +{ +} + +bool USGGloveTracker::ShouldCreateSubsystem(UObject* Outer) const +{ + return true; +} + +void USGGloveTracker::Initialize(FSubsystemCollectionBase& Collection) +{ + SGLOG("Initializing the SenseGlove tracking singleton with the world lifetime..."); + + Super::Initialize(Collection); + + const UWorld* World{GetWorld()}; + if (ensureAlwaysMsgf(World, TEXT("Invalid world!"))) + { + SGLOG("Starting the glove connectivity check timer..."); + + const float GloveConnectivityCheckInterval = FImpl::GetGloveConnectivityCheckInterval(); + + FTimerDelegate GloveConnectivityCheckHandler; + GloveConnectivityCheckHandler.BindLambda([= SG_CAPTURE_THIS]()-> void + { + Pimpl->UpdateGloves(); + }); + + FTimerManager& TimerManager = World->GetTimerManager(); + TimerManager.SetTimer( + Pimpl->GloveConnectivityCheckTimer, GloveConnectivityCheckHandler, GloveConnectivityCheckInterval, + true, -1.0f); + + SGLOG("The glove connectivity check timer has been started successfully!"); + } + + SGLOG("The SenseGlove tracking singleton has been successfully initialized with the world lifetime!"); +} + +void USGGloveTracker::Deinitialize() +{ + SGLOG("De-initializing the SenseGlove tracking singleton due to the world lifetime expiration..."); + + Super::Deinitialize(); + + const UWorld* World{GetWorld()}; + if (ensureAlwaysMsgf(World, TEXT("Invalid world!"))) + { + SGLOG("Stopping the glove connectivity check timer..."); + + FTimerManager& TimerManager = World->GetTimerManager(); + TimerManager.ClearTimer(Pimpl->GloveConnectivityCheckTimer); + + SGLOG("The glove connectivity check timer has been stopped successfully!"); + } + + (void) Pimpl.Release(); + + SGLOG("The SenseGlove tracking singleton has been successfully de-initialized!"); +} + +USGGloveTracker::FImpl::FImpl(USGGloveTracker* InOwner) + : Owner(InOwner) +{ +} + +USGGloveTracker::FImpl::~FImpl() = default; + +void USGGloveTracker::FImpl::UpdateGloves() const +{ + if (!USGBackend::GetInstance()->IsBackendInitialized()) + { + const bool bSucceeded = USGBackend::GetInstance()->InitializeBackend(); + if (!bSucceeded) + { + return; + } + } + + const bool bIsLeftGloveConnected = USGHapticGlove::GetGlove(Owner, false, Owner->LeftGlove); + if (!bIsLeftGloveConnected) + { + Owner->LeftGlove = nullptr; + } + + const bool bIsRightGloveConnected = USGHapticGlove::GetGlove(Owner, true, Owner->RightGlove); + if (!bIsRightGloveConnected) + { + Owner->RightGlove = nullptr; + } +} + +void USGGloveTracker::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp new file mode 100644 index 0000000..61f2a19 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGHMDTracker.cpp @@ -0,0 +1,345 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTracking/SGHMDTracker.h" + +#include "Engine/Engine.h" +#include "IHeadMountedDisplay.h" +#include "IXRTrackingSystem.h" + +#include "SGSettings/SGSettings.h" + +FName FSGHMDTracker::GetDeviceName() +{ + if (GEngine && GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed()) + { + const IHeadMountedDisplay* Device{GEngine->XRSystem->GetHMDDevice()}; + if (Device) + { + const FName DeviceName{Device->GetHMDName()}; + return DeviceName; + } + } + return NAME_None; +} + +bool FSGHMDTracker::IsMetaQuest2() +{ + static const FName MetaQuest2DeviceIdentifier{TEXT("Meta Quest 2")}; + static const FName OculusQuest2DeviceIdentifier{TEXT("Oculus Quest2")}; + static const FString Quest2DeviceIdentifier1{TEXT("Quest 2")}; + static const FString Quest2DeviceIdentifier2{TEXT("Quest2")}; + + const FName DeviceName{GetDeviceName()}; + bool bMatched = DeviceName == MetaQuest2DeviceIdentifier || DeviceName == OculusQuest2DeviceIdentifier; + if (!bMatched) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bMatched = DeviceNameString.Contains(Quest2DeviceIdentifier1) + || DeviceNameString.Contains(Quest2DeviceIdentifier2); + } + + return bMatched; +} + +bool FSGHMDTracker::IsMetaQuestPro() +{ + static const FName MetaQuestProDeviceIdentifier{TEXT("Meta Quest Pro")}; + static const FName OculusQuestProDeviceIdentifier{TEXT("Oculus QuestPro")}; + static const FString QuestProDeviceIdentifier1{TEXT("Quest Pro")}; + static const FString QuestProDeviceIdentifier2{TEXT("QuestPro")}; + + const FName DeviceName{GetDeviceName()}; + bool bMatched = DeviceName == MetaQuestProDeviceIdentifier || DeviceName == OculusQuestProDeviceIdentifier; + if (!bMatched) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bMatched = DeviceNameString.Contains(QuestProDeviceIdentifier1) + || DeviceNameString.Contains(QuestProDeviceIdentifier2); + } + + return bMatched; +} + +bool FSGHMDTracker::IsMetaQuest3() +{ + static const FName MetaQuest3DeviceIdentifier{TEXT("Meta Quest 3")}; + static const FName OculusQuest3DeviceIdentifier{TEXT("Oculus Quest3")}; + static const FString Quest3DeviceIdentifier1{TEXT("Quest 3")}; + static const FString Quest3DeviceIdentifier2{TEXT("Quest3")}; + + const FName DeviceName{GetDeviceName()}; + bool bMatched = DeviceName == MetaQuest3DeviceIdentifier || DeviceName == OculusQuest3DeviceIdentifier; + if (!bMatched) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bMatched = DeviceNameString.Contains(Quest3DeviceIdentifier1) + || DeviceNameString.Contains(Quest3DeviceIdentifier2); + } + + return bMatched; +} + +bool FSGHMDTracker::IsHtcVivePro() +{ +#if PLATFORM_ANDROID + return false; +#else /* PLATFORM_ANDROID */ + static const FName DeviceIdentifier{TEXT("Vive OpenXR: Vive SRanipal")}; + static const FString ViveDeviceIdentifier{TEXT("Vive")}; + static const FString SRanipalDeviceIdentifier{TEXT("SRanipal")}; + + static const FName DeviceIdentifier2{TEXT("SteamVR/OpenXR : lighthouse")}; + static const FString LighthouseIdentifier{TEXT("lighthouse")}; + + const FName DeviceName{GetDeviceName()}; + + bool bNameMatches = DeviceName == DeviceIdentifier || DeviceName == DeviceIdentifier2; + if (!bNameMatches) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bNameMatches = DeviceNameString.Contains(ViveDeviceIdentifier) + || DeviceNameString.Contains(SRanipalDeviceIdentifier) + || DeviceNameString.Contains(LighthouseIdentifier); + } + + bool bResolutionMatches = false; + + if (bNameMatches) + { + if (GEngine && GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed()) + { + IHeadMountedDisplay* Device{GEngine->XRSystem->GetHMDDevice()}; + if (Device) + { + IHeadMountedDisplay::MonitorInfo HmdMonitorInfo; + Device->GetHMDMonitorInfo(HmdMonitorInfo); + + /// NOTE + // VIVE Pro: + // - Official Spec: 1440 x 1600 pixels per eye (2880 x 1600 pixels combined) + // - Unreal OpenXR Resolution: 4936 x 2740 + // VIVE Focus 3: + // - Official Spec: 2448 x 2448 pixels per eye (4896 x 2448 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + // VIVE XR Elite + // - Official Spec: 1920 x 1920 pixels per eye (3840 x 1920 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + if (HmdMonitorInfo.ResolutionX < 5000 && HmdMonitorInfo.ResolutionY > 2700) + { + bResolutionMatches = true; + } + } + } + } + + const bool bMatched = bNameMatches && bResolutionMatches; + + return bMatched; +#endif /* PLATFORM_ANDROID */ +} + +bool FSGHMDTracker::IsHtcViveFocus3() +{ + static const FName DeviceIdentifier{TEXT("Vive OpenXR: Vive SRanipal")}; + static const FString ViveDeviceIdentifier{TEXT("Vive")}; + static const FString SRanipalDeviceIdentifier{TEXT("SRanipal")}; + + const FName DeviceName{GetDeviceName()}; + + bool bNameMatches = DeviceName == DeviceIdentifier; + if (!bNameMatches) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bNameMatches = DeviceNameString.Contains(ViveDeviceIdentifier) + || DeviceNameString.Contains(SRanipalDeviceIdentifier); + } + + /// NOTE + /// For the time being since we cannot distinguish between VIVE Focus 3 and VIVE XR Elite using resolution checks, + /// we skip the resolution checks altogether and assume it's not a VIVE Pro, as VIVE Pro won't come with Android + /// support. +#if PLATFORM_ANDROID + bool bResolutionMatches = true; +#else /* PLATFORM_ANDROID */ + bool bResolutionMatches = false; + + if (bNameMatches) + { + if (GEngine && GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed()) + { + IHeadMountedDisplay* Device{GEngine->XRSystem->GetHMDDevice()}; + if (Device) + { + IHeadMountedDisplay::MonitorInfo HmdMonitorInfo; + Device->GetHMDMonitorInfo(HmdMonitorInfo); + + /// NOTE + // VIVE Pro: + // - Official Spec: 1440 x 1600 pixels per eye (2880 x 1600 pixels combined) + // - Unreal OpenXR Resolution: 4936 x 2740 + // VIVE Focus 3: + // - Official Spec: 2448 x 2448 pixels per eye (4896 x 2448 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + // VIVE XR Elite + // - Official Spec: 1920 x 1920 pixels per eye (3840 x 1920 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + if (HmdMonitorInfo.ResolutionX > 5000 + && (HmdMonitorInfo.ResolutionY > 2500 && HmdMonitorInfo.ResolutionY < 2700)) + { + bResolutionMatches = true; + } + } + } + } +#endif /* PLATFORM_ANDROID */ + + const bool bMatched = bNameMatches && bResolutionMatches; + + return bMatched; +} + +bool FSGHMDTracker::IsHtcViveXRElite() +{ + static const FName DeviceIdentifier{TEXT("Vive OpenXR: Vive SRanipal")}; + static const FString ViveDeviceIdentifier{TEXT("Vive")}; + static const FString SRanipalDeviceIdentifier{TEXT("SRanipal")}; + + const FName DeviceName{GetDeviceName()}; + + bool bNameMatches = DeviceName == DeviceIdentifier; + if (!bNameMatches) + { + const FString DeviceNameString{GetDeviceName().ToString()}; + bNameMatches = DeviceNameString.Contains(ViveDeviceIdentifier) + || DeviceNameString.Contains(SRanipalDeviceIdentifier); + } + + /// NOTE + /// For the time being since we cannot distinguish between VIVE Focus 3 and VIVE XR Elite using resolution checks, + /// we skip the resolution checks altogether and assume it's not a VIVE Pro, as VIVE Pro won't come with Android + /// support. +#if PLATFORM_ANDROID + bool bResolutionMatches = true; +#else /* PLATFORM_ANDROID */ + bool bResolutionMatches = false; + + if (bNameMatches) + { + if (GEngine && GEngine->XRSystem.IsValid() && GEngine->XRSystem->IsHeadTrackingAllowed()) + { + IHeadMountedDisplay* Device{GEngine->XRSystem->GetHMDDevice()}; + if (Device) + { + IHeadMountedDisplay::MonitorInfo HmdMonitorInfo; + Device->GetHMDMonitorInfo(HmdMonitorInfo); + + /// NOTE + // VIVE Pro: + // - Official Spec: 1440 x 1600 pixels per eye (2880 x 1600 pixels combined) + // - Unreal OpenXR Resolution: 4936 x 2740 + // VIVE Focus 3: + // - Official Spec: 2448 x 2448 pixels per eye (4896 x 2448 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + // VIVE XR Elite + // - Official Spec: 1920 x 1920 pixels per eye (3840 x 1920 pixels combined) + // - Unreal OpenXR Resolution: 5016 x 2508 + if (HmdMonitorInfo.ResolutionX > 5000 && + (HmdMonitorInfo.ResolutionY > 2500 && HmdMonitorInfo.ResolutionY < 2700)) + { + bResolutionMatches = true; + } + } + } + } +#endif /* PLATFORM_ANDROID */ + + const bool bMatched = bNameMatches && bResolutionMatches; + + return bMatched; +} + +ESGHeadMountedDisplayDevice FSGHMDTracker::GetDeviceType() +{ + if (IsMetaQuest2()) + { + return ESGHeadMountedDisplayDevice::MetaQuest2; + } + + if (IsMetaQuestPro()) + { + return ESGHeadMountedDisplayDevice::MetaQuestPro; + } + + if (IsMetaQuest3()) + { + return ESGHeadMountedDisplayDevice::MetaQuest3; + } + + if (IsHtcVivePro()) + { + return ESGHeadMountedDisplayDevice::HtcVivePro; + } + + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + if (Settings->GetTrackingSettings().HMDTrackingSettings.ViveHMDDetectionPriority == + ESGViveHMDDetectionPriority::HtcViveFocus3First) + { + if (IsHtcViveFocus3()) + { + return ESGHeadMountedDisplayDevice::HtcViveFocus3; + } + + if (IsHtcViveXRElite()) + { + return ESGHeadMountedDisplayDevice::HtcViveXRElite; + } + } + else + { + if (IsHtcViveXRElite()) + { + return ESGHeadMountedDisplayDevice::HtcViveXRElite; + } + + if (IsHtcViveFocus3()) + { + return ESGHeadMountedDisplayDevice::HtcViveFocus3; + } + } + + return ESGHeadMountedDisplayDevice::None; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRHandState.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRHandState.cpp new file mode 100644 index 0000000..037f57b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRHandState.cpp @@ -0,0 +1,70 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTracking/SGXRHandState.h" + +FSGXRHandState::FSGXRHandState() + : HandTracker{}, + JointLocations{}, + JointVelocities{}, + Velocities{XR_TYPE_HAND_JOINT_VELOCITIES_EXT}, + Locations{XR_TYPE_HAND_JOINT_LOCATIONS_EXT}, + KeypointTransforms{}, + Radii{}, + bReceivedJointPoses(false) +{ + Velocities.jointCount = XR_HAND_JOINT_COUNT_EXT; + Velocities.jointVelocities = JointVelocities; + + Locations.next = &Velocities; + Locations.jointCount = XR_HAND_JOINT_COUNT_EXT; + Locations.jointLocations = JointLocations; +} + +FSGXRHandState::~FSGXRHandState() = default; + +bool FSGXRHandState::GetTransform(const EHandKeypoint Keypoint, FTransform& OutTransform) const +{ + check(static_cast(Keypoint) < EHandKeypointCount); + OutTransform = KeypointTransforms[static_cast(Keypoint)]; + + return bReceivedJointPoses; +} + +const FTransform& FSGXRHandState::GetTransform(const EHandKeypoint Keypoint) const +{ + check(static_cast(Keypoint) < EHandKeypointCount); + return KeypointTransforms[static_cast(Keypoint)]; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp new file mode 100644 index 0000000..751825d --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SGTracking/SGXRTracker.cpp @@ -0,0 +1,2454 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTracking/SGXRTracker.h" + +#include "Containers/Array.h" +#include "Containers/Map.h" +#include "Engine/Engine.h" +#include "Engine/SkeletalMesh.h" +#include "Engine/World.h" +#include "GameFramework/WorldSettings.h" +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 +#include "IOpenXRHMD.h" +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ +#include "IOpenXRHMDModule.h" +#include "IXRTrackingSystem.h" +#include "OpenXRCore.h" +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3 +#include "OpenXRHMD.h" +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3 */ +#include "Runtime/Launch/Resources/Version.h" + +#include "SGCore/SGHapticGlove.h" +#include "SGLog/SGLog.h" +#include "SGSettings/SGSettings.h" +#include "SGTracking/SGGloveTracker.h" +#include "SGTracking/SGHMDTracker.h" +#include "SGTracking/SGXRHandState.h" +#include "SGTypes/SGCoreTypes.h" +#include "SGTypes/SGTrackingTypes.h" +#include "SGUtils/SGEngineUtils.h" + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3 +void EnumerateOpenXRApiLayers(TArray& OutProperties) +{ + uint32 Count = 0; + XR_ENSURE(xrEnumerateApiLayerProperties(0, &Count, nullptr)); + OutProperties.SetNum(Count); + for (auto& Prop: OutProperties) + { + Prop = XrApiLayerProperties{XR_TYPE_API_LAYER_PROPERTIES}; + } + XR_ENSURE(xrEnumerateApiLayerProperties(Count, &Count, OutProperties.GetData())); +} +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 3 */ + +struct FSGXRTracker::FImpl +{ + /************************ + * Typedefs + ************************/ + + // bool true == left, false == right + typedef TPair FSGMotionSourceInfo; + + /************************ + * Static methods + ************************/ + + /** + * Parses the enum name removing the prefix. + */ + static FName GetHandKeypointEnumName(const EHandKeypoint HandKeypoint); + + FORCEINLINE static FName GetHandKeypointEnumName(const int32 HandKeypointIndex) + { + return GetHandKeypointEnumName(static_cast(HandKeypointIndex)); + } + + static FName GetControllerHandEnumName(const EControllerHand ControllerHand); + + FORCEINLINE static bool ShouldFallbackToHandTrackingIfNoGloveDetected() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + const bool bFallbackToHandTrackingIfNoGloveDetected = + Settings->GetTrackingSettings().bFallbackToHandTrackingIfNoGloveDetected; + return bFallbackToHandTrackingIfNoGloveDetected; + } + + FORCEINLINE static bool ShouldUseMoreSpecificMotionSourceNames() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + const bool bFallbackToHandTrackingIfNoGloveDetected = ShouldFallbackToHandTrackingIfNoGloveDetected(); + const bool bUseMoreSpecificMotionSourceNames = + bFallbackToHandTrackingIfNoGloveDetected + ? Settings->GetTrackingSettings().HandTrackingSettings.bUseMoreSpecificMotionSourceNames + : false; + return bUseMoreSpecificMotionSourceNames; + } + + FORCEINLINE static bool ShouldSupportLegacyControllerMotionSources() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + const bool bFallbackToHandTrackingIfNoGloveDetected = ShouldFallbackToHandTrackingIfNoGloveDetected(); + const bool bSupportLegacyControllerMotionSources = + bFallbackToHandTrackingIfNoGloveDetected + ? Settings->GetTrackingSettings().HandTrackingSettings.bSupportLegacyControllerMotionSources + : false; + return bSupportLegacyControllerMotionSources; + } + + FORCEINLINE static const FSGHandTrackingSettings& GetHandTrackingSettings() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + return Settings->GetTrackingSettings().HandTrackingSettings; + } + + FORCEINLINE static const FSGVirtualHandSettings& GetVirtualHandSettings() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + return Settings->GetVirtualHandSettings(); + } + + FORCEINLINE static const FSGWristTrackingSettings& GetWristTrackingSettings() + { + const USGSettings* Settings{USGSettings::GetInstance()}; + ensureAlwaysMsgf(Settings, TEXT("The settings subsystem has not been initialized!")); + return Settings->GetTrackingSettings().WristTrackingSettings; + } + + FORCEINLINE static const FName& GetDefaultLeftHandTrackingMotionSourceName() + { + static const FName Name(TEXT("Left")); + return Name; + } + + FORCEINLINE static const FName& GetDefaultRightHandTrackingMotionSourceName() + { + static const FName Name(TEXT("Right")); + return Name; + } + + FORCEINLINE static const FName& GetDefaultHandTrackingMotionSourceName(const EControllerHand Hand) + { + const FName& Name{ + Hand == EControllerHand::Right + ? GetDefaultRightHandTrackingMotionSourceName() + : GetDefaultLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetDefaultHandTrackingMotionSourceName(const bool bRight) + { + const FName& Name{ + bRight + ? GetDefaultRightHandTrackingMotionSourceName() + : GetDefaultLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetLegacyControllerLeftHandTrackingMotionSourceName() + { + static const FName Name(TEXT("Left")); + return Name; + } + + FORCEINLINE static const FName& GetLegacyControllerRightHandTrackingMotionSourceName() + { + static const FName Name(TEXT("Right")); + return Name; + } + + FORCEINLINE static const FName& GetLegacyControllerHandTrackingMotionSourceName(const EControllerHand Hand) + { + const FName& Name{ + Hand == EControllerHand::Right + ? GetLegacyControllerRightHandTrackingMotionSourceName() + : GetLegacyControllerLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetLegacyControllerHandTrackingMotionSourceName(const bool bRight) + { + const FName& Name{ + bRight + ? GetLegacyControllerRightHandTrackingMotionSourceName() + : GetLegacyControllerLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetMoreSpecificLeftHandTrackingMotionSourceName() + { + static const FName Name(TEXT("HandTrackingLeft")); + return Name; + } + + FORCEINLINE static const FName& GetMoreSpecificRightHandTrackingMotionSourceName() + { + static const FName Name(TEXT("HandTrackingRight")); + return Name; + } + + FORCEINLINE static const FName& GetMoreSpecificHandTrackingMotionSourceName(const EControllerHand Hand) + { + const FName& Name{ + Hand == EControllerHand::Right + ? GetMoreSpecificRightHandTrackingMotionSourceName() + : GetMoreSpecificLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetMoreSpecificHandTrackingMotionSourceName(const bool bRight) + { + const FName& Name{ + bRight + ? GetMoreSpecificRightHandTrackingMotionSourceName() + : GetMoreSpecificLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetLeftHandTrackingMotionSourceName() + { + const bool bUseMoreSpecificMotionSourceNames = ShouldUseMoreSpecificMotionSourceNames(); + const FName& Name{ + bUseMoreSpecificMotionSourceNames + ? GetMoreSpecificLeftHandTrackingMotionSourceName() + : GetDefaultLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetRightHandTrackingMotionSourceName() + { + const bool bUseMoreSpecificMotionSourceNames = ShouldUseMoreSpecificMotionSourceNames(); + const FName& Name{ + bUseMoreSpecificMotionSourceNames + ? GetMoreSpecificRightHandTrackingMotionSourceName() + : GetDefaultRightHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static const FName& GetHandTrackingMotionSourceName(const EControllerHand Hand) + { + const FName& Name{ + Hand == EControllerHand::Right + ? GetRightHandTrackingMotionSourceName() + : GetLeftHandTrackingMotionSourceName()}; + return Name; + } + + FORCEINLINE static const FName& GetHandTrackingMotionSourceName(const bool bRight) + { + const FName& Name{ + bRight + ? GetRightHandTrackingMotionSourceName() + : GetLeftHandTrackingMotionSourceName() + }; + return Name; + } + + FORCEINLINE static FName GetLeftPositionalTrackingHardwareMotionSourceName() + { + const FName Name{ + GetControllerHandEnumName(GetWristTrackingSettings().LeftHandMotionSource) + }; + return Name; + } + + FORCEINLINE static FName GetRightPositionalTrackingHardwareMotionSourceName() + { + const FName Name{ + GetControllerHandEnumName(GetWristTrackingSettings().RightHandMotionSource) + }; + return Name; + } + + FORCEINLINE static FName GetPositionalTrackingHardwareMotionSourceName(const EControllerHand Hand) + { + const FName Name{ + Hand == EControllerHand::Right + ? GetRightPositionalTrackingHardwareMotionSourceName() + : GetLeftPositionalTrackingHardwareMotionSourceName()}; + return Name; + } + + FORCEINLINE static FName GetPositionalTrackingHardwareMotionSourceName(const bool bRight) + { + const FName& Name{ + bRight + ? GetRightPositionalTrackingHardwareMotionSourceName() + : GetLeftPositionalTrackingHardwareMotionSourceName() + }; + return Name; + } + + static ESGPositionalTrackingHardware GetPositionalTrackingHardware(); + + FORCEINLINE static USGHapticGlove* GetGlove(const EControllerHand Hand) + { + const bool bRight = Hand == EControllerHand::Right; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->GetGlove(bRight) : nullptr; + } + + FORCEINLINE static USGHapticGlove* GetGlove(const bool bRight) + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->GetGlove(bRight) : nullptr; + } + + FORCEINLINE static USGHapticGlove* GetLeftGlove() + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->GetLeftGlove() : nullptr; + } + + FORCEINLINE static USGHapticGlove* GetRightGlove() + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->GetRightGlove() : nullptr; + } + + FORCEINLINE static bool IsGloveConnected(const EControllerHand Hand) + { + const bool bRight = Hand == EControllerHand::Right; + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->IsGloveConnected(bRight) : false; + } + + FORCEINLINE static bool IsGloveConnected(const bool bRight) + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->IsGloveConnected(bRight) : false; + } + + FORCEINLINE static bool IsLeftGloveConnected() + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->IsLeftGloveConnected() : false; + } + + FORCEINLINE static bool IsRightGloveConnected() + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->IsRightGloveConnected() : false; + } + + FORCEINLINE static bool IsAnyGloveConnected() + { + const USGGloveTracker* GloveTracker{USGGloveTracker::GetInstance()}; + return IsValid(GloveTracker) ? GloveTracker->IsAnyGloveConnected() : false; + } + + static TArray GetFingerLengths( + bool bRight, + EHandKeypoint Joint2nd, EHandKeypoint Joint3rd, + float DistalPhalanxLength); + + static TArray> GetFingerLengths(bool bRight); + static TArray GetFingerStartTransforms(bool bRight); + static TArray GetFingerStartPositions(bool bRight); + static TArray GetFingerStartRotations(bool bRight); + static USGBasicHandModel* GetHandModel(bool bRight); + + FORCEINLINE static USGBasicHandModel* GetHandModel(const EControllerHand Hand) + { + const bool bRight = Hand == EControllerHand::Right; + USGBasicHandModel* HandModel{GetHandModel(bRight)}; + return HandModel; + } + + static USGHandPose* GetHandPose(bool bRight); + + FORCEINLINE static USGHandPose* GetHandPose(const EControllerHand Hand) + { + const bool bRight = Hand == EControllerHand::Right; + USGHandPose* HandPose{GetHandPose(bRight)}; + return HandPose; + } + + FORCEINLINE static const FName& GetLeftMeshBoneName(const int32 JointIndex) + { + const FName& Name{GetVirtualHandSettings().MeshSettings.LeftHandBoneNames[JointIndex]}; + return Name; + } + + FORCEINLINE static const FName& GetLeftMeshBoneName(const EHandKeypoint HandKeypoint) + { + const int32 JointIndex = static_cast(HandKeypoint); + const FName& Name{GetLeftMeshBoneName(JointIndex)}; + return Name; + } + + FORCEINLINE static const FName& GetRightMeshBoneName(const int32 JointIndex) + { + const FName& Name{GetVirtualHandSettings().MeshSettings.RightHandBoneNames[JointIndex]}; + return Name; + } + + FORCEINLINE static const FName& GetRightMeshBoneName(const EHandKeypoint HandKeypoint) + { + const int32 JointIndex = static_cast(HandKeypoint); + const FName& Name{GetRightMeshBoneName(JointIndex)}; + return Name; + } + + FORCEINLINE static const FName& GetMeshBoneName(const bool bRight, const int32 Joint) + { + const FName& Name{ + bRight + ? GetRightMeshBoneName(Joint) + : GetLeftMeshBoneName(Joint) + }; + return Name; + } + + FORCEINLINE static const FName& GetMeshBoneName(const bool bRight, const EHandKeypoint HandKeypoint) + { + const int32 JointIndex = static_cast(HandKeypoint); + const FName& Name{GetMeshBoneName(bRight, JointIndex)}; + return Name; + } + + FORCEINLINE static const FName& GetMeshBoneName(const EControllerHand Hand, const int32 JointIndex) + { + const bool bRight = Hand == EControllerHand::Right; + const FName& Name{GetMeshBoneName(bRight, JointIndex)}; + return Name; + } + + static FTransform GetMeshRawBoneRefTransform(bool bRight, const FName& BoneName); + + FORCEINLINE static FTransform GetMeshRawBoneRefTransform(const bool bRight, const int32 JointIndex) + { + const FName& BoneName{GetMeshBoneName(bRight, JointIndex)}; + const FTransform& Transform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshRawBoneRefTransform(const bool bRight, const EHandKeypoint Keypoint) + { + const FName& BoneName{GetMeshBoneName(bRight, Keypoint)}; + const FTransform& Transform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshRawBoneRefTransform(const EControllerHand Hand, const FName& BoneName) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform& Transform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshRawBoneRefTransform(const EControllerHand Hand, const int32 JointIndex) + { + const bool bRight = Hand == EControllerHand::Right; + const FName& BoneName{GetMeshBoneName(bRight, JointIndex)}; + const FTransform& Transform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshRawBoneRefTransform( + const EControllerHand Hand, const EHandKeypoint Keypoint) + { + const bool bRight = Hand == EControllerHand::Right; + const FName& BoneName{GetMeshBoneName(bRight, Keypoint)}; + const FTransform& Transform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + static FTransform GetMeshWristChildBoneRefTransform(bool bRight, const FName& BoneName); + + FORCEINLINE static FTransform GetMeshWristChildBoneRefTransform( + const bool bRight, const int32 JointIndex) + { + const FName& BoneName{GetMeshBoneName(bRight, JointIndex)}; + const FTransform Transform{GetMeshWristChildBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshWristChildBoneRefTransform( + const bool bRight, const EHandKeypoint Keypoint) + { + const FName& BoneName{GetMeshBoneName(bRight, Keypoint)}; + const FTransform Transform{GetMeshWristChildBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshWristChildBoneRefTransform( + const EControllerHand Hand, const FName& BoneName) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshWristChildBoneRefTransform(bRight, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshWristChildBoneRefTransform( + const EControllerHand Hand, const int32 JointIndex) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshWristChildBoneRefTransform(bRight, JointIndex)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshWristChildBoneRefTransform( + const EControllerHand Hand, const EHandKeypoint Keypoint) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshWristChildBoneRefTransform(bRight, Keypoint)}; + return Transform; + } + + static FTransform GetMeshFingerStartBoneRefTransform( + bool bRight, EHandKeypoint Parent, const FName& BoneName); + + FORCEINLINE static FTransform GetMeshFingerStartBoneRefTransform( + const bool bRight, const EHandKeypoint Parent, const int32 JointIndex) + { + const FName& BoneName{GetMeshBoneName(bRight, JointIndex)}; + const FTransform Transform{GetMeshFingerStartBoneRefTransform(bRight, Parent, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshFingerStartBoneRefTransform( + const bool bRight, const EHandKeypoint Parent, const EHandKeypoint Keypoint) + { + const FName& BoneName{GetMeshBoneName(bRight, Keypoint)}; + const FTransform Transform{GetMeshFingerStartBoneRefTransform(bRight, Parent, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshFingerStartBoneRefTransform( + const EControllerHand Hand, const EHandKeypoint Parent, const FName& BoneName) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshFingerStartBoneRefTransform(bRight, Parent, BoneName)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshFingerStartBoneRefTransform( + const EControllerHand Hand, const EHandKeypoint Parent, const int32 JointIndex) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshFingerStartBoneRefTransform(bRight, Parent, JointIndex)}; + return Transform; + } + + FORCEINLINE static FTransform GetMeshFingerStartBoneRefTransform( + const EControllerHand Hand, const EHandKeypoint Parent, const EHandKeypoint Keypoint) + { + const bool bRight = Hand == EControllerHand::Right; + const FTransform Transform{GetMeshFingerStartBoneRefTransform(bRight, Parent, Keypoint)}; + return Transform; + } + + /************************ + * Member variables + ************************/ + + bool bHandTrackingAvailable; + + PFN_xrCreateHandTrackerEXT XRCreateHandTrackerEXT; + PFN_xrDestroyHandTrackerEXT XRDestroyHandTrackerEXT; + PFN_xrLocateHandJointsEXT XRLocateHandJointsEXT; + + IXRTrackingSystem* XRTrackingSystem; + + TSharedPtr MessageHandler; + int32 DeviceIndex; + + int32 CurrentHandTrackingDataIndex; + + TArray BoneParents; + TArray BoneKeypoints; + TMap MotionSourceToKeypointMap; + + FSGXRHandState HandStates[2]; + + TArray LeftAnimationTransforms; + TArray RightAnimationTransforms; + + /************************ + * Owner object + ************************/ + + FSGXRTracker* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSGXRTracker* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = delete; + FImpl& operator=(const FImpl& Rhs) = delete; + + /************************ + * Methods + ************************/ + + FORCEINLINE const FSGXRHandState& GetLeftHandState() const + { + return HandStates[0]; + } + + FORCEINLINE FSGXRHandState& GetLeftHandState() + { + return HandStates[0]; + } + + FORCEINLINE const FSGXRHandState& GetRightHandState() const + { + return HandStates[1]; + } + + FORCEINLINE FSGXRHandState& GetRightHandState() + { + return HandStates[1]; + } + + void BuildMotionSourceToKeypointMap(); + + bool CanOutputTrackingData(EControllerHand Hand) const; + + bool UpdateXRHandTrackingData(FSGXRHandState& OutHandState, const XrHandJointsLocateInfoEXT& LocateInfo) const; + + bool GetControllerTransform(const FName MotionSource, const float WorldToMetersScale, + FTransform& OutTransform, bool& bOutMotionSourceHandTracking) const; + + bool GetWristTransform(bool bRight, FTransform& OutTransform) const; + + bool UpdateSGJointData(FSGXRHandState& OutHandState, const EHandKeypoint Joint, + const FTransform& JointTransform, const FTransform& WristTransform) const; + + bool UpdateSGWristJointData(FSGXRHandState& OutHandState, const FTransform& WristTransform) const; + + bool UpdateSGPalmJointData(FSGXRHandState& OutHandState, bool bRight, const FTransform& WristTransform) const; + + bool UpdateSGThumbJointData( + FSGXRHandState& OutHandState, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const; + + bool UpdateSGIndexJointData( + FSGXRHandState& OutHandState, bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const; + + bool UpdateSGMiddleJointData( + FSGXRHandState& OutHandState, bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const; + + bool UpdateSGRingJointData( + FSGXRHandState& OutHandState, bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const; + + bool UpdateSGLittleJointData( + FSGXRHandState& OutHandState, bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const; + + bool UpdateSGHandState(bool bRight, FSGXRHandState& OutHandState) const; +}; + +FName FSGXRTracker::FImpl::GetHandKeypointEnumName(const EHandKeypoint HandKeypoint) +{ + static UEnum* EnumPtr{StaticEnum()}; + ensureAlwaysMsgf(EnumPtr, TEXT("Failed to find the EHandKeypoint enum!")); + static const int32 EnumNameLength = FString{TEXT("EHandKeypoint::")}.Len(); + + const FName EnumItemName{ + EnumPtr->GetNameByValue(static_cast(HandKeypoint)) + }; + const FString EnumItemString{EnumItemName.ToString()}; + const int32 EnumItemStringLength = EnumItemString.Len(); + const int32 EnumItemNameLength = EnumItemStringLength - EnumNameLength; + + const FName ParsedName{*EnumItemString.Right(EnumItemNameLength)}; + return ParsedName; +} + +FName FSGXRTracker::FImpl::GetControllerHandEnumName(const EControllerHand ControllerHand) +{ + static UEnum* EnumPtr{StaticEnum()}; + ensureAlwaysMsgf(EnumPtr, TEXT("Failed to find the EControllerHand enum!")); + static const int32 EnumNameLength = FString{TEXT("EControllerHand::")}.Len(); + + const FName EnumItemName{ + EnumPtr->GetNameByValue(static_cast(ControllerHand)) + }; + const FString EnumItemString{EnumItemName.ToString()}; + const int32 EnumItemStringLength = EnumItemString.Len(); + const int32 EnumItemNameLength = EnumItemStringLength - EnumNameLength; + + const FName ParsedName{*EnumItemString.Right(EnumItemNameLength)}; + return ParsedName; +} + +ESGPositionalTrackingHardware FSGXRTracker::FImpl::GetPositionalTrackingHardware() +{ + ESGPositionalTrackingHardware TrackerHardware = GetWristTrackingSettings().TrackingHardware; + + if (TrackerHardware == ESGPositionalTrackingHardware::None) + { + const ESGHeadMountedDisplayDevice HmdDevice = FSGHMDTracker::GetDeviceType(); + switch (HmdDevice) + { + case ESGHeadMountedDisplayDevice::MetaQuest2: + TrackerHardware = ESGPositionalTrackingHardware::Quest2Controller; + break; + case ESGHeadMountedDisplayDevice::MetaQuestPro: + TrackerHardware = ESGPositionalTrackingHardware::QuestProController; + break; + case ESGHeadMountedDisplayDevice::MetaQuest3: + TrackerHardware = ESGPositionalTrackingHardware::Quest3Controller; + break; + case ESGHeadMountedDisplayDevice::HtcVivePro: + TrackerHardware = ESGPositionalTrackingHardware::ViveTracker; + break; + case ESGHeadMountedDisplayDevice::HtcViveFocus3: + // Fall through + case ESGHeadMountedDisplayDevice::HtcViveXRElite: + TrackerHardware = ESGPositionalTrackingHardware::ViveFocus3WristTracker; + break; + default: + TrackerHardware = ESGPositionalTrackingHardware::Custom; + break; + } + } + + return TrackerHardware; +} + +TArray FSGXRTracker::FImpl::GetFingerLengths( + const bool bRight, + const EHandKeypoint Joint2nd, const EHandKeypoint Joint3rd, + const float DistalPhalanxLength) +{ + const FTransform& Joint2ndTransform{GetMeshRawBoneRefTransform(bRight, Joint2nd)}; + const FVector& Joint2ndLocation{Joint2ndTransform.GetLocation()}; + const FTransform& Joint3rdTransform{GetMeshRawBoneRefTransform(bRight, Joint3rd)}; + const FVector& Joint3rdLocation{Joint3rdTransform.GetLocation()}; + + const float PhalanxLength1st = static_cast(Joint2ndLocation.Size()); + const float PhalanxLength2nd = static_cast(Joint3rdLocation.Size()); + + const TArray Lengths{PhalanxLength1st, PhalanxLength2nd, DistalPhalanxLength}; + return Lengths; +} + +TArray> FSGXRTracker::FImpl::GetFingerLengths(const bool bRight) +{ + const FSGVirtualHandSettings& Settings{GetVirtualHandSettings()}; + + const TArray> Lengths{ + GetFingerLengths(bRight, + EHandKeypoint::ThumbProximal, + EHandKeypoint::ThumbDistal, + Settings.MeshSettings.DistalPhalangesLengthSettings.Thumb + ), + GetFingerLengths(bRight, + EHandKeypoint::IndexIntermediate, + EHandKeypoint::IndexDistal, + Settings.MeshSettings.DistalPhalangesLengthSettings.Index + ), + GetFingerLengths(bRight, + EHandKeypoint::MiddleIntermediate, + EHandKeypoint::MiddleDistal, + Settings.MeshSettings.DistalPhalangesLengthSettings.Middle + ), + GetFingerLengths(bRight, + EHandKeypoint::RingIntermediate, + EHandKeypoint::RingDistal, + Settings.MeshSettings.DistalPhalangesLengthSettings.Ring + ), + GetFingerLengths(bRight, + EHandKeypoint::LittleIntermediate, + EHandKeypoint::LittleDistal, + Settings.MeshSettings.DistalPhalangesLengthSettings.Little + ), + }; + + return Lengths; +} + +TArray FSGXRTracker::FImpl::GetFingerStartTransforms(const bool bRight) +{ + FTransform ThumbStartTransform{ + GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::ThumbMetacarpal).GetLocation() + }; + + FTransform IndexStartTransform{ + GetMeshFingerStartBoneRefTransform(bRight, EHandKeypoint::IndexMetacarpal, EHandKeypoint::IndexProximal) + }; + + FTransform MiddleStartTransform{ + GetMeshFingerStartBoneRefTransform(bRight, EHandKeypoint::MiddleMetacarpal, EHandKeypoint::MiddleProximal) + }; + + FTransform RingStartTransform{ + GetMeshFingerStartBoneRefTransform(bRight, EHandKeypoint::RingMetacarpal, EHandKeypoint::RingProximal) + }; + + FTransform LittleStartTransform{ + GetMeshFingerStartBoneRefTransform(bRight, EHandKeypoint::LittleMetacarpal, EHandKeypoint::LittleProximal) + }; + + TArray Transforms{ + MoveTemp(ThumbStartTransform), + MoveTemp(IndexStartTransform), + MoveTemp(MiddleStartTransform), + MoveTemp(RingStartTransform), + MoveTemp(LittleStartTransform), + }; + + return Transforms; +} + +TArray FSGXRTracker::FImpl::GetFingerStartPositions(const bool bRight) +{ + const TArray StartTransforms{GetFingerStartTransforms(bRight)}; + + ensureAlwaysMsgf(StartTransforms.Num() == 5, TEXT("Invalid number of finger start transforms!")); + + const TArray StartPositions{ + StartTransforms[0].GetLocation(), + StartTransforms[1].GetLocation(), + StartTransforms[2].GetLocation(), + StartTransforms[3].GetLocation(), + StartTransforms[4].GetLocation(), + }; + + return StartPositions; +} + +TArray FSGXRTracker::FImpl::GetFingerStartRotations(const bool bRight) +{ + const TArray StartRotations{ + FQuat::Identity, + FQuat::Identity, + FQuat::Identity, + FQuat::Identity, + FQuat::Identity, + }; + + return StartRotations; +} + +USGBasicHandModel* FSGXRTracker::FImpl::GetHandModel(const bool bRight) +{ + const TArray> FingerLengths{GetFingerLengths(bRight)}; + const TArray StartPositions{GetFingerStartPositions(bRight)}; + const TArray StartRotations{GetFingerStartRotations(bRight)}; + + UWorld* World{FSGEngineUtils::GetWorld()}; + + USGBasicHandModel* HandModel{ + USGBasicHandModel::NewBasicHandModel(World, bRight, FingerLengths, StartPositions, StartRotations) + }; + + return HandModel; +} + +USGHandPose* FSGXRTracker::FImpl::GetHandPose(const bool bRight) +{ + const USGHapticGlove* Glove{GetGlove(bRight)}; + if (!IsValid(Glove)) + { + return nullptr; + } + + UWorld* World{FSGEngineUtils::GetWorld()}; + const USGBasicHandModel* HandModel{GetHandModel(bRight)}; + USGHandPose* HandPose{nullptr}; + + const bool bGotHandPose = Glove->GetHandPose(World, HandModel, HandPose); + if (!bGotHandPose || !IsValid(HandPose)) + { + return nullptr; + } + + return HandPose; +} + +FTransform FSGXRTracker::FImpl::GetMeshRawBoneRefTransform(const bool bRight, const FName& BoneName) +{ + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings}; + + const TSoftObjectPtr& HandMesh{ + bRight + ? MeshSettings.LeftHandReferenceMesh + : MeshSettings.RightHandReferenceMesh + }; + + if (HandMesh.IsValid()) + { + const FReferenceSkeleton& ReferenceSkeleton{HandMesh->GetRefSkeleton()}; + const int32 BoneIndex = ReferenceSkeleton.FindBoneIndex(BoneName); + + if (BoneIndex == INDEX_NONE) + { + SGLOG_WARNING(FString::Printf(TEXT("Could not find a bone index for the '%s' joint!"), + *BoneName.ToString())); + } + + const TArray Transforms{ReferenceSkeleton.GetRefBonePose()}; + ensureAlwaysMsgf(Transforms.Num() > 0 && Transforms.Num() > BoneIndex, + TEXT("Invalid bone index '%d' or no transforms found!"), BoneIndex); + + const FTransform& Transform{Transforms[BoneIndex]}; + return Transform; + } + + ensureAlwaysMsgf( + bRight + ? MeshSettings.RightHandDefaultReferenceBoneTransforms.Contains(BoneName) + : MeshSettings.LeftHandDefaultReferenceBoneTransforms.Contains(BoneName), + TEXT("Invalid bone name '%s'!"), *BoneName.ToString()); + + const FTransform& Transform{ + bRight + ? MeshSettings.RightHandDefaultReferenceBoneTransforms[BoneName] + : MeshSettings.LeftHandDefaultReferenceBoneTransforms[BoneName] + }; + return Transform; +} + +FTransform FSGXRTracker::FImpl::GetMeshWristChildBoneRefTransform(const bool bRight, const FName& BoneName) +{ + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings}; + FQuat RootRotationCorrection{MeshSettings.RootBoneRotationCorrection}; + const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)}; + const FTransform& RawTransform{GetMeshRawBoneRefTransform(bRight, BoneName)}; + FQuat CorrectedRootBoneRefRotation{MoveTemp(RootRotationCorrection) * RootBoneRefTransform.GetRotation()}; + FVector CorrectedLocation{MoveTemp(CorrectedRootBoneRefRotation) * RawTransform.GetLocation()}; + + const FTransform Transform{RawTransform.GetRotation(), MoveTemp(CorrectedLocation)}; + return Transform; +} + +FTransform FSGXRTracker::FImpl::GetMeshFingerStartBoneRefTransform( + const bool bRight, const EHandKeypoint Parent, const FName& BoneName) +{ + const FSGVirtualHandMeshSettings& MeshSettings{GetVirtualHandSettings().MeshSettings}; + FQuat RootRotationCorrection{MeshSettings.RootBoneRotationCorrection}; + const FTransform& RootBoneRefTransform{GetMeshRawBoneRefTransform(bRight, EHandKeypoint::Wrist)}; + FQuat CorrectedRootBoneRefRotation{MoveTemp(RootRotationCorrection) * RootBoneRefTransform.GetRotation()}; + FTransform CorrectedRootBoneRefTransform{ + MoveTemp(CorrectedRootBoneRefRotation), RootBoneRefTransform.GetLocation() + }; + + FTransform ParentBoneRefTransform{ + GetMeshRawBoneRefTransform(bRight, Parent) * MoveTemp(CorrectedRootBoneRefTransform) + }; + + const FTransform Transform{GetMeshRawBoneRefTransform(bRight, BoneName) * MoveTemp(ParentBoneRefTransform)}; + return Transform; +} + +bool FSGXRTracker::GetMotionControllerData( + UObject* WorldContextObject, const EControllerHand Hand, FXRMotionControllerData& OutMotionControllerData) +{ + OutMotionControllerData.DeviceName = NAME_None; + OutMotionControllerData.ApplicationInstanceID = FApp::GetInstanceId(); + OutMotionControllerData.DeviceVisualType = EXRVisualType::Controller; + OutMotionControllerData.TrackingStatus = ETrackingStatus::NotTracked; + OutMotionControllerData.HandIndex = Hand; + OutMotionControllerData.bValid = false; + + if (!IsValid(WorldContextObject)) + { + return false; + } + + IXRTrackingSystem* XRTrackingSystem{GEngine ? GEngine->XRSystem.Get() : nullptr}; + if (!XRTrackingSystem) + { + return false; + } + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 + IOpenXRHMD* OpenXRHMD{XRTrackingSystem->GetIOpenXRHMD()}; +#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ + FOpenXRHMD* OpenXRHMD{static_cast(GEngine->XRSystem.Get())}; +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 4 */ + if (!OpenXRHMD) + { + return false; + } + + TArray Devices; + const int32 HandIndex = static_cast(Hand); + const bool bGotDevices = + XRTrackingSystem->EnumerateTrackedDevices(Devices, EXRTrackedDeviceType::Controller); + if (bGotDevices && Devices.IsValidIndex(HandIndex)) + { + const XrSession Session{OpenXRHMD->GetSession()}; + if (Session) + { + XrInteractionProfileState Profile = {XR_TYPE_INTERACTION_PROFILE_STATE}; + const XrPath TopLevelUserPath{OpenXRHMD->GetTrackedDevicePath(Devices[HandIndex])}; + const XrResult CurrentInteractionProfile{ + xrGetCurrentInteractionProfile(Session, TopLevelUserPath, &Profile) + }; + if (XR_SUCCEEDED(CurrentInteractionProfile) && Profile.interactionProfile != XR_NULL_PATH) + { + OutMotionControllerData.DeviceName = FOpenXRPath(Profile.interactionProfile); + } + } + } + + static const FName HandTrackerName{"OpenXRHandTracking"}; + TArray HandTrackers = IModularFeatures::Get().GetModularFeatureImplementations( + IHandTracker::GetModularFeatureName()); + IHandTracker* HandTracker{nullptr}; + for (IHandTracker* HandTrackerIterator: HandTrackers) + { + if (!HandTrackerIterator) + { + continue; + } + + const FName DeviceTypeName{HandTrackerIterator->GetHandTrackerDeviceTypeName()}; + if (DeviceTypeName != HandTrackerName) + { + continue; + } + + FSGXRTracker* SGXRTracker{static_cast(HandTrackerIterator)}; + if (!SGXRTracker) + { + continue; + } + + HandTracker = SGXRTracker; + break; + } + + if (Hand == EControllerHand::Left || Hand == EControllerHand::Right) + { + static const FName MotionControllerName("OpenXR"); + TArray MotionControllers{ + IModularFeatures::Get().GetModularFeatureImplementations( + IMotionController::GetModularFeatureName()) + }; + IMotionController* MotionController{nullptr}; + for (IMotionController* MotionControllerIterator: MotionControllers) + { + if (!MotionControllerIterator) + { + continue; + } + + const FName DeviceTypeName{MotionControllerIterator->GetMotionControllerDeviceTypeName()}; + if (DeviceTypeName != MotionControllerName) + { + continue; + } + + MotionController = MotionControllerIterator; + break; + } + + const float WorldToMeters = XRTrackingSystem->GetWorldToMetersScale(); + if (MotionController) + { + const FTransform TrackingToWorld{XRTrackingSystem->GetTrackingToWorldTransform()}; + + { + const FName AimSource{Hand == EControllerHand::Left ? FName{TEXT("LeftAim")} : FName{TEXT("RightAim")}}; + FRotator AimSourceRotation; + FVector AimSourcePosition; + const bool bGotAimOrientationAndPosition = + MotionController->GetControllerOrientationAndPosition( + 0, AimSource, AimSourceRotation, AimSourcePosition, WorldToMeters); + if (bGotAimOrientationAndPosition) + { + OutMotionControllerData.AimPosition = TrackingToWorld.TransformPosition(AimSourcePosition); + OutMotionControllerData.AimRotation = + TrackingToWorld.TransformRotation(AimSourceRotation.Quaternion()); + } + OutMotionControllerData.bValid |= bGotAimOrientationAndPosition; + } + + const FName GripSource{Hand == EControllerHand::Left ? FName{TEXT("LeftGrip")} : FName{TEXT("RightGrip")}}; + { + FRotator GripRotation; + FVector GripPosition; + const bool bGotGripSourceOrientationAndPosition = + MotionController->GetControllerOrientationAndPosition( + 0, GripSource, GripRotation, GripPosition, WorldToMeters); + if (bGotGripSourceOrientationAndPosition) + { + OutMotionControllerData.GripPosition = TrackingToWorld.TransformPosition(GripPosition); + OutMotionControllerData.GripRotation = + TrackingToWorld.TransformRotation(GripRotation.Quaternion()); + } + OutMotionControllerData.bValid |= bGotGripSourceOrientationAndPosition; + } + + { + const FName PalmSource{ + Hand == EControllerHand::Left ? FName{TEXT("LeftPalm")} : FName{TEXT("RightPalm")} + }; + FRotator PalmRotation; + FVector PalmPosition; + const bool bGotPalmOrientationAndPosition = MotionController->GetControllerOrientationAndPosition( + 0, PalmSource, PalmRotation, PalmPosition, WorldToMeters); + if (bGotPalmOrientationAndPosition) + { + OutMotionControllerData.GripPosition = TrackingToWorld.TransformPosition(PalmPosition); + OutMotionControllerData.GripRotation = + TrackingToWorld.TransformRotation(PalmRotation.Quaternion()); + } + OutMotionControllerData.bValid |= bGotPalmOrientationAndPosition; + } + + OutMotionControllerData.TrackingStatus = MotionController->GetControllerTrackingStatus(0, GripSource); + } + + const bool bHandTrackingStateValid = HandTracker && HandTracker->IsHandTrackingStateValid(); + if (bHandTrackingStateValid) + { + OutMotionControllerData.DeviceVisualType = EXRVisualType::Hand; + + OutMotionControllerData.bValid = HandTracker->GetAllKeypointStates( + Hand, OutMotionControllerData.HandKeyPositions, OutMotionControllerData.HandKeyRotations, + OutMotionControllerData.HandKeyRadii); + + if (!ensureAlwaysMsgf( + !OutMotionControllerData.bValid + || (OutMotionControllerData.HandKeyPositions.Num() == EHandKeypointCount + && OutMotionControllerData.HandKeyRotations.Num() == EHandKeypointCount + && OutMotionControllerData.HandKeyRadii.Num() == EHandKeypointCount), + TEXT("Corrupted OutMotionControllerData!"))) + { + OutMotionControllerData.bValid = false; + return false; + } + } + } + + if (OutMotionControllerData.bValid) + { + OutMotionControllerData.TrackingStatus = ETrackingStatus::Tracked; + } + + /// TODO + // This is reportedly a WMR-specific convenience function for rapid prototyping. Not sure if it's useful for OpenXR. + OutMotionControllerData.bIsGrasped = false; + + return OutMotionControllerData.bValid; +} + +FSGXRTracker::FSGXRTracker(const TSharedRef& InMessageHandler) + : Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ + Pimpl->MessageHandler = InMessageHandler; + + // Register the modular features manually. + IModularFeatures::Get().RegisterModularFeature(IHandTracker::GetModularFeatureName(), + static_cast(this)); + IModularFeatures::Get().RegisterModularFeature(IMotionController::GetModularFeatureName(), + static_cast(this)); + IModularFeatures::Get().RegisterModularFeature(IOpenXRExtensionPlugin::GetModularFeatureName(), + static_cast(this)); + + // We're implicitly requiring that the OpenXRPlugin has been loaded and initialized at this point. + if (!IOpenXRHMDModule::Get().IsAvailable()) + { + SGLOG_FATAL("The OpenXRHMD plugin isn't available!"); + ensureAlwaysMsgf(false, TEXT("The OpenXRHMD plugin isn't available!")); + } +} + +FSGXRTracker::FSGXRTracker(FSGXRTracker&& Rhs) SG_NOEXCEPT = default; + +FSGXRTracker::~FSGXRTracker() = default; + +FSGXRTracker& FSGXRTracker::operator=(FSGXRTracker&& Rhs) SG_NOEXCEPT = default; + +bool FSGXRTracker::IsHandTrackingSupportedByDevice() const +{ + const bool bFallbackToHandTrackingIfNoGloveDetected = FImpl::ShouldFallbackToHandTrackingIfNoGloveDetected(); + + const bool bAnyGloveConnected = FImpl::IsAnyGloveConnected(); + const bool bHandTrackingAvailable = Pimpl->bHandTrackingAvailable; + + const bool bHandTrackingSupportedByDevice = + bAnyGloveConnected || (bFallbackToHandTrackingIfNoGloveDetected && bHandTrackingAvailable); + + return bHandTrackingSupportedByDevice; +} + +const FSGXRHandState& FSGXRTracker::GetLeftHandState() const +{ + return Pimpl->GetLeftHandState(); +} + +const FSGXRHandState& FSGXRTracker::GetRightHandState() const +{ + return Pimpl->GetRightHandState(); +} + +FString FSGXRTracker::GetDisplayName() +{ + static const FString Name{TEXT("SenseGloveTracking")}; + return Name; +} + +bool FSGXRTracker::GetRequiredExtensions(TArray& OutExtensions) +{ + TArray Properties; + EnumerateOpenXRApiLayers(Properties); + + // Some API layers can crash the loader when enabled, if they're present we shouldn't enable the extension. + for (const XrApiLayerProperties& Layer: Properties) + { + if (FCStringAnsi::Strstr(Layer.layerName, "XR_APILAYER_VIVE_hand_tracking") + && Layer.layerVersion <= 1) + { + return false; + } + } + + OutExtensions.Add("XR_EXT_hand_tracking"); + + return true; +} + +const void* FSGXRTracker::OnGetSystem(const XrInstance InInstance, const void* InNext) +{ + // Store the extension open xr calls to member function pointers for convenient use. + XR_ENSURE(xrGetInstanceProcAddr(InInstance, + "xrCreateHandTrackerEXT", (PFN_xrVoidFunction*)&Pimpl->XRCreateHandTrackerEXT)); + XR_ENSURE(xrGetInstanceProcAddr(InInstance, + "xrDestroyHandTrackerEXT", (PFN_xrVoidFunction*)&Pimpl->XRDestroyHandTrackerEXT)); + XR_ENSURE(xrGetInstanceProcAddr(InInstance, + "xrLocateHandJointsEXT", (PFN_xrVoidFunction*)&Pimpl->XRLocateHandJointsEXT)); + + return InNext; +} + +const void* FSGXRTracker::OnCreateSession(const XrInstance InInstance, const XrSystemId InSystem, const void* InNext) +{ + // Need to wait until the EHandKeypoint enum has been loaded, so we do this here rather than in the constructor + // which runs too early. + Pimpl->BuildMotionSourceToKeypointMap(); + + XrSystemHandTrackingPropertiesEXT HandTrackingSystemProperties{ + XR_TYPE_SYSTEM_HAND_TRACKING_PROPERTIES_EXT}; + XrSystemProperties systemProperties{XR_TYPE_SYSTEM_PROPERTIES, + &HandTrackingSystemProperties}; + XR_ENSURE(xrGetSystemProperties(InInstance, InSystem, &systemProperties)); + + Pimpl->bHandTrackingAvailable = HandTrackingSystemProperties.supportsHandTracking == XR_TRUE; + + return InNext; +} + +const void* FSGXRTracker::OnBeginSession(const XrSession InSession, const void* InNext) +{ + const bool bHandTrackingAvailable = Pimpl->bHandTrackingAvailable; + + if (bHandTrackingAvailable) + { + static FName SystemName(TEXT("OpenXR")); + if (IsValid(GEngine) && GEngine->XRSystem.IsValid() && (GEngine->XRSystem->GetSystemName() == SystemName)) + { + Pimpl->XRTrackingSystem = GEngine->XRSystem.Get(); + } + + // Create a hand tracker for the left hand that tracks default set of hand joints. + FSGXRHandState& LeftHandState{Pimpl->GetLeftHandState()}; + { + XrHandTrackerCreateInfoEXT CreateInfo{XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT}; + CreateInfo.hand = XR_HAND_LEFT_EXT; + CreateInfo.handJointSet = XR_HAND_JOINT_SET_DEFAULT_EXT; + XR_ENSURE(Pimpl->XRCreateHandTrackerEXT(InSession, &CreateInfo, &LeftHandState.HandTracker)); + } + + // Create a hand tracker for the right hand that tracks default set of hand joints. + FSGXRHandState& RightHandState{Pimpl->GetRightHandState()}; + { + XrHandTrackerCreateInfoEXT CreateInfo{XR_TYPE_HAND_TRACKER_CREATE_INFO_EXT}; + CreateInfo.hand = XR_HAND_RIGHT_EXT; + CreateInfo.handJointSet = XR_HAND_JOINT_SET_DEFAULT_EXT; + XR_ENSURE(Pimpl->XRCreateHandTrackerEXT(InSession, &CreateInfo, &RightHandState.HandTracker)); + } + } + + return InNext; +} + +void FSGXRTracker::UpdateDeviceLocations( + const XrSession InSession, const XrTime DisplayTime, const XrSpace TrackingSpace) +{ + if (!IsHandTrackingStateValid()) + { + return; + } + + XrHandJointsLocateInfoEXT LocateInfo{XR_TYPE_HAND_JOINTS_LOCATE_INFO_EXT}; + LocateInfo.baseSpace = TrackingSpace; + LocateInfo.time = DisplayTime; + + const bool bFallbackToHandTrackingIfNoGloveDetected = FImpl::ShouldFallbackToHandTrackingIfNoGloveDetected(); + + const bool bLeftGloveConnected = FImpl::IsLeftGloveConnected(); + if (bLeftGloveConnected) + { + /// NOTE + /// It's necessary to call the UpdateXRHandTrackingData first for the wrist tracking to work properly when the + /// motion controllers are not active and we rely on the OpenXRHandTracking data for wrist tracking. + /// See the NOTE inside the FSGXRTracker::FImpl::GetWristTransform method. + Pimpl->UpdateXRHandTrackingData(Pimpl->GetLeftHandState(), LocateInfo); + Pimpl->UpdateSGHandState(false, Pimpl->GetLeftHandState()); + } + else + { + if (bFallbackToHandTrackingIfNoGloveDetected) + { + Pimpl->UpdateXRHandTrackingData(Pimpl->GetLeftHandState(), LocateInfo); + } + } + + const bool bRightGloveConnected = FImpl::IsRightGloveConnected(); + if (bRightGloveConnected) + { + /// NOTE + /// It's necessary to call the UpdateXRHandTrackingData first for the wrist tracking to work properly when the + /// motion controllers are not active and we rely on the OpenXRHandTracking data for wrist tracking. + /// See the NOTE inside the FSGXRTracker::FImpl::GetWristLocationAndRotation method. + Pimpl->UpdateXRHandTrackingData(Pimpl->GetRightHandState(), LocateInfo); + Pimpl->UpdateSGHandState(true, Pimpl->GetRightHandState()); + } + else + { + if (bFallbackToHandTrackingIfNoGloveDetected) + { + Pimpl->UpdateXRHandTrackingData(Pimpl->GetRightHandState(), LocateInfo); + } + } +} + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 +bool FSGXRTracker::GetControllerOrientationAndPosition(const int32 ControllerIndex, const FName MotionSource, + FRotator& OutOrientation, FVector& OutPosition, + const float WorldToMetersScale) const +#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ +bool FSGXRTracker::GetControllerOrientationAndPosition(const int32 ControllerIndex, const EControllerHand DeviceHand, + FRotator& OutOrientation, FVector& OutPosition, + const float WorldToMetersScale) const +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ +{ + if (!IsHandTrackingStateValid()) + { + return false; + } + + // Hand tracking currently does not support late update. Current hand tracking systems have latency that make it + // pointless. + if (!IsInGameThread()) + { + return false; + } + + if (ControllerIndex != Pimpl->DeviceIndex) + { + return false; + } + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 2 + const FName& MotionSource{FImpl::GetControllerHandEnumName(DeviceHand)}; +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 2 */ + + FTransform ControllerTransform; + bool bMotionSourceHandTracking; + const bool bGotTransform = Pimpl->GetControllerTransform(MotionSource, WorldToMetersScale, + ControllerTransform, bMotionSourceHandTracking); + (void) bMotionSourceHandTracking; + + OutOrientation = ControllerTransform.GetRotation().Rotator(); + OutPosition = ControllerTransform.GetLocation(); + + return bGotTransform; +} + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 +ETrackingStatus FSGXRTracker::GetControllerTrackingStatus(const int32 ControllerIndex, const FName MotionSource) const +#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ +ETrackingStatus FSGXRTracker::GetControllerTrackingStatus(const int32 ControllerIndex, + const EControllerHand DeviceHand) const +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ +{ + if (!IsHandTrackingStateValid()) + { + return ETrackingStatus::NotTracked; + } + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 2 + const FName& MotionSource{FImpl::GetControllerHandEnumName(DeviceHand)}; +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION <= 2 */ + + const FImpl::FSGMotionSourceInfo* KeyPointInfoPtr{Pimpl->MotionSourceToKeypointMap.Find(MotionSource)}; + if (!KeyPointInfoPtr) + { + return ETrackingStatus::NotTracked; + } + + const bool bRight = !KeyPointInfoPtr->Value; + + const bool bGlovePresent = + (bRight && FImpl::IsRightGloveConnected()) || (!bRight && FImpl::IsLeftGloveConnected()); + if (bGlovePresent) + { + return ETrackingStatus::Tracked; + } + + const bool bFallbackToHandTrackingIfNoGloveDetected = FImpl::ShouldFallbackToHandTrackingIfNoGloveDetected(); + if (bFallbackToHandTrackingIfNoGloveDetected) + { + const FSGXRHandState& HandState{bRight ? GetRightHandState() : GetLeftHandState()}; + return HandState.bReceivedJointPoses ? ETrackingStatus::Tracked : ETrackingStatus::NotTracked; + } + + return ETrackingStatus::NotTracked; +} + +FName FSGXRTracker::GetMotionControllerDeviceTypeName() const +{ + const static FName DefaultName(TEXT("OpenXRHandTracking")); + return DefaultName; +} + +void FSGXRTracker::EnumerateSources(TArray& SourcesOut) const +{ + ensureAlwaysMsgf(IsInGameThread(), TEXT("Is not in the game thread!")); + + SourcesOut.Reserve(SourcesOut.Num() + (EHandKeypointCount * 2)); + + const FName& Left(FImpl::GetLeftHandTrackingMotionSourceName()); + const FName& Right(FImpl::GetRightHandTrackingMotionSourceName()); + + for (int32 Keypoint = 0; Keypoint < EHandKeypointCount; Keypoint++) + { + const FName EnumName{FImpl::GetHandKeypointEnumName(Keypoint)}; + const FString EnumString{EnumName.ToString()}; + const FString StringLeft{FString::Printf(TEXT("%s%s"), *Left.ToString(), *EnumString)}; + const FString StringRight{FString::Printf(TEXT("%s%s"), *Right.ToString(), *EnumString)}; + FName SourceL(*(StringLeft)); + FName SourceR(*(StringRight)); + SourcesOut.Add(MoveTemp(SourceL)); + SourcesOut.Add(MoveTemp(SourceR)); + } +} + +void FSGXRTracker::Tick(const float DeltaTime) +{ +} + +void FSGXRTracker::SendControllerEvents() +{ +} + +void FSGXRTracker::SetMessageHandler(const TSharedRef& InMessageHandler) +{ + Pimpl->MessageHandler = InMessageHandler; +} + +bool FSGXRTracker::Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) +{ + return false; +} + +void FSGXRTracker::SetChannelValue( + const int32 ControllerId, const FForceFeedbackChannelType ChannelType, const float Value) +{ +} + +void FSGXRTracker::SetChannelValues(const int32 ControllerId, const FForceFeedbackValues& Values) +{ +} + +bool FSGXRTracker::SupportsForceFeedback(const int32 ControllerId) +{ + // FIXME + // For now it's true, but when we fall back to the hand tracking we might return false. + (void) ControllerId; + return true; +} + +bool FSGXRTracker::IsGamepadAttached() const +{ + return false; +} + +FName FSGXRTracker::GetHandTrackerDeviceTypeName() const +{ + return GetMotionControllerDeviceTypeName(); +} + +bool FSGXRTracker::IsHandTrackingStateValid() const +{ + const bool bFallbackToHandTrackingIfNoGloveDetected = FImpl::ShouldFallbackToHandTrackingIfNoGloveDetected(); + + const bool bHandTrackingAvailable = Pimpl->bHandTrackingAvailable; + const bool bAnyGloveConnected = FImpl::IsAnyGloveConnected(); + + const bool bHandTrackingStateValid = + bAnyGloveConnected || (bFallbackToHandTrackingIfNoGloveDetected && bHandTrackingAvailable); + + return bHandTrackingStateValid; +} + +bool FSGXRTracker::GetKeypointState( + const EControllerHand Hand, const EHandKeypoint Keypoint, FTransform& OutTransform, float& OutRadius) const +{ + if (!IsHandTrackingStateValid()) + { + return false; + } + + if (!Pimpl->CanOutputTrackingData(Hand)) + { + return false; + } + + const FSGXRHandState& HandState{ + Hand == EControllerHand::Left ? GetLeftHandState() : GetRightHandState() + }; + const bool bGotTransform = HandState.GetTransform(Keypoint, OutTransform); + OutRadius = HandState.Radii[static_cast(Keypoint)]; + + if (bGotTransform) + { + if (!ensureAlwaysMsgf(Pimpl->XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + // Convert to UE world space. + const FTransform& TrackingToWorldTransform{Pimpl->XRTrackingSystem->GetTrackingToWorldTransform()}; + OutTransform *= TrackingToWorldTransform; + } + + return bGotTransform; +} + +bool FSGXRTracker::GetAllKeypointStates( + const EControllerHand Hand, + TArray& OutPositions, TArray& OutRotations, TArray& OutRadii) const +{ + if (!IsHandTrackingStateValid()) + { + return false; + } + + if (Hand != EControllerHand::Left && Hand != EControllerHand::Right) + { + return false; + } + + if (!Pimpl->CanOutputTrackingData(Hand)) + { + return false; + } + + const FSGXRHandState& HandState{ + Hand == EControllerHand::Left ? GetLeftHandState() : GetRightHandState() + }; + + if (!HandState.bReceivedJointPoses) + { + return false; + } + + OutPositions.Empty(EHandKeypointCount); + OutRotations.Empty(EHandKeypointCount); + OutRadii.Empty(EHandKeypointCount); + + if (!ensureAlwaysMsgf(Pimpl->XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + const FTransform& TrackingToWorldTransform{Pimpl->XRTrackingSystem->GetTrackingToWorldTransform()}; + + for (int i = 0; i < EHandKeypointCount; ++i) + { + FTransform KeypointWorldTransform{HandState.KeypointTransforms[i] * TrackingToWorldTransform}; + OutPositions.Add(KeypointWorldTransform.GetLocation()); + OutRotations.Add(KeypointWorldTransform.GetRotation()); + } + + for (int i = 0; i < EHandKeypointCount; ++i) + { + OutRadii.Add(HandState.Radii[i]); + } + + return true; +} + +FSGXRTracker::FImpl::FImpl(FSGXRTracker* InOwner) + : bHandTrackingAvailable(false), + XRCreateHandTrackerEXT(nullptr), + XRDestroyHandTrackerEXT(nullptr), + XRLocateHandJointsEXT(nullptr), + XRTrackingSystem(nullptr), + DeviceIndex(0), + CurrentHandTrackingDataIndex(0), + Owner(InOwner) +{ +} + +FSGXRTracker::FImpl::~FImpl() = default; + +void FSGXRTracker::FImpl::BuildMotionSourceToKeypointMap() +{ + ensureAlwaysMsgf(IsInGameThread(), TEXT("Is not in the game thread!")); + + if (!MotionSourceToKeypointMap.IsEmpty()) + { + return; + } + + const bool bSupportLegacyControllerMotionSources = ShouldSupportLegacyControllerMotionSources(); + + // There is a motion source that corresponds to each hand keypoint of the form [Left|Right][Keypoint]. + // Build a map so we can quickly translate from motion source FName to hand bone EHandKeypoint value. + // We also have the option of using more specific motion sources of the form HandTracking[Left|Right][Keypoint]. + // This is useful if one wishes to use hand tracking and controllers simultaneously. + // We also may support more generic legacy motion sources, by default we do support this. + + const FName& Left(GetLeftHandTrackingMotionSourceName()); + const FName& Right(GetRightHandTrackingMotionSourceName()); + + for (int32 KeypointIndex = 0; KeypointIndex < EHandKeypointCount; ++KeypointIndex) + { + const EHandKeypoint EnumValue = static_cast(KeypointIndex); + const FName EnumName{GetHandKeypointEnumName(KeypointIndex)}; + const FString EnumString{EnumName.ToString()}; + + FName LeftName(Left.ToString() + EnumString); + FName RightName(Right.ToString() + EnumString); + MotionSourceToKeypointMap.Add(MoveTemp(LeftName), FSGMotionSourceInfo(EnumValue, true)); + MotionSourceToKeypointMap.Add(MoveTemp(RightName), FSGMotionSourceInfo(EnumValue, false)); + } + + if (bSupportLegacyControllerMotionSources) + { + const FName& LeftLegacyControllerHandTrackingMotionSourceName{ + GetLegacyControllerLeftHandTrackingMotionSourceName()}; + const FName& RightLegacyControllerHandTrackingMotionSourceName{ + GetLegacyControllerRightHandTrackingMotionSourceName()}; + MotionSourceToKeypointMap.Add( + LeftLegacyControllerHandTrackingMotionSourceName, FSGMotionSourceInfo(EHandKeypoint::Wrist, true)); + MotionSourceToKeypointMap.Add( + RightLegacyControllerHandTrackingMotionSourceName, FSGMotionSourceInfo(EHandKeypoint::Wrist, false)); + } + + const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()}; + const FName LeftHandSGMotionSourceName{ + GetControllerHandEnumName(WristTrackingSettings.LeftHandMotionSource) + }; + const FName RightHandSGMotionSourceName{ + GetControllerHandEnumName(WristTrackingSettings.RightHandMotionSource) + }; + MotionSourceToKeypointMap.Add( + LeftHandSGMotionSourceName, FSGMotionSourceInfo(EHandKeypoint::Wrist, true)); + MotionSourceToKeypointMap.Add( + RightHandSGMotionSourceName, FSGMotionSourceInfo(EHandKeypoint::Wrist, false)); +} + +bool FSGXRTracker::FImpl::CanOutputTrackingData(const EControllerHand Hand) const +{ + const bool bFallbackToHandTrackingIfNoGloveDetected = ShouldFallbackToHandTrackingIfNoGloveDetected(); + + const bool bIsHandTrackingAvailable = bHandTrackingAvailable; + + bool bGloveConnected = false; + if (Hand == EControllerHand::Left) + { + bGloveConnected = IsLeftGloveConnected(); + } + else if (Hand == EControllerHand::Right) + { + bGloveConnected = IsRightGloveConnected(); + } + + const bool bCanOutputTrackingData = + bGloveConnected || (bFallbackToHandTrackingIfNoGloveDetected && bIsHandTrackingAvailable); + + return bCanOutputTrackingData; +} + +bool FSGXRTracker::FImpl::UpdateXRHandTrackingData( + FSGXRHandState& OutHandState, const XrHandJointsLocateInfoEXT& LocateInfo) const +{ + if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + const float WorldToMetersScale = XRTrackingSystem->GetWorldToMetersScale(); + + XR_ENSURE(XRLocateHandJointsEXT(OutHandState.HandTracker, &LocateInfo, &OutHandState.Locations)); + + OutHandState.bReceivedJointPoses = OutHandState.Locations.isActive == XR_TRUE; + if (!OutHandState.bReceivedJointPoses) + { + return false; + } + + static_assert( + XR_HAND_JOINT_PALM_EXT == 0 && XR_HAND_JOINT_LITTLE_TIP_EXT == XR_HAND_JOINT_COUNT_EXT - 1, + "XrHandJointEXT enum is not as assumed for the following loop!"); + + for (int j = 0; j < XR_HAND_JOINT_COUNT_EXT; ++j) + { + const XrHandJointLocationEXT& JointLocation{OutHandState.JointLocations[j]}; + const XrPosef& Pose{JointLocation.pose}; + FTransform Transform{ToFTransform(Pose, WorldToMetersScale)}; + OutHandState.KeypointTransforms[j] = MoveTemp(Transform); + OutHandState.Radii[j] = JointLocation.radius * WorldToMetersScale; + // velocities would go here + } + + return true; +} + +bool FSGXRTracker::FImpl::GetControllerTransform( + const FName MotionSource, const float WorldToMetersScale, + FTransform& OutTransform, bool& bOutMotionSourceHandTracking) const +{ + const FSGMotionSourceInfo* KeyPointInfoPtr{MotionSourceToKeypointMap.Find(MotionSource)}; + if (!KeyPointInfoPtr) + { + return false; + } + + const bool bRight = !KeyPointInfoPtr->Value; + const bool bGlovePresent = + (bRight && IsRightGloveConnected()) || (!bRight && IsLeftGloveConnected()); + const bool bFallbackToHandTrackingIfNoGloveDetected = ShouldFallbackToHandTrackingIfNoGloveDetected(); + + if (!bGlovePresent && !bFallbackToHandTrackingIfNoGloveDetected) + { + return false; + } + + static const FName OpenXRName{TEXT("OpenXR")}; + static const FName OpenXRViveTrackerName{TEXT("OpenXRViveTracker")}; + + const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()}; + const EControllerHand PositionalTrackingHardwareHand = + bRight + ? WristTrackingSettings.RightHandMotionSource + : WristTrackingSettings.LeftHandMotionSource; + const FName& PositionalTrackingHardwareMotionSource{ + GetControllerHandEnumName(PositionalTrackingHardwareHand) + }; + + bool bTracked = false; + + if (MotionSource == PositionalTrackingHardwareMotionSource) + { + const TArray MotionControllers{ + IModularFeatures::Get().GetModularFeatureImplementations( + IMotionController::GetModularFeatureName()) + }; + + bool bLookingForViveTrackers = false; + if (WristTrackingSettings.TrackingHardware == ESGPositionalTrackingHardware::ViveTracker + || WristTrackingSettings.TrackingHardware == ESGPositionalTrackingHardware::ViveFocus3WristTracker) + { + bLookingForViveTrackers = true; + } + else if (WristTrackingSettings.TrackingHardware == ESGPositionalTrackingHardware::None) + { + const bool bIsAHtcViveDevice = FSGHMDTracker::IsAHtcViveDevice(); + if (bIsAHtcViveDevice) + { + bLookingForViveTrackers = true; + } + } + + for (const IMotionController* MotionController: MotionControllers) + { + if (!MotionController) + { + continue; + } + + const ETrackingStatus TrackingStatus = MotionController->GetControllerTrackingStatus( + DeviceIndex, PositionalTrackingHardwareMotionSource); + if (TrackingStatus == ETrackingStatus::NotTracked) + { + continue; + } + + if (bLookingForViveTrackers) + { + const FName DeviceTypeName{MotionController->GetMotionControllerDeviceTypeName()}; + if (DeviceTypeName != OpenXRViveTrackerName) + { + continue; + } + } + else + { + const FName DeviceTypeName{MotionController->GetMotionControllerDeviceTypeName()}; + if (DeviceTypeName != OpenXRName) + { + continue; + } + } + + FRotator Orientation; + FVector Position; + const bool bGotTransform = MotionController->GetControllerOrientationAndPosition( + DeviceIndex, PositionalTrackingHardwareMotionSource, + Orientation, Position, WorldToMetersScale); + if (bGotTransform) + { + OutTransform = FTransform{Orientation, Position}; + bOutMotionSourceHandTracking = false; + bTracked = true; + break; + } + } + } + + if (!bTracked && bFallbackToHandTrackingIfNoGloveDetected) + { + const FSGXRHandState& HandState{bRight ? Owner->GetRightHandState() : Owner->GetLeftHandState()}; + if (!HandState.bReceivedJointPoses) + { + return false; + } + + const EHandKeypoint KeyPoint = KeyPointInfoPtr->Key; + const FTransform& ControllerTransform{ + bRight + ? GetRightHandState().GetTransform(KeyPoint) + : GetLeftHandState().GetTransform(KeyPoint) + }; + + OutTransform = ControllerTransform; + bOutMotionSourceHandTracking = true; + bTracked = true; + } + + return bTracked; +} + +bool FSGXRTracker::FImpl::GetWristTransform(const bool bRight, FTransform& OutTransform) const +{ + const FSGWristTrackingSettings& WristTrackingSettings{GetWristTrackingSettings()}; + const EControllerHand PositionalTrackingHardwareHand = + bRight + ? WristTrackingSettings.RightHandMotionSource + : WristTrackingSettings.LeftHandMotionSource; + const FName& MotionSource{ + GetControllerHandEnumName(PositionalTrackingHardwareHand) + }; + + if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + const float WorldToMetersScale = XRTrackingSystem->GetWorldToMetersScale(); + + bool bMotionSourceHandTracking = false; + FTransform ControllerTransform; + const bool bGotTransform = GetControllerTransform( + MotionSource, WorldToMetersScale, ControllerTransform, bMotionSourceHandTracking); + + if (bGotTransform) + { + if (bMotionSourceHandTracking) + { + OutTransform = MoveTemp(ControllerTransform); + } + else + { + const ESGPositionalTrackingHardware TrackingHardware = GetPositionalTrackingHardware(); + if (TrackingHardware == ESGPositionalTrackingHardware::Custom) + { + if (bRight) + { + ControllerTransform.SetRotation( + (ControllerTransform.GetRotation().Rotator() + + WristTrackingSettings.TrackingHardwareRotationOffsetRightHand).Quaternion()); + ControllerTransform.SetLocation( + ControllerTransform.GetLocation() + + WristTrackingSettings.TrackingHardwareLocationOffsetRightHand); + } + else + { + ControllerTransform.SetRotation( + (ControllerTransform.GetRotation().Rotator() + + WristTrackingSettings.TrackingHardwareRotationOffsetLeftHand).Quaternion()); + ControllerTransform.SetLocation( + ControllerTransform.GetLocation() + + WristTrackingSettings.TrackingHardwareLocationOffsetLeftHand); + } + } + + const USGHapticGlove* Glove{GetGlove(bRight)}; + if (!IsValid(Glove)) + { + return false; + } + + FVector WristLocation; + FRotator WristRotation; + Glove->GetWristLocation( + ControllerTransform.GetLocation(), + ControllerTransform.GetRotation().Rotator(), + TrackingHardware, + WristLocation, WristRotation); + + OutTransform = FTransform{MoveTemp(WristRotation), MoveTemp(WristLocation)}; + } + } + + return bGotTransform; +} + +bool FSGXRTracker::FImpl::UpdateSGJointData( + FSGXRHandState& OutHandState, const EHandKeypoint Joint, + const FTransform& JointTransform, const FTransform& WristTransform) const +{ + if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + const FTransform& TrackingToWorldTransform{XRTrackingSystem->GetTrackingToWorldTransform()}; + const FTransform& WorldToTrackingTransform{TrackingToWorldTransform.Inverse()}; + const float WorldToMetersScale = XRTrackingSystem->GetWorldToMetersScale(); + + const int32 JointIndex = static_cast(Joint); + + const FQuat WristRotation{WristTransform.GetRotation()}; + const FVector WristLocation{WristTransform.GetLocation()}; + const FQuat JointRotation{JointTransform.GetRotation()}; + const FVector JointLocation{JointTransform.GetLocation()}; + + FTransform Transform{ + WristRotation * JointRotation, + WristLocation + (WristRotation * JointLocation) + }; + + OutHandState.KeypointTransforms[JointIndex] = MoveTemp(Transform); + OutHandState.Radii[JointIndex] = 0.01f * WorldToMetersScale; + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGWristJointData( + FSGXRHandState& OutHandState, const FTransform& WristTransform) const +{ + if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + const FTransform& TrackingToWorldTransform{XRTrackingSystem->GetTrackingToWorldTransform()}; + const float WorldToMetersScale = XRTrackingSystem->GetWorldToMetersScale(); + + static constexpr EHandKeypoint Joint = EHandKeypoint::Wrist; + static constexpr int32 JointIndex = static_cast(Joint); + + OutHandState.KeypointTransforms[JointIndex] = WristTransform; + OutHandState.Radii[JointIndex] = 0.01f * WorldToMetersScale; + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGPalmJointData( + FSGXRHandState& OutHandState, const bool bRight, const FTransform& WristTransform) const +{ + if (!ensureAlwaysMsgf(XRTrackingSystem, TEXT("Invalid XR tracking system!"))) + { + return false; + } + + FTransform JointTransform{GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::Palm)}; + + if (!UpdateSGJointData(OutHandState, EHandKeypoint::Palm, + MoveTemp(JointTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGThumbJointData( + FSGXRHandState& OutHandState, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const +{ + static constexpr int32 ThumbFingerIndex = 0; + static constexpr int32 ThumbMetacarpalJointIndex = 0; + static constexpr int32 ThumbProximalJointIndex = 1; + static constexpr int32 ThumbDistalJointIndex = 2; + static constexpr int32 ThumbTipJointIndex = 3; + + FTransform ThumbMetacarpalTransform{ + JointRotations[ThumbFingerIndex][ThumbMetacarpalJointIndex], + JointLocations[ThumbFingerIndex][ThumbMetacarpalJointIndex] + }; + FTransform ThumbProximalTransform{ + JointRotations[ThumbFingerIndex][ThumbProximalJointIndex], + JointLocations[ThumbFingerIndex][ThumbProximalJointIndex] + }; + FTransform ThumbDistalTransform{ + JointRotations[ThumbFingerIndex][ThumbDistalJointIndex], + JointLocations[ThumbFingerIndex][ThumbDistalJointIndex] + }; + FTransform ThumbTipTransform{ + JointRotations[ThumbFingerIndex][ThumbTipJointIndex], + JointLocations[ThumbFingerIndex][ThumbTipJointIndex] + }; + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::ThumbMetacarpal, + MoveTemp(ThumbMetacarpalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::ThumbProximal, + MoveTemp(ThumbProximalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::ThumbDistal, + MoveTemp(ThumbDistalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::ThumbTip, + MoveTemp(ThumbTipTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGIndexJointData( + FSGXRHandState& OutHandState, const bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const +{ + static constexpr int32 IndexFingerIndex = 1; + + static constexpr int32 IndexProximalJointIndex = 0; + static constexpr int32 IndexIntermediateJointIndex = 1; + static constexpr int32 IndexDistalJointIndex = 2; + static constexpr int32 IndexTipJointIndex = 3; + + FTransform IndexMetacarpalTransform{ + GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::IndexMetacarpal) + }; + FTransform IndexProximalTransform{ + JointRotations[IndexFingerIndex][IndexProximalJointIndex], + JointLocations[IndexFingerIndex][IndexProximalJointIndex] + }; + FTransform IndexIntermediateTransform{ + JointRotations[IndexFingerIndex][IndexIntermediateJointIndex], + JointLocations[IndexFingerIndex][IndexIntermediateJointIndex] + }; + FTransform IndexDistalTransform{ + JointRotations[IndexFingerIndex][IndexDistalJointIndex], + JointLocations[IndexFingerIndex][IndexDistalJointIndex] + }; + FTransform IndexTipTransform{ + JointRotations[IndexFingerIndex][IndexTipJointIndex], + JointLocations[IndexFingerIndex][IndexTipJointIndex] + }; + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::IndexMetacarpal, + MoveTemp(IndexMetacarpalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::IndexProximal, + MoveTemp(IndexProximalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::IndexIntermediate, + MoveTemp(IndexIntermediateTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::IndexDistal, + MoveTemp(IndexDistalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::IndexTip, + MoveTemp(IndexTipTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGMiddleJointData( + FSGXRHandState& OutHandState, const bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const +{ + static constexpr int32 MiddleFingerMiddle = 2; + + static constexpr int32 MiddleProximalJointMiddle = 0; + static constexpr int32 MiddleIntermediateJointMiddle = 1; + static constexpr int32 MiddleDistalJointMiddle = 2; + static constexpr int32 MiddleTipJointMiddle = 3; + + FTransform MiddleMetacarpalTransform{ + GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::MiddleMetacarpal) + }; + FTransform MiddleProximalTransform{ + JointRotations[MiddleFingerMiddle][MiddleProximalJointMiddle], + JointLocations[MiddleFingerMiddle][MiddleProximalJointMiddle] + }; + FTransform MiddleIntermediateTransform{ + JointRotations[MiddleFingerMiddle][MiddleIntermediateJointMiddle], + JointLocations[MiddleFingerMiddle][MiddleIntermediateJointMiddle] + }; + FTransform MiddleDistalTransform{ + JointRotations[MiddleFingerMiddle][MiddleDistalJointMiddle], + JointLocations[MiddleFingerMiddle][MiddleDistalJointMiddle] + }; + FTransform MiddleTipTransform{ + JointRotations[MiddleFingerMiddle][MiddleTipJointMiddle], + JointLocations[MiddleFingerMiddle][MiddleTipJointMiddle] + }; + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::MiddleMetacarpal, + MoveTemp(MiddleMetacarpalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::MiddleProximal, + MoveTemp(MiddleProximalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::MiddleIntermediate, + MoveTemp(MiddleIntermediateTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::MiddleDistal, + MoveTemp(MiddleDistalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::MiddleTip, + MoveTemp(MiddleTipTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGRingJointData( + FSGXRHandState& OutHandState, const bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const +{ + static constexpr int32 RingFingerRing = 3; + + static constexpr int32 RingProximalJointRing = 0; + static constexpr int32 RingIntermediateJointRing = 1; + static constexpr int32 RingDistalJointRing = 2; + static constexpr int32 RingTipJointRing = 3; + + FTransform RingMetacarpalTransform{ + GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::RingMetacarpal) + }; + FTransform RingProximalTransform{ + JointRotations[RingFingerRing][RingProximalJointRing], + JointLocations[RingFingerRing][RingProximalJointRing] + }; + FTransform RingIntermediateTransform{ + JointRotations[RingFingerRing][RingIntermediateJointRing], + JointLocations[RingFingerRing][RingIntermediateJointRing] + }; + FTransform RingDistalTransform{ + JointRotations[RingFingerRing][RingDistalJointRing], + JointLocations[RingFingerRing][RingDistalJointRing] + }; + FTransform RingTipTransform{ + JointRotations[RingFingerRing][RingTipJointRing], + JointLocations[RingFingerRing][RingTipJointRing] + }; + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::RingMetacarpal, + MoveTemp(RingMetacarpalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::RingProximal, + MoveTemp(RingProximalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::RingIntermediate, + MoveTemp(RingIntermediateTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::RingDistal, + MoveTemp(RingDistalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::RingTip, + MoveTemp(RingTipTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGLittleJointData( + FSGXRHandState& OutHandState, const bool bRight, + const TArray>& JointLocations, const TArray>& JointRotations, + const FTransform& WristTransform) const +{ + static constexpr int32 LittleFingerLittle = 4; + + static constexpr int32 LittleProximalJointLittle = 0; + static constexpr int32 LittleIntermediateJointLittle = 1; + static constexpr int32 LittleDistalJointLittle = 2; + static constexpr int32 LittleTipJointLittle = 3; + + FTransform LittleMetacarpalTransform{ + GetMeshWristChildBoneRefTransform(bRight, EHandKeypoint::LittleMetacarpal) + }; + FTransform LittleProximalTransform{ + JointRotations[LittleFingerLittle][LittleProximalJointLittle], + JointLocations[LittleFingerLittle][LittleProximalJointLittle] + }; + FTransform LittleIntermediateTransform{ + JointRotations[LittleFingerLittle][LittleIntermediateJointLittle], + JointLocations[LittleFingerLittle][LittleIntermediateJointLittle] + }; + FTransform LittleDistalTransform{ + JointRotations[LittleFingerLittle][LittleDistalJointLittle], + JointLocations[LittleFingerLittle][LittleDistalJointLittle] + }; + FTransform LittleTipTransform{ + JointRotations[LittleFingerLittle][LittleTipJointLittle], + JointLocations[LittleFingerLittle][LittleTipJointLittle] + }; + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::LittleMetacarpal, + MoveTemp(LittleMetacarpalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::LittleProximal, + MoveTemp(LittleProximalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::LittleIntermediate, + MoveTemp(LittleIntermediateTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::LittleDistal, + MoveTemp(LittleDistalTransform), WristTransform)) + { + return false; + } + + if (!UpdateSGJointData( + OutHandState, EHandKeypoint::LittleTip, + MoveTemp(LittleTipTransform), WristTransform)) + { + return false; + } + + return true; +} + +bool FSGXRTracker::FImpl::UpdateSGHandState(const bool bRight, FSGXRHandState& OutHandState) const +{ + const USGHandPose* HandPose{GetHandPose(bRight)}; + if (!IsValid(HandPose)) + { + return false; + } + + OutHandState.bReceivedJointPoses = true; + + const TArray> JointLocations{HandPose->GetJointPositions()}; + const TArray> JointRotations{HandPose->GetJointRotationsQ()}; + + FTransform WristTransform; + const bool bGotWristTransform = GetWristTransform(bRight, WristTransform); + + /// NOTE + // Even if we fail to get the wrist transform, the SenseGlove data needs to make it to the FXRMotionControllerData! + // So, we just ignore the bGotWristTransform results! Otherwise, even if bFallbackToHandTrackingIfNoGloveDetected + // is disabled it will output the hand-tracking data. + (void) bGotWristTransform; + + if (!UpdateSGWristJointData(OutHandState, WristTransform)) + { + return false; + } + + if (!UpdateSGPalmJointData(OutHandState, bRight, WristTransform)) + { + return false; + } + + if (!UpdateSGThumbJointData(OutHandState, + JointLocations, JointRotations, + WristTransform)) + { + return false; + } + + if (!UpdateSGIndexJointData(OutHandState, bRight, + JointLocations, JointRotations, + WristTransform)) + { + return false; + } + + if (!UpdateSGMiddleJointData(OutHandState, bRight, + JointLocations, JointRotations, + WristTransform)) + { + return false; + } + + if (!UpdateSGRingJointData(OutHandState, bRight, + JointLocations, JointRotations, + WristTransform)) + { + return false; + } + + if (!UpdateSGLittleJointData(OutHandState, bRight, + JointLocations, JointRotations, + WristTransform)) + { + return false; + } + + return true; +} + +void FSGXRTracker::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.cpp new file mode 100644 index 0000000..dad3ede --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.cpp @@ -0,0 +1,42 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTracking.h" + +#include "Modules/ModuleManager.h" + +#include "SenseGloveTrackingModule.h" + +IMPLEMENT_MODULE(FSenseGloveTrackingModule, SenseGloveTracking) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTracking.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.cpp b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.cpp new file mode 100644 index 0000000..22078fa --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.cpp @@ -0,0 +1,183 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTrackingModule.h" + +#include "Framework/Application/SlateApplication.h" + +#include "SGLog/SGLog.h" +#include "SGTracking/SGXRTracker.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveTrackingModule" + +struct FSenseGloveTrackingModule::FImpl +{ + /************************ + * Member variables + ************************/ + + TSharedPtr InputDevice; + + /************************ + * Owner object + ************************/ + + FSenseGloveTrackingModule* Owner; + + /************************ + * Constructor / Destructor + ************************/ + + explicit FImpl(FSenseGloveTrackingModule* InOwner); + ~FImpl(); + + /************************ + * Default copy constructor & copy assignment operator + ************************/ + + FImpl(const FImpl& Rhs) = default; + FImpl& operator=(const FImpl& Rhs) = default; +}; + + +FSenseGloveTrackingModule::FSenseGloveTrackingModule() + : IInputDeviceModule(), + Pimpl(TUniquePtr(new FImpl{this}, PimplDeleter)) +{ +} + +FSenseGloveTrackingModule::FSenseGloveTrackingModule(const FSenseGloveTrackingModule& Rhs) + : IInputDeviceModule(Rhs), + Pimpl(TUniquePtr(new FImpl{*Rhs.Pimpl}, PimplDeleter)) +{ + Pimpl->Owner = this; +} + +FSenseGloveTrackingModule::FSenseGloveTrackingModule(FSenseGloveTrackingModule&& Rhs) SG_NOEXCEPT = default; + +FSenseGloveTrackingModule::~FSenseGloveTrackingModule() = default; + +FSenseGloveTrackingModule& FSenseGloveTrackingModule::operator=(const FSenseGloveTrackingModule& Rhs) +{ + IInputDeviceModule::operator=(Rhs); + *Pimpl = *Rhs.Pimpl; + Pimpl->Owner = this; + return *this; +} + +FSenseGloveTrackingModule& FSenseGloveTrackingModule::operator=(FSenseGloveTrackingModule&& Rhs) SG_NOEXCEPT = default; + +void FSenseGloveTrackingModule::StartupModule() +{ + SGLOG("Starting up SenseGloveTracking module..."); + + IInputDeviceModule::StartupModule(); + + /// HACK! + // Generic Application might not be instantiated at this point so we create the input device with a dummy message + // handler. When the Generic Application creates the input device it passes a valid message handler to it which is + // further on used for all the controller events. This hack fixes issues caused by using a custom input device + // before the Generic Application has instantiated it. Eg. within BeginPlay(). + // This also fixes the warnings that pop up on the custom input keys when the blueprint loads. Those warnings are + // caused because Unreal loads the Blueprints before the input device has been instantiated and has added its keys, + // thus leading Unreal to believe that those keys don't exist. This hack causes an earlier instantiation of the + // input device, and consequently, the custom keys. + TSharedPtr DummyMessageHandler(new FGenericApplicationMessageHandler()); + CreateInputDevice(DummyMessageHandler.ToSharedRef()); +} + +void FSenseGloveTrackingModule::PreUnloadCallback() +{ + SGLOG("Unloading SenseGloveTracking module..."); + + IInputDeviceModule::PreUnloadCallback(); +} + +void FSenseGloveTrackingModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveTracking module has succeeded!"); + + IInputDeviceModule::PostLoadCallback(); +} + +void FSenseGloveTrackingModule::ShutdownModule() +{ + SGLOG("Shutting down SenseGloveTracking module..."); + + IInputDeviceModule::ShutdownModule(); +} + +TSharedPtr FSenseGloveTrackingModule::CreateInputDevice( + const TSharedRef& InMessageHandler) +{ + SGLOG("Creating the SenseGloveTracking input device..."); + + if (!Pimpl->InputDevice.IsValid()) + { + TSharedPtr HandTrackingInputDevice(new FSGXRTracker(InMessageHandler)); + Pimpl->InputDevice = HandTrackingInputDevice; + } + else + { + Pimpl->InputDevice.Get()->SetMessageHandler(InMessageHandler); + } + + return Pimpl->InputDevice; +} + +TSharedPtr FSenseGloveTrackingModule::GetInputDevice() +{ + if (!Pimpl->InputDevice.IsValid()) + { + CreateInputDevice(FSlateApplication::Get().GetPlatformApplication()->GetMessageHandler()); + } + + return Pimpl->InputDevice; +} + +FSenseGloveTrackingModule::FImpl::FImpl(FSenseGloveTrackingModule* InOwner) + : InputDevice(nullptr), + Owner(InOwner) +{ +} + +FSenseGloveTrackingModule::FImpl::~FImpl() = default; + +void FSenseGloveTrackingModule::FImplDeleter::operator()(const FImpl* P) const +{ + delete P; +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.h new file mode 100644 index 0000000..04cd9e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Private/SenseGloveTrackingModule.h @@ -0,0 +1,116 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "IInputDeviceModule.h" +#include "Templates/UniquePtr.h" + +#include "SGBuildHacks/SGPlatform.h" + +#define LOCTEXT_NAMESPACE "SenseGloveTracking" + +class FSenseGloveTrackingModule : public IInputDeviceModule +{ +public: + static FORCEINLINE FSenseGloveTrackingModule& Get() + { + return FModuleManager::LoadModuleChecked("SenseGloveTracking"); + } + + static FORCEINLINE bool IsAvailable() + { + return FModuleManager::Get().IsModuleLoaded("SenseGloveTracking"); + } + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +public: + /** + * The default constructor. + */ + FSenseGloveTrackingModule(); + +public: + /** + * The copy constructor. + */ + FSenseGloveTrackingModule(const FSenseGloveTrackingModule& Rhs); + + /** + * The move constructor. + */ + FSenseGloveTrackingModule(FSenseGloveTrackingModule&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSenseGloveTrackingModule() override; + +public: + /** + * The copy assignment operator. + */ + FSenseGloveTrackingModule& operator=(const FSenseGloveTrackingModule& Rhs); + + /** + * The move assignment operator. + */ + FSenseGloveTrackingModule& operator=(FSenseGloveTrackingModule&& Rhs) SG_NOEXCEPT; + +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; + +public: + virtual TSharedPtr CreateInputDevice( + const TSharedRef& InMessageHandler) override; + + virtual TSharedPtr GetInputDevice(); +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h new file mode 100644 index 0000000..00e41b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGGloveTracker.h @@ -0,0 +1,117 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Subsystems/WorldSubsystem.h" +#include "Templates/UniquePtr.h" +#include "UObject/Object.h" +#include "UObject/ObjectMacros.h" + +#include "SGCore/SGHapticGlove.h" + +#include "SGGloveTracker.generated.h" + +UCLASS() +class SENSEGLOVETRACKING_API USGGloveTracker : public UWorldSubsystem +{ + GENERATED_BODY() + +public: + static USGGloveTracker* GetInstance(const UObject* WorldContextObject = nullptr); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + UPROPERTY(Transient) + USGHapticGlove* LeftGlove; + + UPROPERTY(Transient) + USGHapticGlove* RightGlove; + +private: + USGGloveTracker(); + +public: + FORCEINLINE USGHapticGlove* GetGlove(const bool bRight) const + { + return bRight ? RightGlove : LeftGlove; + } + + FORCEINLINE USGHapticGlove* GetLeftGlove() const + { + return LeftGlove; + } + + FORCEINLINE USGHapticGlove* GetRightGlove() const + { + return RightGlove; + } + + FORCEINLINE bool IsGloveConnected(const bool bRight) const + { + return IsValid(GetGlove(bRight)); + } + + FORCEINLINE bool IsLeftGloveConnected() const + { + return IsValid(GetLeftGlove()); + } + + FORCEINLINE bool IsRightGloveConnected() const + { + return IsValid(GetRightGlove()); + } + + FORCEINLINE bool IsAnyGloveConnected() const + { + return IsLeftGloveConnected() || IsRightGloveConnected(); + } + +public: + virtual bool ShouldCreateSubsystem(UObject* Outer) const override; + + virtual void Initialize(FSubsystemCollectionBase& Collection) override; + virtual void Deinitialize() override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGHMDTracker.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGHMDTracker.h new file mode 100644 index 0000000..bd88fef --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGHMDTracker.h @@ -0,0 +1,104 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/NameTypes.h" +#include "UObject/ObjectMacros.h" + +#include "SGTypes/SGTrackingTypes.h" + +#include "SGHMDTracker.generated.h" + +/** + * + */ +USTRUCT() +struct SENSEGLOVETRACKING_API FSGHMDTracker +{ + GENERATED_BODY() + +public: + static FName GetDeviceName(); + + /** + * Checks whether the HMD device is Meta Quest 2, or not. + */ + static bool IsMetaQuest2(); + + /** + * Checks whether the HMD device is Meta Quest Pro, or not. + */ + static bool IsMetaQuestPro(); + + /** + * Checks whether the HMD device is Meta Quest 3, or not. + */ + static bool IsMetaQuest3(); + + FORCEINLINE static bool IsAMetaQuestDevice() + { + return IsMetaQuest2() || IsMetaQuestPro() || IsMetaQuest3(); + } + + /** + * Checks whether the HMD device is HTC VIVE Pro, or not. + */ + static bool IsHtcVivePro(); + + /** + * Checks whether the HMD device is HTC VIVE Focus 3, or not. + * + * @remark At the moment, VIVE Focus 3 cannot be distinguished from VIVE XR Elite, so when IsHtcViveFocus3 returns + * true, IsHtcViveXRElite will return true as well; thus we cannot know for sure which headset we are running on. + */ + static bool IsHtcViveFocus3(); + + /** + * Checks whether the HMD device is HTC VIVE XR Elite, or not. + * + * @remark At the moment, VIVE Focus 3 cannot be distinguished from VIVE XR Elite, so when IsHtcViveXRElite returns + * true, IsHtcViveFocus3 will return true as well; thus we cannot know for sure which headset we are running on. + */ + static bool IsHtcViveXRElite(); + + FORCEINLINE static bool IsAHtcViveDevice() + { + return IsHtcVivePro() || IsHtcViveFocus3() || IsHtcViveXRElite(); + } + + static ESGHeadMountedDisplayDevice GetDeviceType(); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRHandState.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRHandState.h new file mode 100644 index 0000000..66378d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRHandState.h @@ -0,0 +1,68 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HeadMountedDisplayTypes.h" +#include "IOpenXRExtensionPlugin.h" +#include "Math/MathFwd.h" +#include "Templates/UnrealTemplate.h" + +struct SENSEGLOVETRACKING_API FSGXRHandState final : public FNoncopyable +{ +public: + XrHandTrackerEXT HandTracker; + + XrHandJointLocationEXT JointLocations[XR_HAND_JOINT_COUNT_EXT]; + XrHandJointVelocityEXT JointVelocities[XR_HAND_JOINT_COUNT_EXT]; + + XrHandJointVelocitiesEXT Velocities; + XrHandJointLocationsEXT Locations; + + // Transforms are cached in Unreal Tracking Space + FTransform KeypointTransforms[EHandKeypointCount]; + + float Radii[EHandKeypointCount]; + + bool bReceivedJointPoses; + +public: + FSGXRHandState(); + virtual ~FSGXRHandState(); + +public: + bool GetTransform(EHandKeypoint Keypoint, FTransform& OutTransform) const; + const FTransform& GetTransform(EHandKeypoint Keypoint) const; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRTracker.h b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRTracker.h new file mode 100644 index 0000000..2cf9319 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/Public/SGTracking/SGXRTracker.h @@ -0,0 +1,164 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HeadMountedDisplayTypes.h" +#include "IHandTracker.h" +#include "IInputDevice.h" +#include "IOpenXRExtensionPlugin.h" +#include "Math/MathFwd.h" +#include "Runtime/Launch/Resources/Version.h" +#include "Templates/UniquePtr.h" +#include "UObject/NameTypes.h" +#include "XRMotionControllerBase.h" + +#include "SGBuildHacks/SGPlatform.h" + +struct SENSEGLOVETRACKING_API FSGXRHandState; + +class SENSEGLOVETRACKING_API FSGXRTracker final : public IOpenXRExtensionPlugin, + public IInputDevice, + public FXRMotionControllerBase, + public IHandTracker +{ +public: + static bool GetMotionControllerData(UObject* WorldContextObject, EControllerHand Hand, + FXRMotionControllerData& OutMotionControllerData); + +private: + struct FImpl; + + struct FImplDeleter + { + void operator()(const FImpl* P) const; + }; + + TUniquePtr Pimpl; + FImplDeleter PimplDeleter; + +private: + FSGXRTracker() = delete; + +public: + FSGXRTracker(const TSharedRef& InMessageHandler); + +public: + /** + * The copy constructor. + */ + FSGXRTracker(const FSGXRTracker& Rhs) = delete; + + /** + * The move constructor. + */ + FSGXRTracker(FSGXRTracker&& Rhs) SG_NOEXCEPT; + +public: + /** + * The destructor. + */ + virtual ~FSGXRTracker() override; + +public: + /** + * The copy assignment operator. + */ + FSGXRTracker& operator=(const FSGXRTracker& Rhs) = delete; + + /** + * The move assignment operator. + */ + FSGXRTracker& operator=(FSGXRTracker&& Rhs) SG_NOEXCEPT; + +public: + bool IsHandTrackingSupportedByDevice() const; + + const FSGXRHandState& GetLeftHandState() const; + const FSGXRHandState& GetRightHandState() const; + +public: + // The IOpenXRExtensionPlugin interface. + + virtual FString GetDisplayName() override; + virtual bool GetRequiredExtensions(TArray& OutExtensions) override; + virtual const void* OnGetSystem(XrInstance InInstance, const void* InNext) override; + virtual const void* OnCreateSession(XrInstance InInstance, XrSystemId InSystem, const void* InNext) override; + virtual const void* OnBeginSession(XrSession InSession, const void* InNext) override; + virtual void UpdateDeviceLocations(XrSession InSession, XrTime DisplayTime, XrSpace TrackingSpace) override; + +public: + // The IMotionController interface. + +#if ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 + virtual bool GetControllerOrientationAndPosition(const int32 ControllerIndex, const FName MotionSource, + FRotator& OutOrientation, FVector& OutPosition, + float WorldToMetersScale) const override; + virtual ETrackingStatus GetControllerTrackingStatus(const int32 ControllerIndex, + const FName MotionSource) const override; +#else /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ + virtual bool GetControllerOrientationAndPosition(const int32 ControllerIndex, const EControllerHand DeviceHand, + FRotator& OutOrientation, FVector& OutPosition, + float WorldToMetersScale) const override; + virtual ETrackingStatus GetControllerTrackingStatus(const int32 ControllerIndex, + const EControllerHand DeviceHand) const override; +#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 3 */ + virtual FName GetMotionControllerDeviceTypeName() const override; + virtual void EnumerateSources(TArray& SourcesOut) const override; + +public: + // The IInputDevice interface. + + virtual void Tick(float DeltaTime) override; + virtual void SendControllerEvents() override; + virtual void SetMessageHandler(const TSharedRef& InMessageHandler) override; + virtual bool Exec(UWorld* InWorld, const TCHAR* Cmd, FOutputDevice& Ar) override; + virtual void SetChannelValue(int32 ControllerId, FForceFeedbackChannelType ChannelType, float Value) override; + virtual void SetChannelValues(int32 ControllerId, const FForceFeedbackValues& Values) override; + virtual bool SupportsForceFeedback(int32 ControllerId) override; + virtual bool IsGamepadAttached() const override; + +public: + // The IHandTracker interface. + + virtual FName GetHandTrackerDeviceTypeName() const override; + virtual bool IsHandTrackingStateValid() const override; + virtual bool GetKeypointState( + EControllerHand Hand, + EHandKeypoint Keypoint, FTransform& OutTransform, float& OutRadius) const override; + virtual bool GetAllKeypointStates( + EControllerHand Hand, + TArray& OutPositions, TArray& OutRotations, TArray& OutRadii) const override; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTracking/SenseGloveTracking.Build.cs b/Plugins/SenseGlove/Source/SenseGloveTracking/SenseGloveTracking.Build.cs new file mode 100644 index 0000000..291a7c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTracking/SenseGloveTracking.Build.cs @@ -0,0 +1,108 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using System.IO; +using UnrealBuildTool; + +public class SenseGloveTracking : ModuleRules +{ + public SenseGloveTracking(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "ApplicationCore", + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + "InputCore", + "InputDevice", + "OpenXRHMD", + "OpenXRInput", + // NOTE + // Only UE 5.3+ provides the XRBase plugin. +#if UE_5_3_OR_LATER + "XRBase", +#else + "OpenXR", +#endif + "Slate", + "SlateCore", + } + ); + +#if ! UE_5_4_OR_LATER + string OpenXRHMDPrivateIncludeDir = Path.GetFullPath(Target.RelativeEnginePath); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "Plugins"); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "Runtime"); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "OpenXR"); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "Source"); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "OpenXRHMD"); + OpenXRHMDPrivateIncludeDir = Path.Combine(OpenXRHMDPrivateIncludeDir, "Private"); + + PrivateIncludePaths.AddRange( + new string[] + { + OpenXRHMDPrivateIncludeDir, + } + ); +#endif + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveBackend", + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveSettings", + "SenseGloveTypes", + "SenseGloveUtils", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + } + ); + + AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenXR"); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp new file mode 100644 index 0000000..221f7c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGGloveTrackerKismetLibrary.cpp @@ -0,0 +1,79 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTrackingKismet/SGGloveTrackerKismetLibrary.h" + +#include "SGCore/SGHapticGlove.h" +#include "SGTracking/SGGloveTracker.h" + +USGGloveTracker* USGGloveTrackerKismetLibrary::GetInstance(UObject* WorldContextObject) +{ + return USGGloveTracker::GetInstance(WorldContextObject); +} + +USGHapticGlove* USGGloveTrackerKismetLibrary::GetGlove(const USGGloveTracker* GloveTracker, const bool bRight) +{ + return GloveTracker->GetGlove(bRight); +} + +USGHapticGlove* USGGloveTrackerKismetLibrary::GetLeftGlove(const USGGloveTracker* GloveTracker) +{ + return GloveTracker->GetLeftGlove(); +} + +USGHapticGlove* USGGloveTrackerKismetLibrary::GetRightGlove(const USGGloveTracker* GloveTracker) +{ + return GloveTracker->GetRightGlove(); +} + +bool USGGloveTrackerKismetLibrary::IsGloveConnected(const USGGloveTracker* GloveTracker, const bool bRight) +{ + return GloveTracker->IsGloveConnected(bRight); +} + +bool USGGloveTrackerKismetLibrary::IsLeftGloveConnected(const USGGloveTracker* GloveTracker) +{ + return GloveTracker->IsLeftGloveConnected(); +} + +bool USGGloveTrackerKismetLibrary::IsRightGloveConnected(const USGGloveTracker* GloveTracker) +{ + return GloveTracker->IsRightGloveConnected(); +} + +bool USGGloveTrackerKismetLibrary::IsAnyGloveConnected(const USGGloveTracker* GloveTracker) +{ + return GloveTracker->IsAnyGloveConnected(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGHMDTrackerKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGHMDTrackerKismetLibrary.cpp new file mode 100644 index 0000000..95c435c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGHMDTrackerKismetLibrary.cpp @@ -0,0 +1,78 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTrackingKismet/SGHMDTrackerKismetLibrary.h" + +#include "SGTracking/SGHMDTracker.h" + +FName USGHMDTrackerKismetLibrary::GetDeviceName() +{ + return FSGHMDTracker::GetDeviceName(); +} + +bool USGHMDTrackerKismetLibrary::IsMetaQuest2() +{ + return FSGHMDTracker::IsMetaQuest2(); +} + +bool USGHMDTrackerKismetLibrary::IsMetaQuestPro() +{ + return FSGHMDTracker::IsMetaQuestPro(); +} + +bool USGHMDTrackerKismetLibrary::IsMetaQuest3() +{ + return FSGHMDTracker::IsMetaQuest3(); +} + +bool USGHMDTrackerKismetLibrary::IsHtcVivePro() +{ + return FSGHMDTracker::IsHtcVivePro(); +} + +bool USGHMDTrackerKismetLibrary::IsHtcViveFocus3() +{ + return FSGHMDTracker::IsHtcViveFocus3(); +} + +bool USGHMDTrackerKismetLibrary::IsHtcViveXRElite() +{ + return FSGHMDTracker::IsHtcViveXRElite(); +} + +ESGHeadMountedDisplayDevice USGHMDTrackerKismetLibrary::GetDeviceType() +{ + return FSGHMDTracker::GetDeviceType(); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGXRTrackerKismetLibrary.cpp b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGXRTrackerKismetLibrary.cpp new file mode 100644 index 0000000..138db9f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SGTrackingKismet/SGXRTrackerKismetLibrary.cpp @@ -0,0 +1,46 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTrackingKismet/SGXRTrackerKismetLibrary.h" + +#include "UObject/Object.h" + +#include "SGTracking/SGXRTracker.h" + +bool USGXRTrackerKismetLibrary::GetMotionControllerData( + UObject* WorldContextObject, const EControllerHand Hand, FXRMotionControllerData& OutMotionControllerData) +{ + return FSGXRTracker::GetMotionControllerData(WorldContextObject, Hand, OutMotionControllerData); +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.cpp b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.cpp new file mode 100644 index 0000000..23bfd23 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTrackingKismet.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveTrackingKismetModule.h" + +IMPLEMENT_MODULE(FSenseGloveTrackingKismetModule, SenseGloveTrackingKismet) diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.h b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismet.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.cpp b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.cpp new file mode 100644 index 0000000..e9721a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.cpp @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTrackingKismetModule.h" + +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveTrackingKismetModule" + +void FSenseGloveTrackingKismetModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveTrackingKismet module..."); +} + +void FSenseGloveTrackingKismetModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveTrackingKismet module..."); +} + +void FSenseGloveTrackingKismetModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveTrackingKismet module has succeeded!"); +} + +void FSenseGloveTrackingKismetModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveTrackingKismet module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.h b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.h new file mode 100644 index 0000000..9d56a91 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Private/SenseGloveTrackingKismetModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveTrackingKismet" + +class FSenseGloveTrackingKismetModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h new file mode 100644 index 0000000..057d484 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGGloveTrackerKismetLibrary.h @@ -0,0 +1,75 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGGloveTrackerKismetLibrary.generated.h" + +class USGGloveTracker; +class USGHapticGlove; + +UCLASS(meta=(ScriptName = "SenseGloveTrackerKismetLibrary")) +class SENSEGLOVETRACKINGKISMET_API USGGloveTrackerKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | Glove Tracker", + meta=(WorldContext="WorldContextObject")) + static USGGloveTracker* GetInstance(UObject* WorldContextObject); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static USGHapticGlove* GetGlove(const USGGloveTracker* GloveTracker, const bool bRight); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static USGHapticGlove* GetLeftGlove(const USGGloveTracker* GloveTracker); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static USGHapticGlove* GetRightGlove(const USGGloveTracker* GloveTracker); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static bool IsGloveConnected(const USGGloveTracker* GloveTracker, const bool bRight); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static bool IsLeftGloveConnected(const USGGloveTracker* GloveTracker); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static bool IsRightGloveConnected(const USGGloveTracker* GloveTracker); + + UFUNCTION(BlueprintPure, Category="SenseGlove | Tracking | Glove Tracker") + static bool IsAnyGloveConnected(const USGGloveTracker* GloveTracker); +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGHMDTrackerKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGHMDTrackerKismetLibrary.h new file mode 100644 index 0000000..bf16475 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGHMDTrackerKismetLibrary.h @@ -0,0 +1,98 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "UObject/NameTypes.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" +#include "SGTypes/SGTrackingTypes.h" + +#include "SGHMDTrackerKismetLibrary.generated.h" + +UCLASS(meta=(ScriptName = "SenseGloveHeadMountDisplayKismetLibrary")) +class SENSEGLOVETRACKINGKISMET_API USGHMDTrackerKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static FName GetDeviceName(); + + /** + * Checks whether the HMD device is Meta Quest 2, or not. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsMetaQuest2(); + + /** + * Checks whether the HMD device is Meta Quest Pro, or not. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsMetaQuestPro(); + + /** + * Checks whether the HMD device is Meta Quest 3, or not. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsMetaQuest3(); + + /** + * Checks whether the HMD device is HTC VIVE Pro, or not. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsHtcVivePro(); + + /** + * Checks whether the HMD device is HTC VIVE Focus 3, or not. + * + * @remark At the moment, VIVE Focus 3 cannot be distinguished from VIVE XR Elite, so when IsHtcViveFocus3 returns + * true, IsHtcViveXRElite will return true as well; thus we cannot know for sure which headset we are running on. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsHtcViveFocus3(); + + /** + * Checks whether the HMD device is HTC VIVE XR Elite, or not. + * + * @remark At the moment, VIVE Focus 3 cannot be distinguished from VIVE XR Elite, so when IsHtcViveXRElite returns + * true, IsHtcViveFocus3 will return true as well; thus we cannot know for sure which headset we are running on. + */ + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static bool IsHtcViveXRElite(); + + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | HMD Tracker") + static ESGHeadMountedDisplayDevice GetDeviceType(); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGXRTrackerKismetLibrary.h b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGXRTrackerKismetLibrary.h new file mode 100644 index 0000000..ee13369 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/Public/SGTrackingKismet/SGXRTrackerKismetLibrary.h @@ -0,0 +1,58 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HeadMountedDisplayTypes.h" +#include "InputCoreTypes.h" +#include "UObject/ObjectMacros.h" + +#include "SGKismet/SGBlueprintFunctionLibrary.h" + +#include "SGXRTrackerKismetLibrary.generated.h" + +class UObject; + +UCLASS(meta=(ScriptName = "SenseGloveHeadMountDisplayKismetLibrary")) +class SENSEGLOVETRACKINGKISMET_API USGXRTrackerKismetLibrary final : public USGBlueprintFunctionLibrary +{ + GENERATED_BODY() + +public: + UFUNCTION(BlueprintCallable, Category="SenseGlove | Tracking | XR Tracker", + meta=(WorldContext="WorldContextObject")) + static bool GetMotionControllerData(UObject* WorldContextObject, EControllerHand Hand, + FXRMotionControllerData& OutMotionControllerData); +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/SenseGloveTrackingKismet.Build.cs b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/SenseGloveTrackingKismet.Build.cs new file mode 100644 index 0000000..aae9ab3 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTrackingKismet/SenseGloveTrackingKismet.Build.cs @@ -0,0 +1,76 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveTrackingKismet : ModuleRules +{ + public SenseGloveTrackingKismet(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "HeadMountedDisplay", + "InputCore", + "InputDevice", + "OpenXRHMD", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveCore", + "SenseGloveLog", + "SenseGloveKismet", + "SenseGloveTracking", + "SenseGloveTypes", + } + ); + + PrivateIncludePathModuleNames.AddRange( + new string[] + { + "SenseGloveBuildHacks", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGCoreTypes.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGCoreTypes.cpp new file mode 100644 index 0000000..cc52c96 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGCoreTypes.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGCoreTypes.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGDebugTypes.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGDebugTypes.cpp new file mode 100644 index 0000000..02d7080 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGDebugTypes.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGDebugTypes.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGFloatArray.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGFloatArray.cpp new file mode 100644 index 0000000..1ffdacf --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGFloatArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGFloatArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGNameArray.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGNameArray.cpp new file mode 100644 index 0000000..94c15b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGNameArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGNameArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGQuatArray.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGQuatArray.cpp new file mode 100644 index 0000000..d6c1135 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGQuatArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGQuatArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGRotatorArray.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGRotatorArray.cpp new file mode 100644 index 0000000..0b5de19 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGRotatorArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGRotatorArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTrackingTypes.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTrackingTypes.cpp new file mode 100644 index 0000000..028b814 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTrackingTypes.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGTrackingTypes.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTypes.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTypes.cpp new file mode 100644 index 0000000..b3249ab --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGTypes.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGTypes.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGVectorArray.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGVectorArray.cpp new file mode 100644 index 0000000..804edf0 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SGTypes/SGVectorArray.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGTypes/SGVectorArray.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.cpp new file mode 100644 index 0000000..cd38da6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTypes.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveTypesModule.h" + +IMPLEMENT_MODULE(FSenseGloveTypesModule, SenseGloveTypes) diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.h new file mode 100644 index 0000000..1602bbe --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypes.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.cpp b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.cpp new file mode 100644 index 0000000..0f00189 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveTypesModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveTypesModule" + +void FSenseGloveTypesModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveTypes module..."); +} + +void FSenseGloveTypesModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveTypes module..."); +} + +void FSenseGloveTypesModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveTypes module has succeeded!"); +} + +void FSenseGloveTypesModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveTypes module..."); +} + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.h new file mode 100644 index 0000000..55b15d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Private/SenseGloveTypesModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveTypes" + +class FSenseGloveTypesModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h new file mode 100644 index 0000000..086993f --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGCoreTypes.h @@ -0,0 +1,665 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +UENUM(BlueprintType) +enum class ESGBackendType : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Back-end info comes from shared memory on the device. */ + SharedMemory UMETA(DisplayName = "Shared Memory"), +}; + +/* Connection type of this device, as detected by the SGConnect library. */ +UENUM(BlueprintType) +enum class ESGConnectionType : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Could not determine which connection type this SGDevice is using, most likely because it is disconnected. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* USB Serial communication. */ + Serial UMETA(DisplayName = "Serial"), + + /* A bluetooth connection that creates up to two Serial Ports. */ + BluetoothSerial UMETA(DisplayName = "Bluetooth Serial"), + + /* Bluetooth Connection Via Android/Java SDK. */ + BluetoothAndroid UMETA(DisplayName = "Bluetooth Android"), +}; + +/** + * Used to access specific positions from the CV output, which is an array of Vect3D positions. + * @remarks Declared in CVHandOutput.cs because these enums are used to index the jointPositions array in that class. + */ +UENUM(BlueprintType) +enum class ESGCVHandPoints : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* The position of the Wrist as determined by the CV Model. */ + Wrist UMETA(DisplayName = "Wrist"), + + /* The position of the Thumb CMC Joint as determined by the CV Model. */ + ThumbCmc UMETA(DisplayName = "Thumb CMC"), + + /* The position of the Thumb MCP Joint as determined by the CV Model. */ + ThumbMcp UMETA(DisplayName = "Thumb MCP"), + + /* The position of the Thumb IP Joint as determined by the CV Model. */ + ThumbIp UMETA(DisplayName = "Thumb IP"), + + /* The position of the Thumb tip as determined by the CV Model. */ + ThumbTip UMETA(DisplayName = "Thumb Tip"), + + /* The position of the Index MCP Joint as determined by the CV Model. */ + IndexMcp UMETA(DisplayName = "Indexx MCP"), + + /* The position of the Index PIP Joint as determined by the CV Model. */ + IndexPip UMETA(DisplayName = "Index PIP"), + + /* The position of the Index DIP Joint as determined by the CV Model. */ + IndexDip UMETA(DisplayName = "Index DIP"), + + /* The position of the Index fingertip as determined by the CV Model. */ + IndexTip UMETA(DisplayName = "Index Tip"), + + /* The position of the Middle MCP Joint as determined by the CV Model. */ + MiddleMcp UMETA(DisplayName = "Middle MCP"), + + /* The position of the Middle PIP Joint as determined by the CV Model. */ + MiddlePip UMETA(DisplayName = "Middle PIP"), + + /* The position of the Middle DIP Joint as determined by the CV Model. */ + MiddleDip UMETA(DisplayName = "Middle DIP"), + + /* The position of the Middle fingertip as determined by the CV Model. */ + MiddleTip UMETA(DisplayName = "Middle Tip"), + + /* The position of the Ring MCP Joint as determined by the CV Model. */ + RingMcp UMETA(DisplayName = "Ring MCP"), + + /* The position of the Ring PIP Joint as determined by the CV Model. */ + RingPip UMETA(DisplayName = "Ring PIP"), + + /* The position of the Ring DIP Joint as determined by the CV Model. */ + RingDip UMETA(DisplayName = "Ring DIP"), + + /* The position of the Ring fingertip as determined by the CV Model. */ + RingTip UMETA(DisplayName = "Rint Tip"), + + /* The position of the Pinky MCP Joint as determined by the CV Model. */ + PinkyMcp UMETA(DisplayName = "Pinky MCP"), + + /* The position of the Pinky PIP Joint as determined by the CV Model. */ + PinkyPip UMETA(DisplayName = "Pinky PIP"), + + /* The position of the Pinky DIP Joint as determined by the CV Model. */ + PinkyDip UMETA(DisplayName = "Pinky DIP"), + + /* The position of the Pinky fingertip as determined by the CV Model. */ + PinkyTip UMETA(DisplayName = "Pinky Tip"), + + /* Utility enumerator to check if an array contains enough values. */ + All UMETA(DisplayName = "All"), +}; + +/* How much of the CV tracking is being used. Used by other APIs. */ +UENUM(BlueprintType) +enum class ESGCVTrackingDepth : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* No computer-vision is enabled. */ + Disabled UMETA(DisplayName = "Disabled"), + + /* Use CV only for the wrist position/rotation. */ + WristOnly UMETA(DisplayName = "Wrist Only"), + + /* Use CV for both the wrist location and Hand Position. */ + WristAndHandPose UMETA(DisplayName = "Wrist and Hand Pose"), +}; + +/* Specific devices within the SGCore library. */ +UENUM(BlueprintType) +enum class ESGDeviceType : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* This device is not recognized by the Sense Glove API. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* A Device that is in development, with direct access to sensor data and commands. */ + BetaDevice UMETA(DisplayName = "Beta Device"), + + /* An exoskeleton glove that provides force- and haptic feedback. */ + SenseGlove UMETA(DisplayName = "Sense Glove"), + + /* A soft glove with basic tracking, as well as force- and Haptic Feedback. */ + Nova UMETA(DisplayName = "Nova"), + + /* A soft glove with basic tracking, as well as force- and Haptic Feedback. */ + Nova2 UMETA(DisplayName = "Nova 2"), +}; + +/* One of the fingers on the hand. */ +UENUM(BlueprintType) +enum class ESGFinger : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Responsible for our evolutionary success! */ + Thumb UMETA(DisplayName = "Thumb"), + + /* Used to point at what you want. */ + Index UMETA(DisplayName = "Index"), + + /* On its own, this one is used to indicate frustration. */ + Middle UMETA(DisplayName = "Middle"), + + /* If you like it then you should have put a ___ on it. */ + Ring UMETA(DisplayName = "Ring"), + + /* The little finger. */ + Pinky UMETA(DisplayName = "Pinky"), +}; + +/* Anatomical movements of the finger joints. */ +UENUM(BlueprintType) +enum class ESGFingerMovement : uint8 +{ + None UMETA(DisplayName = "None"), + + /* Flexion of the first finger joint. */ + McpFlexion UMETA(DisplayName = "MCP Flexion"), + + /* Abduction of the first finger joint. */ + McpAbduction UMETA(DisplayName = "MCP Abduction"), + + /* Flexion of the second finger joint. */ + PipFlexion UMETA(DisplayName = "PIP Flexion"), + + /* Flexion of the third finger joint. */ + DipFlexion UMETA(DisplayName = "DIP Flexion"), +}; + +/* How this Sense Glove converts sensor data into a HandPose. */ +UENUM(BlueprintType) +enum class ESGFingerSolver : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */ + Interpolation UMETA(DisplayName = "Interpolation"), +}; + +/* Different types of Haptic Channels - with different behaviours. */ +UENUM(BlueprintType) +enum class ESGHapticChannelType : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /** + * This type of haptic channel can be constantly overridden. SGConnect will only send a command if a change occurs. + * Ideal for Force-Feedback. + */ + StreamingChannel UMETA(DisplayName = "Streaming Channel"), + + /* These commands must be sent once, after their queue is cleared. */ + FireAndForgetChannel UMETA(DisplayName = "Fire and Forget Channel"), +}; + +/* The Calibration State of this Glove. */ +UENUM(BlueprintType) +enum class ESGHapticGloveCalibrationState : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* No idea what the calibrationState of this glove is... */ + Unknown UMETA(DisplayName = "Unknown"), + + /* One or more sensors still need to move... */ + MoveFingers UMETA(DisplayName = "Move Fingers"), + + /* All sensors have moved. */ + AllSensorsMoved UMETA(DisplayName = "All Sensors Moved"), + + /* Calibration is locked in. Done collecting Data. */ + CalibrationLocked UMETA(DisplayName = "Calibration Locked"), +}; + +/* All of the locations supported by the SenseGlove API. */ +UENUM(BlueprintType) +enum class ESGHapticLocation : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Unknown location. Calling haptic function(s) with this parameter will not play anything. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* Fingertip of the Thumb. */ + ThumbTip UMETA(DisplayName = "Thumb Tip"), + + /* Fingertip of the Index Finger. */ + IndexTip UMETA(DisplayName = "Index Tip"), + + /* Fingertip of the Middle Finger. */ + MiddleTip UMETA(DisplayName = "Middle Tip"), + + /* Fingertip of the Ring Finger. */ + RingTip UMETA(DisplayName = "Ring Tip"), + + /* Fingertip of the Pinky Finger. */ + PinkyTip UMETA(DisplayName = "Pinky Tip"), + + /* Vibration on the hand palm, close to the index finger. */ + PalmIndexSide UMETA(DisplayName = "Palm Index Side"), + + /* Vibration on the hand palm close to the pinky finger. */ + PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"), + + /* Play this Haptic Effect on the whole hand. For General Hand Feedback. */ + WholeHand UMETA(DisplayName = "Whole Hand"), +}; + +/* Indices to access DeviceList data in Shared Memory. */ +UENUM(BlueprintType) +enum class ESGListFormat : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + Connected UMETA(DisplayName = "Connected"), + PpsGot UMETA(DisplayName = "PPS Got"), + DeviceType UMETA(DisplayName = "Device Type"), + CString UMETA(DisplayName = "C String"), + Address UMETA(DisplayName = "Address"), + ConnectType UMETA(DisplayName = "Connect Type"), + PpsSent UMETA(DisplayName = "PPS Sent"), + All UMETA(DisplayName = "All"), +}; + +/* State of the Nova's sensor Normalization. */ +UENUM(BlueprintType) +enum class ESGNormalizationState : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Unable to retrieve the state out of our Sensor Data :( */ + Unknown UMETA(DisplayName = "Unknown"), + + /* Developer has asked the glove to send raw data. */ + SendingRawData UMETA(DisplayName = "Sending Raw Data"), + + /* The glove is currently normalizing, but the fingers haven't moved enough. */ + Normalizing_MoveFingers UMETA(DisplayName = "Normalizing: Move Fingers"), + + /* Fires when all fingers have moved enough and you _could_ stop normalization + /// collection. */ + Normalizing_AwaitConfirm UMETA(DisplayName = "Normalizing: Await Confirm"), + + /* Normalization is completed. */ + NormalizationFinished UMETA(DisplayName = "Normalization Finished"), +}; + +/* Used to access a sensor Movement of the Nova_SensorData class. */ +UENUM(BlueprintType) +enum class ESGNovaSensorLocation : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Sideways motion; finger splay, moving the thumb away from the hand palm. */ + Abduction UMETA(DisplayName = "Abduction"), + + /* Flexion of any sensor. */ + Flexion UMETA(DisplayName = "Flexion"), +}; + +/* Used to access a sensor Movement of the Nova_SensorData class. */ +UENUM(BlueprintType) +enum class ESGNova2SensorLocation : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Sideways motion; finger splay, moving the thumb away from the hand palm. */ + Abduction UMETA(DisplayName = "Abduction"), + + /* Flexion of any sensor close to the thumb. */ + FlexionProximal UMETA(DisplayName = "Flexion Proximal"), + + /* flexion of any sensor further from the hub. */ + FlexionDistal UMETA(DisplayName = "Flexion Distal"), +}; + +/* Which vibration motors to send vibrations to. */ +UENUM(BlueprintType) +enum class ESGNova2VibroMotor : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Not sure which motor this is meant for. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* LRA Vibration Motor that is located on the thumb fingertip. */ + ThumbFingertip UMETA(DisplayName = "Thumb Fingertip"), + + /* LRA Vibration Motor that is located on the index fingertip. */ + IndexFingertip UMETA(DisplayName = "Index Fingertip"), + + /* LRA Vibration Motor that is located on the hand palm, roughly at the Index MCP joint. */ + PalmIndexSide UMETA(DisplayName = "Palm Index Side"), + + /* LRA Vibration Motor that is located on the hand palm, roughly at the Pinky MCP joint. */ + PalmPinkySide UMETA(DisplayName = "Palm Pinky Side"), +}; + +/* Order of values as they come in from the Nova. */ +UENUM(BlueprintType) +enum class ESGNovaCVar : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + ConstOpen UMETA(DisplayName = "Const Open"), + ID UMETA(DisplayName = "ID"), + GloveVersion UMETA(DisplayName = "Glove Version"), + FirmwareVersion UMETA(DisplayName = "Firmware Version"), + LeftRight UMETA(DisplayName = "Left Right"), + Functions UMETA(DisplayName = "Functions"), + ImuCorrection UMETA(DisplayName = "IMU Correction"), + + /* Utility value used in iteration / checking lengths. */ + AllC UMETA(DisplayName = "All C"), +}; + +/* Sensor data blocks. */ +UENUM(BlueprintType) +enum class ESGNovaData : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + Sensors UMETA(DisplayName = "Sensors"), + Imu UMETA(DisplayName = "IMU"), + All UMETA(DisplayName = "All"), +}; + +/* Which vibration motors to send vibrations to. */ +UENUM(BlueprintType) +enum class ESGNovaVibroMotor : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Not sure which motor to send this to. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* Vibration motor located at the back of the hand. A.k.a. "The Thumper". */ + BackOfHand UMETA(DisplayName = "Back of Hand"), + + /* Vibration motor located at the tip of the thumb. */ + ThumbTip UMETA(DisplayName = "Thumb Tip"), + + /* Vibration motor located at the tip of the index finger. */ + IndexFingertip UMETA(DisplayName = "Index Fingertip"), +}; + +/* Tracking Hardware used for positional tracking. */ +UENUM(BlueprintType) +enum class ESGPositionalTrackingHardware : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Custom tracking hardware, we don't apply any offsets. */ + Custom UMETA(DisplayName = "Custom"), + + /* HTC VIVE Tracker (v1.0 or v2.0). */ + ViveTracker UMETA(DisplayName = "VIVE Tracker"), + + /* Touch controller for Oculus Quest 2. */ + Quest2Controller UMETA(DisplayName = "Quest 2 Controller"), + + /* Wrist tracker for the VIVE Focus 3. */ + ViveFocus3WristTracker UMETA(DisplayName = "VIVE Focus 3 Wrist Tracker"), + + /* Oculus Touch Controller that comes with the Meta Quest Pro. */ + QuestProController UMETA(DisplayName = "Quest Pro Controller"), + + /* Oculus Quest 3 Controller. */ + Quest3Controller UMETA(DisplayName = "Quest 3 Controller"), +}; + +/* Indices to access Sensor Data in Shared Memory. */ +UENUM(BlueprintType) +enum class ESGSensorFormat : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + Sensors UMETA(DisplayName = "Sensors"), +}; + +/* Sense Glove C string Variables, enumerated for our convenience. */ +UENUM(BlueprintType) +enum class ESGSenseGloveCVar : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + ID UMETA(DisplayName = "ID"), + GloveVersion UMETA(DisplayName = "Glove Version"), + FirmwareVersion UMETA(DisplayName = "Firmware Version"), + LeftRight UMETA(DisplayName = "Left Right"), + Functions UMETA(DisplayName = "Functions"), + GlovePos UMETA(DisplayName = "Glove Pos"), + + /* All gloves have functionality up to this point. */ + GloveLengths UMETA(DisplayName = "Glove Lengths"), + + NumberOfSensors UMETA(DisplayName = "Number Of Sensors"), + ImuCorrection UMETA(DisplayName = "IMU Correction"), + + /* Utility value used in iteration / checking lengths. */ + AllC UMETA(DisplayName = "All C"), +}; + +/* Sense Glove sensor string Variables, enumerated for our convenience. */ +UENUM(BlueprintType) +enum class ESGSenseGloveSVar : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Real-time error */ + RealtimeError UMETA(DisplayName = "Real-time Error"), + + FingerSensors UMETA(DisplayName = "Finger Sensors"), + + ImuData UMETA(DisplayName = "IMU Data"), + + /* Watchdog error. */ + WatchdogError UMETA(DisplayName = "Watchdog Error"), + + /* Semaphore error */ + SemaphoreError UMETA(DisplayName = "Semaphore Error"), + + /* Utility value used in iteration / checking lengths. */ + AllS UMETA(DisplayName = "All S"), +}; + +/* A command to activate the SenseGlove Thumper module, which is responsible for wrist feedback. */ +UENUM(BlueprintType) +enum class ESGSenseGloveThumperCommand : uint8 +{ + /* None. */ + None UMETA(DisplayName = "None"), + + /* Turn off the thumper effects. */ + TurnOff UMETA(DisplayName = "Turn Off"), + + /* A 5-seconds long, constant vibration. */ + CueGameOver UMETA(DisplayName = "Cue Game Over"), + + /* A double-click at 100% intensity. */ + ButtonDouble100 UMETA(DisplayName = "Button Double 100"), + + /* A double click at 60% intensity. */ + ButtonDouble60 UMETA(DisplayName = "Button Double 60"), + + /* Simulates an impact of the hand at 100% intensity. */ + ImpactThump100 UMETA(DisplayName = "Impact Thump 100"), + + /* Simulates an impact of the hand at 30% intensity. */ + ImpactThump30 UMETA(DisplayName = "Impact Thump 30"), + + /* Simulates an sharp impact of the hand at 10% intensity. */ + ImpactThump10 UMETA(DisplayName = "Impact Thump 10"), + + /* A light vibration to cue the user that an object it picked up. 100% intensity. */ + ObjectGrasp100 UMETA(DisplayName = "Object Grasp 100"), + + /* A light vibration to cue the user that an object it picked up. 60% intensity. */ + ObjectGrasp60 UMETA(DisplayName = "Object Grasp 60"), + + /* A light vibration to cue the user that an object it picked up. 30% intensity. */ + ObjectGrasp30 UMETA(DisplayName = "Object Grasp 30"), +}; + +/* The way handPoses are smoothed in this class. */ +UENUM(BlueprintType) +enum class ESGSmoothingMethod : uint8 +{ + /** + * None. You'll always get the latest pose received. No performance increase, but might result in a "stop-motion" + * effect on lower frame-rates. + */ + None UMETA(DisplayName = "None"), + + /** + * Pretend you're one sample behind, and interpolate along the exact paths. More accurate, but we will lag 1 frame + * behind. + */ + InterpolateBehind UMETA(DisplayName = "Interpolated Behind"), + + /** + * Take the last two handPoses and estimate the current values based on extrapolation. Is perceived as "faster", + * but is more likely to overshoot during sudden changes in direction. + */ + ExtrapolateAhead UMETA(DisplayName = "Extraplate Ahead"), +}; + +/* Anatomical movements of the thumb joints. */ +UENUM(BlueprintType) +enum class ESGThumbMovement : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Pronation/Supination of the first finger joint. */ + CmcTwist UMETA(DisplayName = "CMC Twist"), + + /* Flexion of the first finger joint. */ + CmcFlexion UMETA(DisplayName = "CMC Flexion"), + + /* Abduction of the first finger joint. */ + CmcAbduction UMETA(DisplayName = "CMC Abduction"), + + /* Flexion of the second thumb joint. */ + McpFlexion UMETA(DisplayName = "MCP Flexion"), + + /* Flexion of the third thumb joint. */ + IpFlexion UMETA(DisplayName = "IP Flexion"), +}; + +/* How this Sense Glove converts sensor data into a HandPose. */ +UENUM(BlueprintType) +enum class ESGThumbSolver : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* Hand angles are interpolated based on the total flexion / abduction of the exoskeleton. */ + Interpolation UMETA(DisplayName = "Interpolation"), +}; + +/* Waveform type for an advanced Buzz Command. */ +UENUM(BlueprintType) +enum class ESGWaveformType : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* We're not sure what type of Waveform to use. */ + Unknown UMETA(DisplayName = "Unknown"), + + /* Smooth sine wave. */ + Sine UMETA(DisplayName = "Sine"), + + /* Can shift duty Cycle. */ + Square UMETA(DisplayName = "Square"), + + /* Inverse of SawDown. */ + SawUp UMETA(DisplayName = "Saw Up"), + + /* Inverse of SawUp. */ + SawDown UMETA(DisplayName = "Saw Down"), + + /* Triangle waveform. */ + Triangle UMETA(DisplayName = "Triangle"), + + /* A random, noisy signal. */ + Noise UMETA(DisplayName = "Noise"), +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGDebugTypes.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGDebugTypes.h new file mode 100644 index 0000000..9260fe7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGDebugTypes.h @@ -0,0 +1,56 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreTypes.h" +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +/** + * Determines the debug virtual hand drawing mode. + */ +UENUM(BlueprintType) +enum class ESGDebugVirtualHandDrawingMode : uint8 +{ + /** Do not draw any debug virtual hands. */ + None UMETA(DisplayName = "None"), + + /** Draw a debug virtual hand with cubic joints. */ + CubicJoints UMETA(DisplayName = "Cubic Joints"), + + /** Draw a debug virtual hand with gizmo joints. */ + GizmoJoints UMETA(DisplayName = "Gizmo Joints"), +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGFloatArray.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGFloatArray.h new file mode 100644 index 0000000..c9b27d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGFloatArray.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "UObject/ObjectMacros.h" + +#include "SGFloatArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVETYPES_API FSGFloatArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray FloatArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGNameArray.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGNameArray.h new file mode 100644 index 0000000..719cf8b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGNameArray.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "UObject/NameTypes.h" + +#include "SGNameArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVETYPES_API FSGNameArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray NameArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGQuatArray.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGQuatArray.h new file mode 100644 index 0000000..e0605ab --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGQuatArray.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Quat.h" + +#include "SGQuatArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVETYPES_API FSGQuatArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray QuatArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGRotatorArray.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGRotatorArray.h new file mode 100644 index 0000000..82fc80c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGRotatorArray.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Containers/Array.h" +#include "Math/Rotator.h" + +#include "SGRotatorArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVETYPES_API FSGRotatorArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray RotatorArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h new file mode 100644 index 0000000..bdaf0f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTrackingTypes.h @@ -0,0 +1,80 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +/** + * The Head-mounted Display device enum to determine the HMD device type. + */ +UENUM(BlueprintType) +enum class ESGHeadMountedDisplayDevice : uint8 +{ + /* The default none value. */ + None UMETA(DisplayName = "None"), + + /* The Meta Quest 2 HMD. */ + MetaQuest2 UMETA(DisplayName = "Meta Quest 2"), + + /* The Meta Quest Pro HMD. */ + MetaQuestPro UMETA(DisplayName = "Meta Quest Pro"), + + /* The Meta Quest 3 HMD. */ + MetaQuest3 UMETA(DisplayName = "Meta Quest 3"), + + /* The HTC VIVE Pro HMD. */ + HtcVivePro UMETA(DisplayName = "HTC VIVE Pro"), + + /* The HTC VIVE Focus 3 HMD. */ + HtcViveFocus3 UMETA(DisplayName = "HTC VIVE Focus 3"), + + /* The HTC VIVE XR Elite HMD. */ + HtcViveXRElite UMETA(DisplayName = "HTC VIVE XR Elite"), +}; + +/* + * The + */ +UENUM(BlueprintType) +enum class ESGViveHMDDetectionPriority : uint8 +{ + /* First try to detect HTC VIVE Focus 3. */ + HtcViveFocus3First UMETA(DisplayName = "HTC VIVE Focus 3 First"), + + /* First try to detect HTC VIVE XR Elite. */ + HtcViveXREliteFirst UMETA(DisplayName = "HTC VIVE XR Elite First"), +}; diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTypes.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTypes.h new file mode 100644 index 0000000..e6d7f10 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGTypes.h @@ -0,0 +1,59 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "UObject/ObjectMacros.h" + +/** + * The engine scalability settings. + */ +UENUM(BlueprintType) +enum class ESGEngineScalabilitySettings : uint8 +{ + Low = 0 UMETA(DisplayName = "Low"), + Medium = 1 UMETA(DisplayName = "Medium"), + High = 2 UMETA(DisplayName = "High"), + Epic = 3 UMETA(DisplayName = "Epic"), + Cinematic = 4 UMETA(DisplayName = "Cinematic"), + + /** + * This will be used for benchmarking purpose. Then it should set the engine scalability settings to one of the + * other levels. + */ + Auto = 254 UMETA(DisplayName = "Auto"), + Custom = 255 UMETA(DisplayName = "Custom"), +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGVectorArray.h b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGVectorArray.h new file mode 100644 index 0000000..19e2964 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/Public/SGTypes/SGVectorArray.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "HAL/Platform.h" +#include "Math/Vector.h" + +#include "SGVectorArray.generated.h" + +USTRUCT(BlueprintType) +struct SENSEGLOVETYPES_API FSGVectorArray +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere, Category="SenseGlove | Types | Nested Arrays", BlueprintReadWrite) + TArray VectorArray; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveTypes/SenseGloveTypes.Build.cs b/Plugins/SenseGlove/Source/SenseGloveTypes/SenseGloveTypes.Build.cs new file mode 100644 index 0000000..10b3b1b --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveTypes/SenseGloveTypes.Build.cs @@ -0,0 +1,62 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveTypes : ModuleRules +{ + public SenseGloveTypes(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + "SenseGloveLog", + } + ); + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGAngles.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGAngles.cpp new file mode 100644 index 0000000..c555285 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGAngles.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGUtils/SGAngles.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGArrayUtils.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGArrayUtils.cpp new file mode 100644 index 0000000..6562863 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGArrayUtils.cpp @@ -0,0 +1,140 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGUtils/SGArrayUtils.h" + +#include "SGUtils/SGUnits.h" + +TArray FSGArrayUtils::QuatsToRotators(const TArray& QuatsArray) +{ + TArray RotatorsArray; + + for (const FQuat& Quat: QuatsArray) + { + FRotator Rotator{Quat.Rotator()}; + RotatorsArray.Add(MoveTemp(Rotator)); + } + + return RotatorsArray; +} + +TArray> FSGArrayUtils::QuatsToRotators(const TArray>& QuatsNestedArray) +{ + TArray> RotatorsNestedArray; + + for (const TArray& InnerQuatsArray: QuatsNestedArray) + { + TArray InnerRotatorsArray{QuatsToRotators(InnerQuatsArray)}; + RotatorsNestedArray.Add(MoveTemp(InnerRotatorsArray)); + } + + return RotatorsNestedArray; +} + +TArray FSGArrayUtils::RotatorsToQuats(const TArray& RotatorsArray) +{ + TArray QuatsArray; + + for (const FRotator& Rotator: RotatorsArray) + { + FQuat Quat{Rotator.Quaternion()}; + QuatsArray.Add(MoveTemp(Quat)); + } + + return QuatsArray; +} + +TArray> FSGArrayUtils::RotatorsToQuats(const TArray>& RotatorsNestedArray) +{ + TArray> QuatsNestedArray; + + for (const TArray& RotatorsInnerArray: RotatorsNestedArray) + { + TArray InnerQuatsArray{RotatorsToQuats(RotatorsInnerArray)}; + QuatsNestedArray.Add(MoveTemp(InnerQuatsArray)); + } + + return QuatsNestedArray; +} + +TArray FSGArrayUtils::FromMillimeters(const std::vector& Vector) +{ + TArray Array; + + for (const float Value: Vector) + { + Array.Add(FSGUnits::MillimetersToCentimeters(Value)); + } + + return Array; +} + +TArray> FSGArrayUtils::FromMillimeters(const std::vector>& NestedVector) +{ + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromMillimeters(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; +} + +std::vector FSGArrayUtils::ToMillimeters(const TArray& Array) +{ + std::vector Vector; + + for (const float Value: Array) + { + Vector.emplace_back(FSGUnits::CentimetersToMillimeters(Value)); + } + + return Vector; +} + +std::vector> FSGArrayUtils::ToMillimeters(const TArray>& NestedArray) +{ + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToMillimeters(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEditorUtils.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEditorUtils.cpp new file mode 100644 index 0000000..0652a89 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEditorUtils.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGUtils/SGEditorUtils.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEngineUtils.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEngineUtils.cpp new file mode 100644 index 0000000..59f82e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGEngineUtils.cpp @@ -0,0 +1,104 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGUtils/SGEngineUtils.h" + +#if WITH_EDITOR +#include "Editor.h" +#endif /* WITH_EDITOR */ +#include "Engine/Engine.h" +#include "Engine/GameViewportClient.h" +#include "Engine/World.h" +#include "Subsystems/EngineSubsystem.h" + +UWorld* FSGEngineUtils::GetWorld() +{ + UWorld* World{nullptr}; + +#if WITH_EDITOR + if (GIsEditor) + { + if (IsValid(GEditor)) + { + { + const bool bIsPIE = GPlayInEditorID != -1; + const int32 WorldPIEInstance = bIsPIE ? GPlayInEditorID : 1; + const FWorldContext* WorldContext{GEditor->GetPIEWorldContext(WorldPIEInstance)}; + if (WorldContext) + { + World = WorldContext->World(); + } + } + + if (!IsValid(World) && IsInGameThread() && !(GEditor->PlayWorld || GIsPlayInEditorWorld)) + { + World = GEditor->GetEditorWorldContext(false).World(); + } + } + + if (!IsValid(World) && IsValid(GEngine)) + { + const UGameViewportClient* Viewport{GEngine->GameViewport}; + if (IsValid(Viewport)) + { + World = Viewport->GetWorld(); + } + } + } + else + { + if (IsValid(GEngine)) + { + World = GEngine->GetCurrentPlayWorld(nullptr); + } + } +#else /* WITH_EDITOR */ + if (IsValid(GEngine)) + { + World = GEngine->GetCurrentPlayWorld(nullptr); + } +#endif /* WITH_EDITOR */ + + if (!IsValid(World) && IsValid(GEngine)) + { + UEngineSubsystem* EngineSubsystem{GEngine->GetEngineSubsystem()}; + if (IsValid(EngineSubsystem)) + { + World = EngineSubsystem->GetWorld(); + } + } + + return World; +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGUnits.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGUnits.cpp new file mode 100644 index 0000000..bef9502 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SGUtils/SGUnits.cpp @@ -0,0 +1,36 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SGUtils/SGUnits.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.cpp new file mode 100644 index 0000000..16f55b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.cpp @@ -0,0 +1,40 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveUtils.h" +#include "Modules/ModuleManager.h" +#include "SenseGloveUtilsModule.h" + +IMPLEMENT_MODULE(FSenseGloveUtilsModule, SenseGloveUtils) \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.h new file mode 100644 index 0000000..5e09722 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtils.h @@ -0,0 +1,38 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "CoreMinimal.h" \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.cpp b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.cpp new file mode 100644 index 0000000..e3416bb --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.cpp @@ -0,0 +1,61 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#include "SenseGloveUtilsModule.h" +#include "SGLog/SGLog.h" + +#define LOCTEXT_NAMESPACE "FSenseGloveUtilsModule" + +void FSenseGloveUtilsModule::StartupModule() +{ + SGLOG("Starting up the SenseGloveUtils module..."); +} + +void FSenseGloveUtilsModule::PreUnloadCallback() +{ + SGLOG("Unloading the SenseGloveUtils module..."); +} + +void FSenseGloveUtilsModule::PostLoadCallback() +{ + SGLOG("Loading of SenseGloveUtils module has succeeded!"); +} + +void FSenseGloveUtilsModule::ShutdownModule() +{ + SGLOG("Shutting down the SenseGloveUtils module..."); +} + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.h new file mode 100644 index 0000000..8282c3c --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Private/SenseGloveUtilsModule.h @@ -0,0 +1,51 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Modules/ModuleInterface.h" + +#define LOCTEXT_NAMESPACE "SenseGloveUtils" + +class FSenseGloveUtilsModule : public IModuleInterface +{ +public: + virtual void StartupModule() override; + virtual void PreUnloadCallback() override; + virtual void PostLoadCallback() override; + virtual void ShutdownModule() override; +}; + +#undef LOCTEXT_NAMESPACE \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGAngles.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGAngles.h new file mode 100644 index 0000000..7843eae --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGAngles.h @@ -0,0 +1,129 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Vector.h" + +#include "SGTypes/SGCoreTypes.h" + +class SENSEGLOVEUTILS_API FSGAngles final +{ +public: + static FORCEINLINE float TransformToSenseGlove(const float Degrees) + { + return FMath::DegreesToRadians(Degrees); + } + + static FORCEINLINE float TransformToSenseGlove(const int32 Movement, const float Direction) + { + // 0 = twist, 1 = flexion/extension, 2 = abduction + return FMath::DegreesToRadians(Movement != 1 ? -Direction : Direction); + } + + static FORCEINLINE FVector TransformToSenseGlove(const FVector& Vector) + { + return FMath::DegreesToRadians(FVector(-Vector.X, Vector.Y, -Vector.Z)); + } + + template + static FORCEINLINE V TransformToSenseGlove(const FVector& Vector) + { + return FMath::DegreesToRadians(V(-Vector.X, Vector.Y, -Vector.Z)); + } + + static FORCEINLINE float TransformToUnreal(const float Radians) + { + return FMath::RadiansToDegrees(Radians); + } + + static FORCEINLINE constexpr float TransformToUnreal(const int32 Movement, const float Direction) + { + /// TODO + /// values require validation. + + // 0 = twist, 1 = flexion/extension, 2 = abduction + return Movement != 1 ? -Direction : Direction; + } + + static FORCEINLINE constexpr float TransformToUnreal(const ESGFingerMovement Movement, const float Direction) + { + ensureAlwaysMsgf(Movement != ESGFingerMovement::None, TEXT("none is not a valid value!")); + + /// TODO + /// values require validation. + + // 0 = twist, 1 = flexion/extension, 2 = abduction + /// TODO + /// Which flexions should be ignored? + return (Movement != ESGFingerMovement::McpFlexion && Movement != ESGFingerMovement::PipFlexion && Movement != + ESGFingerMovement::PipFlexion) + ? -Direction + : Direction; + } + + static FORCEINLINE float TransformToUnreal(const ESGThumbMovement Movement, const float Direction) + { + ensureAlwaysMsgf(Movement != ESGThumbMovement::None, TEXT("none is not a valid value!")); + + /// TODO + /// values require validation. + + // 0 = twist, 1 = flexion/extension, 2 = abduction + /// TODO + /// Which flexions should be ignored? + return FMath::RadiansToDegrees( + Movement != ESGThumbMovement::CmcFlexion + && Movement != ESGThumbMovement::McpFlexion + && Movement != ESGThumbMovement::IpFlexion + ? -Direction + : Direction); + } + + static FORCEINLINE FVector TransformToUnreal(const FVector& Vector) + { + return FMath::RadiansToDegrees(FVector(-Vector.X, Vector.Y, -Vector.Z)); + } + + template + static FORCEINLINE FVector TransformToUnreal(const V& Vector) + { + return FMath::RadiansToDegrees(FVector(-Vector.GetX(), Vector.GetY(), -Vector.GetZ())); + } + +public: + FSGAngles() = delete; + virtual ~FSGAngles() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGArrayUtils.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGArrayUtils.h new file mode 100644 index 0000000..be048fd --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGArrayUtils.h @@ -0,0 +1,751 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include +#include + +#include "SGAngles.h" +#include "Containers/Array.h" +#include "Containers/StringConv.h" +#include "Math/Quat.h" +#include "Math/Rotator.h" +#include "Math/Vector.h" +#include "Templates/UnrealTemplate.h" + +#include "SGUtils/SGUnits.h" + +class SENSEGLOVEUTILS_API FSGArrayUtils final +{ +public: + template + static FORCEINLINE TArray FromStdVector(const std::vector& Vector) + { + const TArray Array{&Vector[0], StaticCast(Vector.size())}; + return Array; + } + + /// NOTE + /// std::vector is a non conforming container. Since it packs bools to be stored in one bit, + /// it cannot provide a bool reference. Thus, FSGArrayUtils::FromStdVector() cannot be used. + /// Hence, the specialization. + static TArray FromStdVector(const std::vector& Vector) + { + TArray Array; + + for (const bool bValue: Vector) + { + Array.Add(bValue); + } + + return Array; + } + + static TArray FromStdVector(const std::vector& Vector) + { + TArray Array; + + for (const std::string& StdString: Vector) + { + FString String{UTF8_TO_TCHAR(StdString.c_str())}; + Array.Add(MoveTemp(String)); + } + + return Array; + } + + template + static TArray> FromStdVector(const std::vector>& NestedVector) + { + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromStdVector(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + template + static TArray FromStdVector(const std::vector& Vector) + { + TArray Array; + + for (const T1& T1Element: Vector) + { + T2 T2Element(T1Element); + Array.Add(MoveTemp(T2Element)); + } + + return Array; + } + + template + static TArray> FromStdVector(const std::vector>& NestedVector) + { + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromStdVector(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + template + static TArray FromStdVector(const std::vector& Vector) + { + TArray Array; + + for (const T1& T1Element: Vector) + { + IntermediateImpl ImplElement(T1Element); + T2 T2Element((ImplElement.*ToT2TypeMethod)()); + Array.Add(MoveTemp(T2Element)); + } + + return Array; + } + + template + static TArray> FromStdVector(const std::vector>& NestedVector) + { + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromStdVector(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + template + static FORCEINLINE std::vector ToStdVector(const TArray& Array) + { + std::vector Vector(&Array[0], &Array[0] + Array.Num()); + return Vector; + } + + static std::vector ToStdVector(const TArray& Array) + { + std::vector Vector; + + for (const FString& String: Array) + { + std::string StdString{TCHAR_TO_UTF8(*String)}; + Vector.emplace_back(MoveTemp(StdString)); + } + + return Vector; + } + + template + static std::vector> ToStdVector(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToStdVector(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + template + static std::vector ToStdVector(const TArray& Array) + { + std::vector Vector; + + for (const T1& T1Element: Array) + { + T2 T2Element((T1Element.*ToUnderlyingTypeMethod)()); + Vector.emplace_back(MoveTemp(T2Element)); + } + + return Vector; + } + + template + static std::vector> ToStdVector(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToStdVector(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + template + static std::vector ToStdVector(const TArray& Array) + { + std::vector Vector; + + for (const T1& T1Element: Array) + { + IntermediateImpl ImplElement(T1Element); + T2 T2Element((ImplElement.*ToUnderlyingTypeMethod)()); + Vector.emplace_back(MoveTemp(T2Element)); + } + + return Vector; + } + + template + static std::vector> ToStdVector(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToStdVector(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + template + static TArray FromImplType(const TArray& ImplArray) + { + TArray Array; + + for (const T1& T1Element: ImplArray) + { + T2 T2Element(T1Element); + Array.Add(MoveTemp(T2Element)); + } + + return Array; + } + + template + static TArray FromImplType(UObject* Outer, const TArray& ImplArray) + { + TArray Array; + + for (const T1& T1Element: ImplArray) + { + T2* T2Element(NewObjectMethod(Outer, T1Element)); + Array.Add(MoveTemp(T2Element)); + } + + return Array; + } + + template + static TArray> FromImplType(const TArray>& NestedImplArray) + { + TArray> NestedArray; + + for (const TArray& InnerImplArray: NestedImplArray) + { + TArray InnerArray{FromImplType(InnerImplArray)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + template + static TArray> FromImplType(UObject* Outer, const TArray>& NestedImplArray) + { + TArray> NestedArray; + + for (const TArray& InnerImplArray: NestedImplArray) + { + TArray InnerArray{FromImplType(Outer, InnerImplArray)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + template + static TArray FromImplType(const TArray>& NestedImplArray) + { + TArray NestedBPArray; + + for (const TArray& InnerImplArray: NestedImplArray) + { + TArray InnerArray{FromImplType(InnerImplArray)}; + S InnerArrayContainer{MoveTemp(InnerArray)}; + NestedBPArray.Add(MoveTemp(InnerArrayContainer)); + } + + return NestedBPArray; + } + + template + static TArray FromImplType(UObject* Outer, const TArray>& ImplArray) + { + TArray Array; + + for (const TArray& InnerImplArray: ImplArray) + { + TArray InnerArray{FromImplType(Outer, InnerImplArray)}; + S InnerArrayContainer{MoveTemp(InnerArray)}; + Array.Add(MoveTemp(InnerArrayContainer)); + } + + return Array; + } + + template + static TArray FromImplType(const TArray>& ImplArray) + { + TArray Array; + + for (const TArray& InnerImplArray: ImplArray) + { + TArray InnerArray{FromImplType(InnerImplArray)}; + S InnerArrayContainer{MoveTemp(InnerArray)}; + Array.Add(MoveTemp(InnerArrayContainer)); + } + + return Array; + } + + template + static TArray ToImplType(const TArray& Array) + { + TArray ImplArray; + + for (const T1& T1Element: Array) + { + T2 T2Element((T1Element.*ToUnderlyingTypeMethod)()); + ImplArray.Add(MoveTemp(T2Element)); + } + + return ImplArray; + } + + template + static TArray ToImplType(const TArray& Array) + { + TArray ImplArray; + + for (const T1* T1Element: Array) + { + T2 T2Element((T1Element->*ToUnderlyingTypeMethod)()); + ImplArray.Add(MoveTemp(T2Element)); + } + + return ImplArray; + } + + template + static TArray> ToImplType(const TArray>& Array) + { + TArray> ImplArray; + + for (const TArray& InnerArray: Array) + { + TArray InnerImplArray{ToImplType(InnerArray)}; + ImplArray.Add(MoveTemp(InnerImplArray)); + } + + return ImplArray; + } + + template + static TArray> ToImplType(const TArray>& Array) + { + TArray> ImplArray; + + for (const TArray& InnerArray: Array) + { + TArray InnerImplArray{ToImplType(InnerArray)}; + ImplArray.Add(MoveTemp(InnerImplArray)); + } + + return ImplArray; + } + + template S::* + InnerArray> + static TArray> ToImplType(const TArray& Array) + { + TArray> ImplArray; + + for (const S& InnerArrayContainer: Array) + { + TArray InnerImplArray{ToImplType(InnerArrayContainer.*InnerArray)}; + ImplArray.Add(MoveTemp(InnerImplArray)); + } + + return ImplArray; + } + + template S::* + InnerArray> + static TArray> ToImplType(const TArray& Array) + { + TArray> ImplArray; + + for (const S& InnerArrayContainer: Array) + { + TArray InnerImplArray{ToImplType(InnerArrayContainer.*InnerArray)}; + ImplArray.Add(MoveTemp(InnerImplArray)); + } + + return ImplArray; + } + + template S::*InnerArray> + static TArray> FromNestedBPArray(const TArray& NestedBPArray) + { + TArray> NestedArray; + + for (const S& InnerBPArrayContainer: NestedBPArray) + { + NestedArray.Add(InnerBPArrayContainer.*InnerArray); + } + + return NestedArray; + } + + template + static TArray ToNestedBPArray(const TArray>& Array) + { + TArray NestedBPArray; + + for (const TArray& InnerArray: Array) + { + S InnerBPArrayContainer{InnerArray}; + NestedBPArray.Add(MoveTemp(InnerBPArrayContainer)); + } + + return NestedBPArray; + } + + template + static TArray ToNestedBPArray(const TArray>& NestedArray) + { + TArray NestedBPArray; + + for (const TArray& InnerArray: NestedArray) + { + S InnerBPArrayContainer{InnerArray}; + NestedBPArray.Add(MoveTemp(InnerBPArrayContainer)); + } + + return NestedBPArray; + } + + static TArray QuatsToRotators(const TArray& QuatsArray); + static TArray> QuatsToRotators(const TArray>& QuatsArray); + + template S::*InnerArray> + static TArray> QuatsToRotators(const TArray& QuatsNestedArray) + { + TArray> RotatorsArray; + + for (const S& QuatsInnerBPArrayContainer: QuatsNestedArray) + { + RotatorsArray.Add(QuatsToRotators(QuatsInnerBPArrayContainer.*InnerArray)); + } + + return RotatorsArray; + } + + template + static TArray QuatsToRotators(const TArray>& QuatsArray) + { + TArray RotatorsNestedBPArray; + + for (const TArray& QuatsInnerArray: QuatsArray) + { + S RotatorsInnerBPArrayContainer{QuatsToRotators(QuatsInnerArray)}; + RotatorsNestedBPArray.Add(MoveTemp(RotatorsInnerBPArrayContainer)); + } + + return RotatorsNestedBPArray; + } + + template Q::*InnerArray> + static TArray QuatsToRotators(const TArray& QuatsNestedArray) + { + TArray RotatorsNestedBPArray; + + for (const Q& QuatsInnerArrayContainer: QuatsNestedArray) + { + R RotatorsInnerBPArrayContainer{QuatsToRotators(QuatsInnerArrayContainer.*InnerArray)}; + RotatorsNestedBPArray.Add(MoveTemp(RotatorsInnerBPArrayContainer)); + } + + return RotatorsNestedBPArray; + } + + static TArray RotatorsToQuats(const TArray& RotatorsNestedArray); + static TArray> RotatorsToQuats(const TArray>& RotatorsNestedArray); + + template S::*InnerArray> + static TArray> RotatorsToQuats(const TArray& RotatorsNestedArray) + { + TArray> QuatsArray; + + for (const S& RotatorsInnerBPArrayContainer: RotatorsNestedArray) + { + QuatsArray.Add(RotatorsToQuats(RotatorsInnerBPArrayContainer.*InnerArray)); + } + + return QuatsArray; + } + + template + static TArray RotatorsToQuats(const TArray>& RotatorsNestedArray) + { + TArray QuatsNestedBPArray; + + for (const TArray& RotatorsInnerArray: RotatorsNestedArray) + { + S QuatsInnerBPArrayContainer{RotatorsToQuats(RotatorsInnerArray)}; + QuatsNestedBPArray.Add(MoveTemp(QuatsInnerBPArrayContainer)); + } + + return QuatsNestedBPArray; + } + + template Q::*InnerArray> + static TArray RotatorsToQuats(const TArray& RotatorsNestedArray) + { + TArray QuatsNestedBPArray; + + for (const Q& RotatorsInnerArrayContainer: RotatorsNestedArray) + { + R QuatsInnerBPArrayContainer{RotatorsToQuats(RotatorsInnerArrayContainer.*InnerArray)}; + QuatsNestedBPArray.Add(MoveTemp(QuatsInnerBPArrayContainer)); + } + + return QuatsNestedBPArray; + } + + static TArray FromMillimeters(const std::vector& Vector); + static TArray> FromMillimeters(const std::vector>& NestedVector); + + template + static TArray FromMillimeters(const std::vector& Vector) + { + TArray Array; + + for (const V3D& Value: Vector) + { + Array.Add(FSGUnits::MillimetersToCentimeters(Value)); + } + + return Array; + } + + template + static TArray> FromMillimeters(const std::vector>& NestedVector) + { + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromMillimeters(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + + static std::vector ToMillimeters(const TArray& Array); + static std::vector> ToMillimeters(const TArray>& NestedArray); + + template S::*InnerArray> + static std::vector> ToMillimeters(const TArray& NestedBPArray) + { + std::vector> NestedVector; + + for (const S& InnerBPArrayContainer: NestedBPArray) + { + std::vector InnerVector{ToMillimeters(InnerBPArrayContainer.*InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + template + static std::vector ToMillimeters(const TArray& Array) + { + std::vector Vector; + + for (const FVector& Value: Array) + { + Vector.emplace_back(FSGUnits::CentimetersToMillimeters(Value)); + } + + return Vector; + } + + template + static std::vector> ToMillimeters(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToMillimeters(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + static std::vector ToSenseGloveAngles(const TArray& Array) + { + std::vector Vector; + + for (const float Value: Array) + { + Vector.emplace_back(FSGAngles::TransformToSenseGlove(Value)); + } + + return Vector; + } + + static std::vector> ToSenseGloveAngles(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToSenseGloveAngles(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + template + static std::vector ToSenseGloveAngles(const TArray& Array) + { + std::vector Vector; + + for (const FVector& Value: Array) + { + Vector.emplace_back(FSGAngles::TransformToSenseGlove(Value)); + } + + return Vector; + } + + template + static std::vector> ToSenseGloveAngles(const TArray>& NestedArray) + { + std::vector> NestedVector; + + for (const TArray& InnerArray: NestedArray) + { + std::vector InnerVector{ToSenseGloveAngles(InnerArray)}; + NestedVector.emplace_back(MoveTemp(InnerVector)); + } + + return NestedVector; + } + + static TArray FromSenseGloveAngles(const std::vector& Vector) + { + TArray Array; + + for (const float Value: Vector) + { + Array.Add(FSGAngles::TransformToUnreal(Value)); + } + + return Array; + } + + static TArray> FromSenseGloveAngles(const std::vector>& NestedVector) + { + TArray> Array; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromSenseGloveAngles(InnerVector)}; + Array.Add(MoveTemp(InnerArray)); + } + + return Array; + } + + template + static TArray FromSenseGloveAngles(const std::vector& Vector) + { + TArray Array; + + for (const V3D& Value: Vector) + { + Array.Add(FSGAngles::TransformToUnreal(Value)); + } + + return Array; + } + + template + static TArray> FromSenseGloveAngles(const std::vector>& NestedVector) + { + TArray> NestedArray; + + for (const std::vector& InnerVector: NestedVector) + { + TArray InnerArray{FromSenseGloveAngles(InnerVector)}; + NestedArray.Add(MoveTemp(InnerArray)); + } + + return NestedArray; + } + +public: + FSGArrayUtils() = delete; + virtual ~FSGArrayUtils() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEditorUtils.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEditorUtils.h new file mode 100644 index 0000000..9ddd3ed --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEditorUtils.h @@ -0,0 +1,43 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +class SENSEGLOVEUTILS_API FSGEditorUtils final +{ +public: + FSGEditorUtils() = delete; + virtual ~FSGEditorUtils() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEngineUtils.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEngineUtils.h new file mode 100644 index 0000000..f317f93 --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGEngineUtils.h @@ -0,0 +1,48 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +class UWorld; + +class SENSEGLOVEUTILS_API FSGEngineUtils final +{ +public: + static UWorld* GetWorld(); + +public: + FSGEngineUtils() = delete; + virtual ~FSGEngineUtils() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGUnits.h b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGUnits.h new file mode 100644 index 0000000..15ca35a --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/Public/SGUtils/SGUnits.h @@ -0,0 +1,78 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +#pragma once + +#include "Math/Vector.h" + +class SENSEGLOVEUTILS_API FSGUnits final +{ +public: + static FORCEINLINE constexpr float CentimetersToMillimetersMultiplier() + { + return 10.0f; + } + + static FORCEINLINE constexpr float MillimetersToCentimetersMultiplier() + { + return 0.1f; + } + + static FORCEINLINE float CentimetersToMillimeters(const float Value) + { + return Value * CentimetersToMillimetersMultiplier(); + } + + template + static FORCEINLINE V3D CentimetersToMillimeters(const FVector& Vector) + { + return V3DImpl(Vector * CentimetersToMillimetersMultiplier()).ToVect3D(); + } + + static FORCEINLINE float MillimetersToCentimeters(const float Value) + { + return Value * MillimetersToCentimetersMultiplier(); + } + + template + static FORCEINLINE FVector MillimetersToCentimeters(const V3D& Vect3D) + { + return V3DImpl(Vect3D).ToFVector() * MillimetersToCentimetersMultiplier(); + } + +public: + FSGUnits() = delete; + virtual ~FSGUnits() = delete; +}; \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/SenseGloveUtils/SenseGloveUtils.Build.cs b/Plugins/SenseGlove/Source/SenseGloveUtils/SenseGloveUtils.Build.cs new file mode 100644 index 0000000..71f8e9e --- /dev/null +++ b/Plugins/SenseGlove/Source/SenseGloveUtils/SenseGloveUtils.Build.cs @@ -0,0 +1,72 @@ +/** + * @file + * + * @author Mamadou Babaei + * + * @section LICENSE + * + * (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. + * + * @section DESCRIPTION + * + * + */ + + +using System; +using UnrealBuildTool; + +public class SenseGloveUtils : ModuleRules +{ + public SenseGloveUtils(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs; + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "Core", + "CoreUObject", + "Engine", + } + ); + + if (Target.bBuildEditor) + { + PrivateDependencyModuleNames.AddRange( + new string[] + { + "UnrealEd", + } + ); + } + + PrivateDependencyModuleNames.AddRange( + new string[] + { + "SenseGloveLog", + "SenseGloveTypes", + } + ); + } +} \ No newline at end of file diff --git a/Plugins/SenseGlove/Source/ThirdParty/android/sgconnect.jar b/Plugins/SenseGlove/Source/ThirdParty/android/sgconnect.jar new file mode 100644 index 0000000..a795b2f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/android/sgconnect.jar @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0518583cb00a2816e3e0c91c1a559d372d03e16975a9c73be9da623085ad7905 +size 41018 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Android.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Android.hpp new file mode 100644 index 0000000..966c634 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Android.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:419d0d2df8576af7cc13675ca3f71edf3c525a5b2d9233e8fa6a47929bf0a3b5 +size 1905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Connection.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Connection.hpp new file mode 100644 index 0000000..a300a77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Connection.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3e83b1e798f0ab1e33246acb6cb60e963f9d5c43abc8551a1762e3443a7a69d +size 5454 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionData.hpp new file mode 100644 index 0000000..0a3c652 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6fb246c61d3c53fc8a709d7e54c893a9069d762fa6bf617f7580bc21dc188be +size 2004 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionFactory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionFactory.hpp new file mode 100644 index 0000000..66642fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionFactory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9c3dd212d3f0cd9b8e7901c360fb386afce5fe7f10d2760011583354c1fa14d +size 774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionTester.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionTester.hpp new file mode 100644 index 0000000..50373eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionTester.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e93433e6584488529ecfc762cfdbd91a15c04fec926270c384e077fe635fe71e +size 1678 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionsTracker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionsTracker.hpp new file mode 100644 index 0000000..371a395 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ConnectionsTracker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:956f37c537e604030b1d370247a078cfab8074667c9adab79e4b53b6d5e166b7 +size 2336 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Debugger.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Debugger.hpp new file mode 100644 index 0000000..5edaa9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Debugger.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4033e2f3fdeee2acabee55601a46b5644af21b3eddbbe2038910bc92d786881 +size 3183 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/DeviceScanner.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/DeviceScanner.hpp new file mode 100644 index 0000000..e9e5ca2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/DeviceScanner.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3bc3b412e99c7f37e3a4b33c14b1d8f1adff1cd27dda4cb72e686291e76b8df +size 2380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ExitCodes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ExitCodes.hpp new file mode 100644 index 0000000..1bcee35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/ExitCodes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7977c736c31c45f6bf4129b40a065a0e9a7d80a5073bdc865092862757e747c +size 2460 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/HapticResponse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/HapticResponse.hpp new file mode 100644 index 0000000..ade9203 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/HapticResponse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11feaaddb0ba793eb2ba8d3cde08c51744dc32562b8bdc698d144f0b54309f95 +size 5435 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IdResponse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IdResponse.hpp new file mode 100644 index 0000000..7df494d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IdResponse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96172d1d0ccb91dd72c5ccf96f741c8e7e49083b3a4aeeeafb5dd248ee9efda8 +size 2282 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IpcCommand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IpcCommand.hpp new file mode 100644 index 0000000..d65313d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/IpcCommand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12211f4ce7da82d29c7f6671a42343d2faf93a0c1f50a09a99a914096a50aaf3 +size 1967 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/NewSGDevice.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/NewSGDevice.hpp new file mode 100644 index 0000000..75c58f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/NewSGDevice.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99aef7957e959090673168ef5cbf6de0473389e825055e97444b4c65fffc9082 +size 1834 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Platform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Platform.hpp new file mode 100644 index 0000000..11169b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/Platform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17692b2cc06abacb4ca76e05ac9f26144868163a00ee5a036377824bc2f8cf4c +size 5623 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/PortInfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/PortInfo.hpp new file mode 100644 index 0000000..bf69f85 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/PortInfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0bf5258dfad3dfb0814e69cf235ce88409f5f750cc245f6911c02d06063be0f +size 2822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGConnect.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGConnect.hpp new file mode 100644 index 0000000..120ec01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGConnect.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88e93e79ae6d0d63a125d7e81454eef4bf66ae109d1e8b90aba9d309ba1b808f +size 9956 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGDevice.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGDevice.hpp new file mode 100644 index 0000000..6c5ffd7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SGDevice.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b39374604de4d73293f4d2cec88a1cd916809302e85977bd15e5b627e3e4c0d +size 3057 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialConnection.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialConnection.hpp new file mode 100644 index 0000000..e278f21 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialConnection.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4970f66022777d7cab80a1f3744aa6d7ff75c3e20b2463617a82ff85b245be68 +size 2536 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialPorts.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialPorts.hpp new file mode 100644 index 0000000..34bccbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SerialPorts.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0f749d1a83690b0462b56bacf944b28a9ce01a316a31724d2bb2be93af93c3c +size 2310 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SharedMem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SharedMem.hpp new file mode 100644 index 0000000..7b3e521 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/SharedMem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e64558d76af0111ca6a85ba3e83fd6b3ed4a567132dfa9dd7674cc25f7318a79 +size 3580 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/StringUtils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/StringUtils.hpp new file mode 100644 index 0000000..cab1aa2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/StringUtils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18896608d8248dc69191693bca62055bc2e364467a87049f55b9e187aeae80fd +size 1702 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TestingState.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TestingState.hpp new file mode 100644 index 0000000..00f8eb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TestingState.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c4071a94daf9a9941fba4b4ba9337c0fe08c66596599cd42550925c6de6b573 +size 1962 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TransmissionMode.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TransmissionMode.hpp new file mode 100644 index 0000000..147783a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Connect/TransmissionMode.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0d9bf7811dc9ffbeb4b0c10a272ce99de0e934a789a6a1bb86e82bbc79ac669 +size 907 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Anatomy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Anatomy.hpp new file mode 100644 index 0000000..70c079d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Anatomy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9158ad6c116151db29801847e72640fec1b2f56901cb82c6a6443c44402d2c4d +size 3368 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Android.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Android.hpp new file mode 100644 index 0000000..39e037f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Android.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65191e03c3d27461b70c03a23f9ceb13c9d0b7428a5527641684ce893bedd01f +size 2129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BasicHandModel.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BasicHandModel.hpp new file mode 100644 index 0000000..c943662 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BasicHandModel.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01c88b4d05a74fc2e01eb6a74eb0251074c1818db23ee4535738f6ebdd26c96d +size 7431 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BetaDevice.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BetaDevice.hpp new file mode 100644 index 0000000..1134235 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/BetaDevice.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f8136bfb33c0fa02d452498c5a3817a3502c1c5c743f6b4a6ebee68024960a9 +size 3636 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandDataSmoother.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandDataSmoother.hpp new file mode 100644 index 0000000..7d04907 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandDataSmoother.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f740d6110fcff0ca48d8a6a4b66472a1eb33f83bb5d1ebebca9a947ee1ec90b +size 6462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandLayer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandLayer.hpp new file mode 100644 index 0000000..1ac8aee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandLayer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e79a81ac6f41003ca6a31af59b61c17ea7904b2bfb827412455b23d7694eba3f +size 5018 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandTrackingData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandTrackingData.hpp new file mode 100644 index 0000000..164b78a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVHandTrackingData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3f8393ee2a201823ecf557b9379c738c22dd3de59cce538c8914eaa10922ef2 +size 9305 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVKinematics.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVKinematics.hpp new file mode 100644 index 0000000..0d281d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVKinematics.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32db9901af03120331009c75999180bae0586f1cf72c36a6695953c0be33f3cd +size 5515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVProcessedHandData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVProcessedHandData.hpp new file mode 100644 index 0000000..eb9f625 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CVProcessedHandData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8205a35e09a00682e1c6589f8e526e2bd92ab0e3c48972f0079d51099142f19b +size 6133 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Communications.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Communications.hpp new file mode 100644 index 0000000..b7bbc2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Communications.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45553d740f3f83605fe982c1acf8b6e03269726b78194abc0094c613a483ae4c +size 4141 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ConnectionStatus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ConnectionStatus.hpp new file mode 100644 index 0000000..a8e5211 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ConnectionStatus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d098fbf21bd13845946d7dc261b3ae74d0eef1d531ff23ebb4d527c0a4396ae1 +size 3193 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CustomWaveform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CustomWaveform.hpp new file mode 100644 index 0000000..9df834f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/CustomWaveform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b651980379c423d6298179bef689781fbad2c5e4a8f2a5147c486b668c6425 +size 8343 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Debugger.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Debugger.hpp new file mode 100644 index 0000000..580222c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Debugger.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4832b46550eded2a336c2686dbcf88706dddbe6b4b1e2cc7642a65703b8244e +size 2386 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceList.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceList.hpp new file mode 100644 index 0000000..bcb251f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceList.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3c246a7318733092f651c5793fb0b10b498623d8b53b889ea1cf85975fadd8e +size 4462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceModel.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceModel.hpp new file mode 100644 index 0000000..f6d163d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceModel.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cdc65db19bd834e73eea569d9ff3d719179411125bad12664d72485b18a4819 +size 3983 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceTypes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceTypes.hpp new file mode 100644 index 0000000..c339569 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/DeviceTypes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ecda8c60b3787f411d7b85fbf4c6f3e3e0a60d9cd25f2d25373d076961a6591 +size 1303 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FileIO.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FileIO.hpp new file mode 100644 index 0000000..d50b363 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FileIO.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ed8cc1a95ca622695bafb44aa1b74b8aecacfd8ec0dc86f218f6358c9368c90 +size 3595 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Fingers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Fingers.hpp new file mode 100644 index 0000000..47fca31 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Fingers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9d8c0a55102ceb8a963e17288b16fb427d46e65d46430856d72d4fd0df154e2 +size 2547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FloatUtils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FloatUtils.hpp new file mode 100644 index 0000000..563fa0d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/FloatUtils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd223fa34026bae92ba01a2337617003273986336ec39e2289964be15ab4514c +size 970 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandInterpolator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandInterpolator.hpp new file mode 100644 index 0000000..5571f0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandInterpolator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c320ef529933fe9044de36623bb0a799f91b4a96e9bb893e8b1864d7e77b93f4 +size 3456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp new file mode 100644 index 0000000..899d83d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandLayer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c0292de2efb7b26816c599ad983ffeb93221cb980b9d5ba1aa601c6f597df62 +size 10188 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandPose.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandPose.hpp new file mode 100644 index 0000000..2d31b93 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HandPose.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb691713e9cbfe59c44d098b21884d28c49fad65e71c0f39c7f37a79b28b2a4f +size 7750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticChannelInfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticChannelInfo.hpp new file mode 100644 index 0000000..0d4be49 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticChannelInfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a9d8fbc87760b169adcb464faad59b8aedcb3f3113abda161834714db1e6e26 +size 5581 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp new file mode 100644 index 0000000..3197c8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/HapticGlove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0340010f3ba6e9b760e51ee5b25292502bb4c2d720b524a75f8bf9fabd4d3295 +size 13753 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/InterpolationSet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/InterpolationSet.hpp new file mode 100644 index 0000000..0f0effe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/InterpolationSet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11b639b559138bb717c20ec1e2f25a5663269a6abe4207fd09db98ddd293d642 +size 3576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/JointKinematics.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/JointKinematics.hpp new file mode 100644 index 0000000..e8ef701 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/JointKinematics.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae62676672b772e081b6dec9fb8d5ca369f7ffae7a305d26089724802d0db2f6 +size 1616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Library.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Library.hpp new file mode 100644 index 0000000..8392e69 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Library.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:662fdde93561832a950e33492b59d8c16c8fc7ef111ae5d6d6fb377cd2d0500e +size 1538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/MathDefines.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/MathDefines.hpp new file mode 100644 index 0000000..bd996d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/MathDefines.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7cd669d9151db9b1d6c467106ca078cf7afa4241ccbcb29a1884a9e323c1c37 +size 955 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NormalizationState.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NormalizationState.hpp new file mode 100644 index 0000000..f339b31 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NormalizationState.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac7b8e289a704853b0a38156dbf511e65f574e115fd6d32a156e9b6d0b5f4199 +size 1218 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp new file mode 100644 index 0000000..5676149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2Glove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8db118d83e5b7040663afa5a68cfec2f7519d111039a29bd36909d64376b4db2 +size 21483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2GloveSensorData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2GloveSensorData.hpp new file mode 100644 index 0000000..d89b6a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Nova2GloveSensorData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5aa9b2ac49569a5c54b1d569355fa1d4cae32240e0b0ec7a0ef4fd1afa2c465 +size 5406 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp new file mode 100644 index 0000000..2a8c037 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGlove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4ed9422ea0078a29bb5d42be09515583650479e9fabf6b8a458dfafbe111730 +size 22864 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticEncoder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticEncoder.hpp new file mode 100644 index 0000000..e02862f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticEncoder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb832d40da98aefd8f1b2895f643f39949b31eb1eae45d111b384ba4e305589e +size 4844 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticStream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticStream.hpp new file mode 100644 index 0000000..2635fa3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveHapticStream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71b08d9a24110d05e49bab638530513afff527cf8f2257d216723ccc63f8d7ba +size 5957 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveInfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveInfo.hpp new file mode 100644 index 0000000..54a22c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveInfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbc4c83633cace9f5670324a17f3443358ffdfcca67fd5f32dd91aea15821b03 +size 4985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveSensorData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveSensorData.hpp new file mode 100644 index 0000000..acf917c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveSensorData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e2f662d38b23530bad17d37e1b099d25b4ebdf2a3fd6f5cde9221baf5c801bf +size 5821 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveVars.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveVars.hpp new file mode 100644 index 0000000..3edd502 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/NovaGloveVars.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:210f978d703be057ed47c0c3931f91856ced4a696c0672cc6996fd4bfeccbcd0 +size 1161 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/OnDiskCalibration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/OnDiskCalibration.hpp new file mode 100644 index 0000000..2a3b64a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/OnDiskCalibration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:193bac5b4b0a4cf7cc5fa7df2828066f78a2ddc10daf4d991b07e714a87a4ebc +size 3586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Platform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Platform.hpp new file mode 100644 index 0000000..9bde23d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Platform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f38aedaefb3700960c5bccfb27eeae52dfbb89c0065293a7a545424588f2122c +size 6247 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Quat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Quat.hpp new file mode 100644 index 0000000..1544618 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Quat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac3b963fad989c7b6ce1c62849bbdcef1b2896772b5c3792479162bfcdedb15b +size 5969 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SGDevice.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SGDevice.hpp new file mode 100644 index 0000000..5493c5a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SGDevice.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41e10334379bc8a8ab2588f3841ef3d9956b82a527a89bfe9aa370f3ed21d727 +size 8577 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseCom.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseCom.hpp new file mode 100644 index 0000000..7832075 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseCom.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29d03973b074f1821abaf4b69766d75fc20e27fd56f457460af4f5e60889001c +size 1572 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp new file mode 100644 index 0000000..ea9e0e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b1318f2f538d18ae4a6ea3aeef7a117012f0f1948ef3f2b6dbdfc6d1d16f92e +size 21299 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveHapticStream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveHapticStream.hpp new file mode 100644 index 0000000..e43e5cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveHapticStream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2eff811e06ffc72af5ae263de979b5eb034b3d53b694d6a5b144ea55ba7db1c +size 4450 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveInfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveInfo.hpp new file mode 100644 index 0000000..ad1cf0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveInfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c245e2ac767c5c1df38a1592f25b6d623e69fe6212d5adde4594cbe4378dde +size 5796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlovePose.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlovePose.hpp new file mode 100644 index 0000000..372c7ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGlovePose.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22a543a2bab7f6fb31a9a585b1a0dda9327eb7452f384095d1f95e28d3d9a6d9 +size 4395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorData.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorData.hpp new file mode 100644 index 0000000..00948a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorData.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe7a22d6a6a93a9eea5cb56b56bda2364c3a03f7fa9d31c1cbcebaff6a43527f +size 3740 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorNormalizer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorNormalizer.hpp new file mode 100644 index 0000000..db715b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveSensorNormalizer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f284ddd59ccb2434daa25d1fc64745a12b266a53b2516591ea09660458f1aa5a +size 2931 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveThumperCommand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveThumperCommand.hpp new file mode 100644 index 0000000..026ea00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveThumperCommand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37eea7f77b11ac3134b76637bd7fca850b7c2f76ecd4805536b5636196c04cd6 +size 1979 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveVars.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveVars.hpp new file mode 100644 index 0000000..676b156 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SenseGloveVars.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d09bcfc2c00ff7593d5a549970ac2ee6f6cee38085ee458bb4b9a6f3e4aabd90 +size 5483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SensorNormalization.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SensorNormalization.hpp new file mode 100644 index 0000000..52d9c4b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SensorNormalization.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:137d7be76587796629396ed71bfc2c62add0ba84aa37c906a7eb279bd8275fba +size 4689 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Serializer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Serializer.hpp new file mode 100644 index 0000000..48a4943 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Serializer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9719b950326c59cbce9eac834dc9685d2ca665937b74e41ca53214dc84aeb66f +size 4790 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SharedMem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SharedMem.hpp new file mode 100644 index 0000000..4133110 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/SharedMem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f30546f46ec6eb04841955a2a1d3634eec713352ba235d78834897668a5f04dc +size 2933 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/StringUtils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/StringUtils.hpp new file mode 100644 index 0000000..3967fcd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/StringUtils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77255928082c0aaacbce25c182513dcf8ec35fefb4880742baa7418e21ff8816 +size 3240 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ThresholdCommand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ThresholdCommand.hpp new file mode 100644 index 0000000..c52dcc4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/ThresholdCommand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5d6a2411e46dc83815d540a2f34a4c866f5c6864536621ed421df49876dedc1 +size 4152 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp new file mode 100644 index 0000000..292582b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Tracking.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bda6185bc8090efa7acb86016a9475374c72b48b0497104a9b847ff06550589a +size 12189 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Values.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Values.hpp new file mode 100644 index 0000000..6f3d209 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Values.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e49c7665a4ecc727fcda034b911ff9391546684af575f339b878b8d614e3072d +size 5877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Vect3D.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Vect3D.hpp new file mode 100644 index 0000000..8a03c61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/SenseGlove/Core/Vect3D.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46dbf373ca4bceb85300d846637168f8da6b939f81c8b50fd633a046e3c12836 +size 3990 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio.hpp new file mode 100644 index 0000000..e60df28 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad14550ca7ff58d564d91edae9a8353cd0c2e97046d5f8944eca1cae24d42f6 +size 6232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_allocator.hpp new file mode 100644 index 0000000..5611e36 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e352e6e09acb8881fce05dffb8149a6e43e6692f440ecb5fb5a2d0a3f2812dda +size 3889 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_executor.hpp new file mode 100644 index 0000000..fa87a3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/associated_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af8992c0be5ae6ccd9a51e6cac267af228a301dd6bb213bbb076c021eee26d0 +size 4586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/async_result.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/async_result.hpp new file mode 100644 index 0000000..e09f430 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/async_result.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8e3e636e8f5bb4b92855fddf0aa889d44949fc3a6ff6b975a7a5209a8231bd +size 8095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_datagram_socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_datagram_socket.hpp new file mode 100644 index 0000000..6456e48 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_datagram_socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a50e88ba1e27879a312b13f0be5220998ef8e651eb55f716d170117e133adb13 +size 42006 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_deadline_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_deadline_timer.hpp new file mode 100644 index 0000000..f152c85 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_deadline_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b04442f7e643c1bfaa6feff331432d0bb2a1aafbb3c912a7acc1b372b0c5f4b0 +size 22508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_io_object.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_io_object.hpp new file mode 100644 index 0000000..8fe6b4c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_io_object.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6627d36aa1fc84965d6a77e73c903f34a04f3cc96e681758ccdbdd65f1b4ee7 +size 8096 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_raw_socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_raw_socket.hpp new file mode 100644 index 0000000..b01bb97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_raw_socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63f7fad264cd32d3e3f6609d96911ac61d1162232303c2a075c48f7f86c7870b +size 41590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_seq_packet_socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_seq_packet_socket.hpp new file mode 100644 index 0000000..4cabd6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_seq_packet_socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce931bd14b14c986023d9f807f82f045a38151063ca31034e8473849346e32af +size 24654 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_serial_port.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_serial_port.hpp new file mode 100644 index 0000000..113e846 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_serial_port.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d82cc5230e085257633d4fd4cbc53fa9676821c44647e59e4eb34ecae7b0cb49 +size 25209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_signal_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_signal_set.hpp new file mode 100644 index 0000000..870bc17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_signal_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec13d6b939ef9f3f621d36ac8844ce86b73f8f81e6f08c896e9692e993a2e0e0 +size 13942 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket.hpp new file mode 100644 index 0000000..5be5401 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0aa4feab46c17b598896a60ccc6efb4f99e24358129b6b9508a48618d3b13cdc +size 61616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_acceptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_acceptor.hpp new file mode 100644 index 0000000..6c591fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_acceptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41a3841205b0f17d2e214f63348582423551f3dc126b150ef09b599257b45ab4 +size 70860 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_iostream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_iostream.hpp new file mode 100644 index 0000000..6e87817 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_iostream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e4893932b098ff65b27ce1c4fe189154925cfe6296733270200417e515028e9 +size 14458 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_streambuf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_streambuf.hpp new file mode 100644 index 0000000..a11d9b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_socket_streambuf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37bc612408a4eda8153b9b01a7da3a23114314f698894568b663cee62922ff07 +size 22750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_stream_socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_stream_socket.hpp new file mode 100644 index 0000000..1eacdd0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_stream_socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70334d6306f97c1f07a2cd3cad0c7160b368a868c2c17bd11ec275d1e15a7ab6 +size 37274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf.hpp new file mode 100644 index 0000000..578ed8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3bbedf8f705ea5fcb906071954a2b0a9642a777007986bba92e8daa89661de1 +size 13714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf_fwd.hpp new file mode 100644 index 0000000..da70036 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_streambuf_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31e3dfc5bbd49b77a7305542e2f4968da8b5c2159156cd88026986b7b10a2842 +size 920 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_waitable_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_waitable_timer.hpp new file mode 100644 index 0000000..a405210 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/basic_waitable_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4bbe948e3001f537db384bcf967b3e29fa26a1c288fde5be47bc040f43e7c20 +size 25460 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/bind_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/bind_executor.hpp new file mode 100644 index 0000000..ece1b3c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/bind_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:759d4e62be557260b39c75d5ab523d6b8dc5ebec6af7bd377209a1f34e1d9858 +size 17248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffer.hpp new file mode 100644 index 0000000..f23c435 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75d955ca374582d5b8b46f68420f71d34d36748dd84a612cd552ba9b5c9b615 +size 69873 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream.hpp new file mode 100644 index 0000000..1dfa9b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a35dbff5610bd20f43459e5f60b9f828e4dbefa13a2a30babcaf0f05d547b014 +size 8269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream_fwd.hpp new file mode 100644 index 0000000..fa896d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_read_stream_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d377064bb171db03386d99a3afe1c2cb073f9405db8cecb97e09d20c88c74bd +size 699 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream.hpp new file mode 100644 index 0000000..d9420a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08bc09f9309e54db1582183e670c6f16aaa4e7a992eb1d9ef64dbac2518edf4d +size 8699 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream_fwd.hpp new file mode 100644 index 0000000..f112b73 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_stream_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ea46531377bc2a35d76975b23102ec15f1a252c60a76972a05edbddc2cd36b2 +size 669 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream.hpp new file mode 100644 index 0000000..0f183b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0292710a2c41c916c244e5f689abe09ea9ce2e8f49250fb097f071d199513c0b +size 7887 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream_fwd.hpp new file mode 100644 index 0000000..092fc30 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffered_write_stream_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:816b0d8b42766e1569486658e4e8470a742c4294a9ecb09f332bd4a9ce7a7088 +size 705 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffers_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffers_iterator.hpp new file mode 100644 index 0000000..05f9c25 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/buffers_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e71a0abbd086a543bd75918aa56252fb3821eb60c9024027ae230f2f46f0c216 +size 14049 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/completion_condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/completion_condition.hpp new file mode 100644 index 0000000..12fdf59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/completion_condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cefe14897b477249b60f1a969c797706ac98f56b31ef65d473bf892e9e178c7 +size 5500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/connect.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/connect.hpp new file mode 100644 index 0000000..d3fe4d3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/connect.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a221f42d0e89fa9e9b00bc6ede4956954beca27258b861277e65a7b7ac73e01 +size 42153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/coroutine.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/coroutine.hpp new file mode 100644 index 0000000..6f95c03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/coroutine.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8383099cdf26e9e0a86f818a72df5af32e4dc4b6e0f7e686e70c04633ce7154d +size 9896 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/datagram_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/datagram_socket_service.hpp new file mode 100644 index 0000000..5cff4e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/datagram_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddec72ae5e840f09fb3d15fe32c86b0ae86265aa3522f5f4f1909ac4a0b6df9b +size 15317 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer.hpp new file mode 100644 index 0000000..e3ced5d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62a4602586496d71aa319e0ef076e06ddf38033a8dfe5abe7ac98029da5e7dba +size 1138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer_service.hpp new file mode 100644 index 0000000..cc40956 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/deadline_timer_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:988968dd606f1fa04111ac4c8013f85551ac9a4bc0dff2ef9116d9680de13ae4 +size 5018 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/defer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/defer.hpp new file mode 100644 index 0000000..c2da3ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/defer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4b6ff148e153a9e836ab76117e2dac598571c8fbdbca8064fe58d9a3c4eb71 +size 3952 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array.hpp new file mode 100644 index 0000000..938d411 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:160a2b1448a346a72d1de53c074fc331d0725226aa567bae85da6e17c4b6d565 +size 1001 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array_fwd.hpp new file mode 100644 index 0000000..95a9f92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/array_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ba1e36592072dbc07912563a90270cb493cb55713c94a201df5ff2825f7e58f +size 950 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/assert.hpp new file mode 100644 index 0000000..56f1f70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d7ea6b9ecb65d1b347ea0fe6079e48ba35c5f3bf5ff6d50ac16505e407a194a +size 968 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/atomic_count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/atomic_count.hpp new file mode 100644 index 0000000..91612c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/atomic_count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9497180bff29591ec59958330b1ae52c17e2768fbeffbbfd16ab9ddb80bccfd6 +size 1430 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/base_from_completion_cond.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/base_from_completion_cond.hpp new file mode 100644 index 0000000..4390fa5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/base_from_completion_cond.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998429380b9456ec07906d10520eefa16b8699c05bb01df72a2c09b6ebe40bc2 +size 1742 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/bind_handler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/bind_handler.hpp new file mode 100644 index 0000000..296c074 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/bind_handler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2dce7d6ae28b2561a9f319db0f4deefb804e509e150cfebd25d38cd790e6773 +size 23840 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_resize_guard.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_resize_guard.hpp new file mode 100644 index 0000000..0179393 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_resize_guard.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:554d0bf89e03dcd972161738e7594272c78ef9fe570d4ac9914ef585ee5b17ca +size 1593 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_sequence_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_sequence_adapter.hpp new file mode 100644 index 0000000..35a62a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffer_sequence_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87ecdff6ac328ffa07c42614e9c82dedab43d8c933f5790e1ab267186f75e03f +size 12627 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffered_stream_storage.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffered_stream_storage.hpp new file mode 100644 index 0000000..aca1ccd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/buffered_stream_storage.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d5ee9d793db3a6857412b2c6baa6ff05cdd55fb65885e3111dbbcf827d26f2c +size 2987 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/call_stack.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/call_stack.hpp new file mode 100644 index 0000000..e7f23f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/call_stack.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7dad1d34f072b024b0281dbac2d7b82ea1316f56426dbb72ea84d738a4c7c49 +size 3003 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono.hpp new file mode 100644 index 0000000..5b27d74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c0cb57c48d203f708a0a7075d58f6ba8f7f5636983d4910a4f7bfc0774a8418 +size 2081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono_time_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono_time_traits.hpp new file mode 100644 index 0000000..92ac0dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/chrono_time_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f688d6d1dd1223e0cf061dea3641ab0bf82da9dcef207aaac4f9ad97edfcbf2 +size 4469 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/completion_handler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/completion_handler.hpp new file mode 100644 index 0000000..5c5c1e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/completion_handler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5242a1f0ef357286ce68d2a4ad1855a84d9e29617eef4cd005486e883db63ca4 +size 2610 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/concurrency_hint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/concurrency_hint.hpp new file mode 100644 index 0000000..15e5066 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/concurrency_hint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99f885c9c53d708243d2b35f3ba9153d95e02d88bbb13b0ae0728c631a8d90d4 +size 4062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_event.hpp new file mode 100644 index 0000000..8389f78 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdb815d80c452be2aead43979a7529a290238d65e42b59348dc5f2b14340ca2e +size 2879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_mutex.hpp new file mode 100644 index 0000000..ac8ebe1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/conditionally_enabled_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e32c322cda4dd70f85b386986948459466758218c6163076f4fad06f8646c4cb +size 3126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/config.hpp new file mode 100644 index 0000000..a98cb20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66ece32592198eb21f4cfaa4b72311e720096185bd08778d0c36a874e0b77f34 +size 59955 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/consuming_buffers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/consuming_buffers.hpp new file mode 100644 index 0000000..85d65eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/consuming_buffers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a89224b444e3d909959320060125ca5fb455c6f23067b7f25d6aac81e6e182 +size 10631 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstddef.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstddef.hpp new file mode 100644 index 0000000..e10dfba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstddef.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:876cdeffe77f012bc99b31f01c816ef6158d162d787403e1c5f5cce9bf6960e0 +size 816 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstdint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstdint.hpp new file mode 100644 index 0000000..fbb6572 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/cstdint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87dc5e2bdb80989d7f023e37a6b4a691dff4f46f0940ec14516a633ddc841a3c +size 1558 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/date_time_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/date_time_fwd.hpp new file mode 100644 index 0000000..ecad30d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/date_time_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98492de63b13922660523824db2322c071f514dbfdcdb216a2cbb5d2166519d8 +size 792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/deadline_timer_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/deadline_timer_service.hpp new file mode 100644 index 0000000..c25bc88 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/deadline_timer_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7330f1d3cf6d31f8bfc5154e9287eb42c3b07e7efe7ce10220d1aa0c11dba578 +size 8674 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dependent_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dependent_type.hpp new file mode 100644 index 0000000..0999e8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dependent_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ef771d2bb68bac376d27be73f61ba7ccd6994f1061a4633236fde2785ccac61 +size 891 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_ops.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_ops.hpp new file mode 100644 index 0000000..34a1441 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_ops.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf38766b065a53a8479cc2d59fb1f0d6561d53ffade51270029152e1b32407fb +size 3643 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_read_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_read_op.hpp new file mode 100644 index 0000000..45d2413 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_read_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c4243177a79cd7556a5aaadad0ecd75ac9b601121941aa052383e496faba609 +size 4098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_write_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_write_op.hpp new file mode 100644 index 0000000..e30eef5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/descriptor_write_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9eb62956b2a6a078997460832dc377b3293e5432c042c8dc9f52a96402eb68da +size 4100 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dev_poll_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dev_poll_reactor.hpp new file mode 100644 index 0000000..c3b34d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/dev_poll_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0e7312952b18efb3be627dd075509e289d7cf40d1481eda0024366a8ac3d982 +size 8039 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/epoll_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/epoll_reactor.hpp new file mode 100644 index 0000000..3ed8443 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/epoll_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:981322680338b452120492313c6a9883d548960a0a6d6e407f8147f1ee96e3f8 +size 9467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/event.hpp new file mode 100644 index 0000000..d7fd566 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84b80d9811f20a74f0114680bc57431590405c5deb1b52b308e80159ba9a70d4 +size 1364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/eventfd_select_interrupter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/eventfd_select_interrupter.hpp new file mode 100644 index 0000000..c863a94 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/eventfd_select_interrupter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1649f80faa41d46831464dd6d58240582fdedbcae01c63a02754452dab03001 +size 2522 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/executor_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/executor_op.hpp new file mode 100644 index 0000000..b07c536 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/executor_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a15a6289809dcf8107e831b5e148663d383e22af95f947b36c48ad271aaec145 +size 2605 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fd_set_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fd_set_adapter.hpp new file mode 100644 index 0000000..cbeeef5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fd_set_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6a0dd954f7f5e1da83551d3d0e7a3cce21e706eeabc1b220d46a90952f95a83 +size 1064 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fenced_block.hpp new file mode 100644 index 0000000..316d548 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2e9924b8c053cb65c9a8d2db245c6b43060c6c3a2df5660c972c2e7c122f6e4 +size 3066 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/functional.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/functional.hpp new file mode 100644 index 0000000..80834af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/functional.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9a015dbce56f33100805251d57d62f9d5f48e3dd32cd07f6d6ed70e311b3205 +size 1014 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/future.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/future.hpp new file mode 100644 index 0000000..73977a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/future.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a9d561ed561fdede561caa5507ddb7f05e5995fe1fbab8d50eee6b6e2ae3cdc +size 1241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_arm_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_arm_fenced_block.hpp new file mode 100644 index 0000000..af55624 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_arm_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9820d74e631afcd97e10c2804a3347a9e967fa50f8348d1ca8a1afc1fb271ef1 +size 2238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_hppa_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_hppa_fenced_block.hpp new file mode 100644 index 0000000..48df11a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_hppa_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96a45b8dd17c72bc7fead3d1ebc5c63d1cfba6f1c27176dc947bba1b8096e668 +size 1560 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_sync_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_sync_fenced_block.hpp new file mode 100644 index 0000000..45e809a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_sync_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca5c98e2f917d1471cca9ff5d2df11606ac8450d5c9c4087d6b06ed57d618d5 +size 1679 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_x86_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_x86_fenced_block.hpp new file mode 100644 index 0000000..b9f9cce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/gcc_x86_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d1df0cc58ed607d8513e7ec9cafa31fcbfd55345dbc0b788c678643c51b4e33 +size 2460 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/global.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/global.hpp new file mode 100644 index 0000000..6826364 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/global.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e60644ce6695f2cdd7a3e56238bb787a73b3a9707f545566b81b2d1dfb4103c7 +size 1397 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_alloc_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_alloc_helpers.hpp new file mode 100644 index 0000000..aae3f7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_alloc_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ffd0ef584561f007238fa3216240ae0da74b06d3efb614982000a1f6afa9e6b +size 5985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_cont_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_cont_helpers.hpp new file mode 100644 index 0000000..e368d67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_cont_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39ad58c023ab0f7c24ef939a6b47f4bfc96fdb1f9f40eebbff2c1f8ece7d945e +size 1364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_invoke_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_invoke_helpers.hpp new file mode 100644 index 0000000..448e651 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_invoke_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b1f16b044a746fae92d9a48750ab27e89494b71e1d81a44112dad477d90f7f7 +size 1745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_tracking.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_tracking.hpp new file mode 100644 index 0000000..ba92e37 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_tracking.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6635d3ea6a3b0edb479cf62b8897148f2149665fec8796dc1156657f32fb1eb +size 8467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_type_requirements.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_type_requirements.hpp new file mode 100644 index 0000000..d1240b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_type_requirements.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43f3597f6f24d05bb56afe184cf34b31824b3163a6ff8b3610d7b2d29536d7d0 +size 20351 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_work.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_work.hpp new file mode 100644 index 0000000..5b84619 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/handler_work.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6982cb1410b661682761d62249ecd855254f012e58c440fcccaeacc47516bb48 +size 2760 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/hash_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/hash_map.hpp new file mode 100644 index 0000000..c0fcaba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/hash_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c27e6a838fbcbb775a33003a11f18a719ff6c583c986f19f5d5e061370b3388d +size 8343 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/buffer_sequence_adapter.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/buffer_sequence_adapter.ipp new file mode 100644 index 0000000..1ffabfe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/buffer_sequence_adapter.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54e186978a31fb591dbc80a29fc847d16b49ae3f05cb8bc2d15be8a4f4a38004 +size 3096 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/descriptor_ops.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/descriptor_ops.ipp new file mode 100644 index 0000000..6333fb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/descriptor_ops.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c615f63ea7619dc7efc839fa0c1336717d5ab2ba5beb7f7e73d35a07003f347 +size 11981 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.hpp new file mode 100644 index 0000000..e747860 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:419445ef5ebf54fc3c6866e60addb3026dc47d7dc47295d0ebc46b11d3064dd7 +size 2587 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.ipp new file mode 100644 index 0000000..f96b707 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/dev_poll_reactor.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c6901a8c21d8e2c640c66a76b89f4fee668ccb4f4e39f98d6c6ce99d9b659b9 +size 13138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.hpp new file mode 100644 index 0000000..faaae95 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:690aac96d9d4af45700bf8cebf235c484dde571954f6926d30c73c93e991bb67 +size 2439 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.ipp new file mode 100644 index 0000000..1fd2879 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/epoll_reactor.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a2f0f856e9da4a8666134b6cfc676e007b272d1a09d4b0aabcfba7f9c93a994 +size 22372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp new file mode 100644 index 0000000..6a41351 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/eventfd_select_interrupter.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83ac0cf55b4addfd2cebb64d25e0bbe230d22d1ba5310a1590840029f59200ba +size 4615 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/handler_tracking.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/handler_tracking.ipp new file mode 100644 index 0000000..9dcf550 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/handler_tracking.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e0abe69ec2ee487ea3ec0dfb8b52383300650c810e8ad5f5c6e73d3c5fa0678 +size 10538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.hpp new file mode 100644 index 0000000..c7f6081 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34b8c963f7043a6fe35745bf430484ade7e85eb608c5421897715c2a1ab391ac +size 2590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.ipp new file mode 100644 index 0000000..5b011cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/kqueue_reactor.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a066a1888d78ea063617cd108cd80b6de87295f5545b8d51170c728a9d0a6837 +size 16955 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/null_event.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/null_event.ipp new file mode 100644 index 0000000..462670a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/null_event.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7531976a4beb1ff09eb74ea189be031c442feb3eff7bfc1b9fe7a0613c317677 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/pipe_select_interrupter.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/pipe_select_interrupter.ipp new file mode 100644 index 0000000..0a07bdb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/pipe_select_interrupter.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b31cd1d671aaaf5eed37705876a77e8df80081f8e31186796fa9b51cd65d4b23 +size 3145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_event.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_event.ipp new file mode 100644 index 0000000..c1ea2bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_event.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39908cb7dddb19463ab3bad162bd62b8b87dcb4ea55cf5dc62538bd0fd95ae7c +size 1776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_mutex.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_mutex.ipp new file mode 100644 index 0000000..6c82f38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_mutex.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1970f17b355449fecded0e5090583f8aced8fc949fd608d935b8e903ead3596 +size 1235 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_thread.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_thread.ipp new file mode 100644 index 0000000..0acf596 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_thread.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:029d65e8223716bc93dfe08bf077d7125e9d08748f481e963ce2bc03a0259e40 +size 1964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_tss_ptr.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_tss_ptr.ipp new file mode 100644 index 0000000..d6a2f99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/posix_tss_ptr.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78a9935d5d0d812f1d8c638d474b62412a045743b5797aa60115c3caf39fb6e5 +size 1261 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_descriptor_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_descriptor_service.ipp new file mode 100644 index 0000000..89bde21 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_descriptor_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6c15d9a908480d7d76d30dd0b6264c865f4d3b573086ebc25bac48ca2534f9c +size 6363 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_serial_port_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_serial_port_service.ipp new file mode 100644 index 0000000..a8563f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_serial_port_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28321382892375a5dc048a308115d1298fc27c2c3d1af6dbf16d18f23305b7fa +size 4291 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_socket_service_base.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_socket_service_base.ipp new file mode 100644 index 0000000..c9f08c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/reactive_socket_service_base.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dab7bfd63748448ecdf00251e0de564588758198989047d881ad35d2d6d5f80 +size 8821 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/resolver_service_base.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/resolver_service_base.ipp new file mode 100644 index 0000000..0336955 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/resolver_service_base.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60a5fdf552827f0aea639ad5cf12c8b4832ac9e2be2a7385e058faacd4749224 +size 4061 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/scheduler.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/scheduler.ipp new file mode 100644 index 0000000..a0e6ad1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/scheduler.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a478122e74c0289806c929a4dd8315adf60dfd7866494c96b9d327eb45b3fe6e +size 13987 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.hpp new file mode 100644 index 0000000..c1d22bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd98397a05f5d0a511c652b89663f291b90dc696e49d6a0a9ffbea020a61534e +size 2985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.ipp new file mode 100644 index 0000000..932ada3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/select_reactor.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0131577863058634316bcf1bdab8475f9934f1002004c182af9fb2aaa0e98a68 +size 9270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.hpp new file mode 100644 index 0000000..2f18297 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b94b81f8f730dda706f5ece9204549a7203a93235fa18f9f03c2797717cf34b9 +size 2652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.ipp new file mode 100644 index 0000000..ea328cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/service_registry.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37ea7e48949dee80ffd1a2689d9f4768c6ba55cb8359a717176e5694e60effaa +size 5462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/signal_set_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/signal_set_service.ipp new file mode 100644 index 0000000..c7d2a83 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/signal_set_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46efcbde15aeb4c1d8744e80a1a5aaef6e02cdaa53e9fb7f4e2772684b141db8 +size 20378 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_ops.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_ops.ipp new file mode 100644 index 0000000..324cf6b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_ops.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5c95ea3181cf293681d48d1c8648ab6890a4223efcd63273d86bbf7ce90389 +size 103312 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_select_interrupter.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_select_interrupter.ipp new file mode 100644 index 0000000..c10a445 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/socket_select_interrupter.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cf50439f90b59044f9177bfc3ff6f77f49923260550eb986d10a17ab21c2ed0 +size 5739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.hpp new file mode 100644 index 0000000..b767cd4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1507dd3bced276878aa2fba23ea00158f0d842e1bd10f3dea8f4f7b019f256e +size 5816 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.ipp new file mode 100644 index 0000000..6b86d7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_executor_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:227885e8ee5e24f5743f6b81aefe007e5a32d04e394c928c0ebdd27418bc62e6 +size 3637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.hpp new file mode 100644 index 0000000..065cbb7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f9aac5f0228438ac9becdf4fa241b455f215285f2558fe784a5eb23c1ab90cde +size 3478 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.ipp new file mode 100644 index 0000000..8f75773 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/strand_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fc0b3f9e56106b6f1f87b1dcab0735bce789d5cf485dc8a7b2eee8be0d93325 +size 4988 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/throw_error.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/throw_error.ipp new file mode 100644 index 0000000..8704ba5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/throw_error.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1928c4e62a4519d7b11d8fba471d0b53b3e876e68355fd50df356827d6240858 +size 1268 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_ptime.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_ptime.ipp new file mode 100644 index 0000000..d8fa5b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_ptime.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:435ddc27cba9212f1679991da9c6d19267c293a19a5cd5034455dc1d2f2df15c +size 2410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_set.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_set.ipp new file mode 100644 index 0000000..03ef690 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/timer_queue_set.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:725d1d1aa8ed2e3f3490c9f0a3c7a0dbc3eb659d8f5284ad2104eb57e37e356a +size 2317 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_event.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_event.ipp new file mode 100644 index 0000000..7be200b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_event.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d45daae237f8399b7103b8b071a7cfd81cc196da145e2a0420e019311e7bfa0 +size 2068 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_handle_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_handle_service.ipp new file mode 100644 index 0000000..88c9649 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_handle_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a99a796c57883937211d0b520a197644dc52d10552daa81a66d564c7a21cc254 +size 14344 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.hpp new file mode 100644 index 0000000..a7df63a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c3185a6b1cd7c6e63eba4829b0a11a595606ca0110e8726ac5aca6694f099bb +size 3026 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.ipp new file mode 100644 index 0000000..e9edbd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_io_context.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9e851dd96f096bba62e728b21f176cc065c9076c34dd5e0ae4c69ea7c951e4d +size 15594 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_serial_port_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_serial_port_service.ipp new file mode 100644 index 0000000..0aed497 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_serial_port_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb39b5312b22eaaccf69067975546e131df818a7d677cfd08bd84f9e0be9b9ae +size 5621 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp new file mode 100644 index 0000000..b7e89b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_iocp_socket_service_base.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:203f46643678e8a6758bfe5f1672eb56eecaa652649ce1599aa742b54dc2825a +size 24988 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_mutex.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_mutex.ipp new file mode 100644 index 0000000..0e6a7b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_mutex.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d97a35bcb906230535137a5e2f3a6c1398a3ce5c13c5c5b59b7b62cda41fd71 +size 2213 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_object_handle_service.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_object_handle_service.ipp new file mode 100644 index 0000000..58332e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_object_handle_service.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:911f0248c9eda43cf23ec549af58f6454438e5e30239febda4a30dcaff58f4e5 +size 12508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_static_mutex.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_static_mutex.ipp new file mode 100644 index 0000000..19a5fb1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_static_mutex.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e011abb39c46c428265077336fa1d11fd658053919798bf0061b9d471f7d5b59 +size 3636 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_thread.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_thread.ipp new file mode 100644 index 0000000..b02079d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_thread.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:910321a0aa3a513b3b41ff946c252c5dffc12935cccfc277eaa94ec570b474f1 +size 4102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_tss_ptr.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_tss_ptr.ipp new file mode 100644 index 0000000..6e0659d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/win_tss_ptr.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b5aea341bddf4cf3f5af7f7e972d2d6b9c0ff3e690e0e918b9ea5b5c1b2cf43 +size 1448 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_ssocket_service_base.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_ssocket_service_base.ipp new file mode 100644 index 0000000..ecd3c7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_ssocket_service_base.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2d25f140b10dcc762c4cb5dca096585835131448cff526b4257d4b47ffe06b6 +size 17552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.hpp new file mode 100644 index 0000000..c52f2ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acff5b9de152a3e7e2a71490e6602a484d32154c23ece7841e480b1aff267e14 +size 2667 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.ipp new file mode 100644 index 0000000..538a72a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winrt_timer_scheduler.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e772c4e3f92e0bfd42630a451364d82148f05fbe7db7d8119ce47c3c7889a5ec +size 2995 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winsock_init.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winsock_init.ipp new file mode 100644 index 0000000..a449651 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/impl/winsock_init.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:081f4c4175ac81ee4b3ce27b493b6e455260527ce581e7034265f913f306dec9 +size 2050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/io_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/io_control.hpp new file mode 100644 index 0000000..b003f88 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/io_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96633171c8b44a0d68f1d7f9afd052c2b42dd33e7d12d56cdc34e849b4a25cca +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_buffer_sequence.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_buffer_sequence.hpp new file mode 100644 index 0000000..315eff3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_buffer_sequence.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4ee75ceb8b8d6fda3cb51245c34a960e03b3cbb20f3886e8776c7e604fba3f1 +size 6596 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_executor.hpp new file mode 100644 index 0000000..58e2013 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/is_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cea7459803b58a41c8d7e3044f28533fee306035110ee5053b0edad8eb37f77 +size 3033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/keyword_tss_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/keyword_tss_ptr.hpp new file mode 100644 index 0000000..e9e3541 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/keyword_tss_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2f3373d43bfcb17aa2860cd6cc84f862b9ccd2b3506c07401787048ee931507 +size 1425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/kqueue_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/kqueue_reactor.hpp new file mode 100644 index 0000000..493d868 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/kqueue_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd9be5ec34b51484899c85794c47ada822c6c3836e5be0047c576a4c3e138e31 +size 8277 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/limits.hpp new file mode 100644 index 0000000..52f5c31 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7c7934f7e04faaedb09dae84b87c15fd4b55fadcc71b78974f75f8e4467c417 +size 734 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/local_free_on_block_exit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/local_free_on_block_exit.hpp new file mode 100644 index 0000000..1061984 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/local_free_on_block_exit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9498506326999472feb1c06836108e989a2815c95a1055c08c465913cf0882d +size 1470 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/macos_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/macos_fenced_block.hpp new file mode 100644 index 0000000..7ab9c5a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/macos_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7042a9fe1215bcaa5e5a68a47c7327e330cc4a4722aa93e119ab3af53de82b2 +size 1380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/memory.hpp new file mode 100644 index 0000000..20ded41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ee10c6726c30b39c8365b65ea3aa05ed04f6894f6f2d4f4bd9bab7e9ed435a5 +size 2019 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/mutex.hpp new file mode 100644 index 0000000..f2ee67b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:762278d4eb8f2d004071a04ed0aee9b33a3009d8831064233d15a2737deed7f9 +size 1351 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/noncopyable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/noncopyable.hpp new file mode 100644 index 0000000..7ca1dfe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/noncopyable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b67760ea76346dbb5e08586042013323f003785073e6863b88de6530105d645 +size 1000 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_event.hpp new file mode 100644 index 0000000..82fe350 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c408992c79d9eac27f562e2f501c91a35c1bd03d642463ebd4e2c170ec7717f2 +size 2045 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_fenced_block.hpp new file mode 100644 index 0000000..daa90ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01505376bf724aec479e45343c544117b805d380dea4522633c222453f6b6cdb +size 1044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_global.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_global.hpp new file mode 100644 index 0000000..ef2fec9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_global.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e463ec37cc78eb19626753040fc154c4bdd848f614f78e192eae7da742ff9649 +size 1295 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_mutex.hpp new file mode 100644 index 0000000..038187a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0477f08f25b858570f94c32baab8c8636e994a6252c24838fa852d97d48fc86 +size 1255 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_reactor.hpp new file mode 100644 index 0000000..5a20055 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eda399cc81b0a3f15ad061a0393b4ed7e1606f8ed887f4d0982d6145a1550428 +size 1563 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_signal_blocker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_signal_blocker.hpp new file mode 100644 index 0000000..ae97ff7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_signal_blocker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e9098cfdf48d6387f3b5fd1bc10ee59840e397a321890bed3c3d61ee8ae96ac +size 1627 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_socket_service.hpp new file mode 100644 index 0000000..f44678a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63fd3ac97319fab8cbb8b039f5adcd8e1514b3de09e3f21279fb87b3deb38604 +size 16545 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_static_mutex.hpp new file mode 100644 index 0000000..b848efc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0a420bc41243fc4936c87801144d33927016d65d3e700529e868d5fa0b62b12 +size 1259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_thread.hpp new file mode 100644 index 0000000..53a442e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de8136a6db0518122d97f243ea13b8e45e11ac9be1b3c73eeeb99f3943c7a73b +size 1442 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_tss_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_tss_ptr.hpp new file mode 100644 index 0000000..95005f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/null_tss_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e740f325fd66cd2002a3084d6a80ad6400175491e28f0c3accc1f828c7470a0 +size 1272 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/object_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/object_pool.hpp new file mode 100644 index 0000000..da6f6d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/object_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9ac8678879817b5409579357a89fa6112daabe06483d5ddb4bd790a8ce2e752 +size 3500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/old_win_sdk_compat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/old_win_sdk_compat.hpp new file mode 100644 index 0000000..0e8837f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/old_win_sdk_compat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68bf6319aafb0ab8724db103e7a5194aab45f191a91afcb45942536cd21767c8 +size 4478 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/op_queue.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/op_queue.hpp new file mode 100644 index 0000000..f6ae82a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/op_queue.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b43c38d36897962c431b5ccb406185c238594c9bf8ba6e61c72194ea0d7e294 +size 3313 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/operation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/operation.hpp new file mode 100644 index 0000000..874fe82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/operation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d4a8e0a90a9d91829ab694361299e2e10f35b1bcc2d2b8194f859e86b7fb323 +size 963 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pipe_select_interrupter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pipe_select_interrupter.hpp new file mode 100644 index 0000000..861e041 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pipe_select_interrupter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bf8bce2b5112c26873889254dfe7b8e96b4722a3b0103c0b266dd7f25b707bc +size 2601 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pop_options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pop_options.hpp new file mode 100644 index 0000000..fac207d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/pop_options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a26e10e684101d4badfc62fb6e05ec36d8bcb08d6206a3990cf39a771d2e0f3a +size 2577 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_event.hpp new file mode 100644 index 0000000..c04a8ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8038d8ca76a6620283b33a1532f654d59b6de8ff26790d6f2e474ee448846e7 +size 4182 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_fd_set_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_fd_set_adapter.hpp new file mode 100644 index 0000000..c2d8152 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_fd_set_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd1d92681b8b5ac8a29284bbdee08a86aec41fd155875639c0dac0fb8b2a389b +size 2992 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_global.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_global.hpp new file mode 100644 index 0000000..f365dde --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_global.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6921e597374317d7dbd939efad96e80d5fc3806423ad1f834f9c4b7bfaf46e9f +size 1807 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_mutex.hpp new file mode 100644 index 0000000..cb7c835 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbea4786ef8d85e0e4eb9399b2167cef025573c8c9cca66aaae4989b0396f460 +size 1685 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_signal_blocker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_signal_blocker.hpp new file mode 100644 index 0000000..8df1999 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_signal_blocker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7de47be836117003368e3e6e2fb8c931532130663ef76cea37ee4873c4c3612 +size 1975 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_static_mutex.hpp new file mode 100644 index 0000000..e0d397f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0ab47579aeb2ccfe327c503bd3930fc79292018c5cf4fdd65cc340ae6c1ef7e +size 1467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_thread.hpp new file mode 100644 index 0000000..94ed6e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61e94bf73cf002cef50f3af4f9f6fecadb0213239a4ca7eef36639cc9051714d +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_tss_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_tss_ptr.hpp new file mode 100644 index 0000000..ee08e63 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/posix_tss_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a66843339903548a0d0a094dd23291f56d26f1387c353b7ca2772b4be1e790e5 +size 1800 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/push_options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/push_options.hpp new file mode 100644 index 0000000..6b39ed6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/push_options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e69d196ad62bbfed3e013806ebc3f6829cdb52d7989552bb3f79b15beea5f35f +size 4224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_descriptor_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_descriptor_service.hpp new file mode 100644 index 0000000..14fbd6b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_descriptor_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c562b3f05d5343c9b98c95095a56a33504451468082ba61efbd9bfc0289ab717 +size 13402 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_null_buffers_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_null_buffers_op.hpp new file mode 100644 index 0000000..dcb6956 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_null_buffers_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e56ab8a02437079aa8bd4391b94e53e9629fb9acaaacc0304cd8fcd7920b3451 +size 2923 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_serial_port_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_serial_port_service.hpp new file mode 100644 index 0000000..65ddb7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_serial_port_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8f749814ebfeeb8114abc5f7e13254e65c9ceae5cf96d921e0a5675b6d39084 +size 8177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_accept_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_accept_op.hpp new file mode 100644 index 0000000..a13f104 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_accept_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30ad229e3c52c390d49d7454da20ae8ea2edbf9ee3c584bfc25ee3c5935aa5f0 +size 7321 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_connect_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_connect_op.hpp new file mode 100644 index 0000000..9d9c8cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_connect_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06fcc764657249ba5206c1093ffcab8f6e78f706a3c07fe16cc8ab4434dbe636 +size 3554 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recv_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recv_op.hpp new file mode 100644 index 0000000..1f0f428 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recv_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf7fa101924c66aa9a3621bce4eccd724ef01ef3ea9a02d4843fede183919f08 +size 4512 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvfrom_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvfrom_op.hpp new file mode 100644 index 0000000..633c560 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvfrom_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34a07dbd6353b10a36c49cd34f4facbfdf333e4e91b1bda5fa1a12f81107759f +size 4733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvmsg_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvmsg_op.hpp new file mode 100644 index 0000000..3f3bd94 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_recvmsg_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a7a1eb6d9b36d19b754d254600c9ebcaf3fbb7d6556a532967082ebf831095d +size 4484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_send_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_send_op.hpp new file mode 100644 index 0000000..b638ffb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_send_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b23f002481150ab1bf8dd21e2b9ca9526c9e9713420fa01b7ef114fdd7a6388c +size 4457 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_sendto_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_sendto_op.hpp new file mode 100644 index 0000000..e5b6dc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_sendto_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:308ff82940137d6c970eb49ae5d92cbafb6f8fcce43f35ba039f6dfa5a1f373e +size 4432 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service.hpp new file mode 100644 index 0000000..d93c4ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26343bee66eb42422df17202c557270007b4d8b790ffaa8ca0f72f719fdc84e2 +size 18269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service_base.hpp new file mode 100644 index 0000000..1831010 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_socket_service_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7958ebcf6ee028149eb42bfcac2e163e234ef97556194e6658daeae38cae2bb5 +size 18465 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_wait_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_wait_op.hpp new file mode 100644 index 0000000..1c9f8e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactive_wait_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c5f66c4c1bd4228854ea2c14cfa162ad62a594414fa110a0997a77b3387f85d +size 2776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor.hpp new file mode 100644 index 0000000..78e59e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2653de9b06f66e978f670a9d4872c088aa95dbfab4673b0ff68d7b980cdb337a +size 1003 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_fwd.hpp new file mode 100644 index 0000000..5cbc239 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce703c076bfceab4fe53528444e7b894b5a2b576b02ee06b8b700f10f1ab2083 +size 1155 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op.hpp new file mode 100644 index 0000000..dbe4c76 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5fb3879ce982139752778893c6b680126e7aa9c8c34491d82f18684920c4029 +size 1689 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op_queue.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op_queue.hpp new file mode 100644 index 0000000..c9cc676 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/reactor_op_queue.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7df2d757883bbf636430cb9912229737427fac6621f8d3db51ed06b3550dfc63 +size 4979 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/recycling_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/recycling_allocator.hpp new file mode 100644 index 0000000..325881c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/recycling_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98910af74e8aba26ff0389d77fb383f78e125c82424a7f7ebf78bb68d0893451 +size 2265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/regex_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/regex_fwd.hpp new file mode 100644 index 0000000..c3b3be6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/regex_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07a714670336891220fa8ebd332e78092a10d1457093633576e64935d647d134 +size 846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_endpoint_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_endpoint_op.hpp new file mode 100644 index 0000000..02faaf2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_endpoint_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aae0f9759cbe29e69de297c2faa50fbdede36f42d58380397c780b91f5e6a597 +size 4327 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_op.hpp new file mode 100644 index 0000000..fd8772c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2e69fc76e9723ec83736f096d2abd20bb46f517c27cdde77f6b032703b15967 +size 1090 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_query_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_query_op.hpp new file mode 100644 index 0000000..e28d431 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolve_query_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0adc1f589d12081a1180e74cd517d0de4fc1a54510f989a86605e11a99b3ee3 +size 4525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service.hpp new file mode 100644 index 0000000..d206ed4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df2a6be94c78b7ec5de727c03aa3d5104d179bd86a92f0611b3976bd58d20475 +size 4685 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service_base.hpp new file mode 100644 index 0000000..8217f7f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/resolver_service_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa187d2f2472886a8bc62fb9e41ef3a32c4b181aaf7ccb3a7929712b1e513547 +size 4363 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler.hpp new file mode 100644 index 0000000..787b752 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86fb8d506514871740412ac91fe0fe21f02700d4a2ce13260ee644fa255b7915 +size 6889 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_operation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_operation.hpp new file mode 100644 index 0000000..d037fa3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_operation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:678d6b1fcb0ee20f2c3a7d300cb8a74d4082a211d6b52b29c51708c3c8279b7d +size 1922 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_thread_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_thread_info.hpp new file mode 100644 index 0000000..e04cfb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scheduler_thread_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7d406acc70c3777d7af18c238762c1116b7690d7f41b297e410f80e2a33b14e +size 1079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_lock.hpp new file mode 100644 index 0000000..6c979ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ae28679d3434c29929b02744650190b780883d086f54fab2f28f01a268c8c1e +size 1942 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_ptr.hpp new file mode 100644 index 0000000..f4d29f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/scoped_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1abf14af75fcbd2935bffbf5578baf9c44657a536b245f723da123d006d5f3d +size 1448 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_interrupter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_interrupter.hpp new file mode 100644 index 0000000..9b67be3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_interrupter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80e944ceb28f98434e86e07dfe888ab1aed37e617176f3a49db4dbd1a94b2a5b +size 1426 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_reactor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_reactor.hpp new file mode 100644 index 0000000..2f36bb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/select_reactor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e7220dae6a79dee806e39dd52111e3d613f35df30472eeadb7a6c1199cd378 +size 8813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/service_registry.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/service_registry.hpp new file mode 100644 index 0000000..8a36bc6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/service_registry.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0ec76748aae87d617c0bf89fb5762d3cd4d82e37c68fb6115c4c2b36852907e +size 5645 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_blocker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_blocker.hpp new file mode 100644 index 0000000..e0347a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_blocker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4fdcebc8be95fd4c92e88b2ce44336dd3541aabfead2162c782830144069d91 +size 1382 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_handler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_handler.hpp new file mode 100644 index 0000000..6d51bd0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_handler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5584d576a6c9afc540c671031d82128c7625e9b220bb5fa94bcad666bd01be5 +size 2765 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_init.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_init.hpp new file mode 100644 index 0000000..78d5927 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_init.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d6a2a6d637ffb079c12bda4d45f51b1af8d3b01f85a60c4776ea088448e7132 +size 1070 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_op.hpp new file mode 100644 index 0000000..3281016 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4103884a9db9abe2bd7e3bac6b4c7e7859d5e84e935352769ad467b537fc4f94 +size 1146 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_set_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_set_service.hpp new file mode 100644 index 0000000..5569813 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/signal_set_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14703ab36342438651a22b9621a377c05a596d0b8d3a3ba5a85a8d9d9a7a7b9e +size 6588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_holder.hpp new file mode 100644 index 0000000..336753b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:129ae88c4acac7228b8ee5514400a84b7922fe88ba1e04b8eb22d88d51ffb986 +size 2148 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_ops.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_ops.hpp new file mode 100644 index 0000000..8868af4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_ops.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2522fea39af9f389896011cde2adca05991f9c639f62882da56cfd4b25708f25 +size 11828 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_option.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_option.hpp new file mode 100644 index 0000000..c18be6f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_option.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8161d5674a4010b6005b6751352902245491957b87502f0143506b522efd71bf +size 6410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_select_interrupter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_select_interrupter.hpp new file mode 100644 index 0000000..b6afd80 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_select_interrupter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81ac3eaa25f11edf101e26f7deb03da3110ecdbf7895391309d0fa9453e7cc3b +size 2618 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_types.hpp new file mode 100644 index 0000000..c455de1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/socket_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37b29fb54ccb865cc3667bf6d1aa1d8deef063aac98262e6a5acba718eeac1a6 +size 16173 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/solaris_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/solaris_fenced_block.hpp new file mode 100644 index 0000000..1e974f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/solaris_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f71d24b1f3dfcef03fdce219d3274641e328a701610a0ba0fefd4f22cd860eb +size 1338 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/static_mutex.hpp new file mode 100644 index 0000000..23f8437 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6225ed7dd28b5a93c1b938f1de60f41fb54a7af30d189713518aa44f2db1ec2 +size 1745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_event.hpp new file mode 100644 index 0000000..5630779 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e13bb9b2d1d9960bc66d4a01377de01b0ded62642213d6ef6acc787939bd1d28 +size 3728 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_fenced_block.hpp new file mode 100644 index 0000000..84d4cc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48cf0e90eab1dec6ddecca727cfebcd7b9e638a26874e345ccb6bc4a79f6e6be +size 1408 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_global.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_global.hpp new file mode 100644 index 0000000..093e50b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_global.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da092fab7f9093ea6c6445ba3b27c9e55128d44b3ef373297f467073f628d51e +size 1568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_mutex.hpp new file mode 100644 index 0000000..981a72c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49fad314848f1b644acd56848a4ebf246de7f9c1a1f5453c0c0014df5fc046cc +size 1404 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_static_mutex.hpp new file mode 100644 index 0000000..82e048d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69bedc8390c52cf71afb6fe6274f89ea692b3407451559ba7b9dd478273a4504 +size 1586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_thread.hpp new file mode 100644 index 0000000..046b28f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/std_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e1e3d70025f5eb3615c4f4e6f6d507b39a112e9d8abe3bf7a61eb7c9faf8b1d +size 1425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_executor_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_executor_service.hpp new file mode 100644 index 0000000..e0fc3cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_executor_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fc80f2c0dfe52965115eab9a00e51dfdc1d8353e324922b2108f55be4cd757b +size 5015 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_service.hpp new file mode 100644 index 0000000..fd32207 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/strand_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29341ec61f2b811bd36f27ca858f2b55f76288ae4128999e6205b27a9898d7df +size 4811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/string_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/string_view.hpp new file mode 100644 index 0000000..e7b1464 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/string_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95457b89a3d6655a11a37220a3ea5b5c724be81e150915539eb4f4bc791e07ed +size 1574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread.hpp new file mode 100644 index 0000000..a7786d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9277c1199fa44fb09ba56c2abb743e4e14fb062729a0601b209f14a0f2f3eee3 +size 1658 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_context.hpp new file mode 100644 index 0000000..a819616 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6762729b444057c389dd82f7f92feb6678cb11d2f5757b3e2574fadc9642eda0 +size 1135 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_group.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_group.hpp new file mode 100644 index 0000000..b29cebd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_group.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d62106a52c11bdcb09e2aa8a35d1a9a454ddadaebacc64ed899d4a0027f8b053 +size 1901 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_info_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_info_base.hpp new file mode 100644 index 0000000..03d09b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/thread_info_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acbc1827390656513f54c335063d9cb777d0650c01720e421eb93116674e6a9a +size 3095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_error.hpp new file mode 100644 index 0000000..7cbc9ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93184285a2920f25f94008e960ff45156730e626e997a1143a94d7793e336733 +size 1377 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_exception.hpp new file mode 100644 index 0000000..b763611 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/throw_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:567027051197e12e08a9dc03517ccddc66ed298623e20c5274cfd83e3a602717 +size 1512 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue.hpp new file mode 100644 index 0000000..fcde3f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04a92cddc3b58662d497999a27af6f089b2e3fc52756930b15658c7a1208f7ca +size 9873 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_base.hpp new file mode 100644 index 0000000..27ed138 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:160ab4341e1b2d50177f346ba7fe43073499c12beb6632b3472a0d8b18eca995 +size 1754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_ptime.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_ptime.hpp new file mode 100644 index 0000000..cea2e0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_ptime.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e633f63849ed6df00289af000566bb5d95bc21fcd04be2f423a91e5fa10cddc7 +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_set.hpp new file mode 100644 index 0000000..8573f3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_queue_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd3ab29422c2a48a51b01715b4dc2035229f50eddce6d57a57b215e5cced0f08 +size 1805 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler.hpp new file mode 100644 index 0000000..d52a5f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e294e9dbda06b95a6bcc055806dcb24cc2a154520a3be677e9ee1ae3b7c690e +size 1157 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler_fwd.hpp new file mode 100644 index 0000000..046b01c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/timer_scheduler_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9655df419c406b427d38db49ecfc9b971c070bda519e319d645bc586cadf33b9 +size 1225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/tss_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/tss_ptr.hpp new file mode 100644 index 0000000..b830e5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/tss_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1783dca827adc6dad1948d09e9356e5b81328e7785132a9b8bf46462112cc46d +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/type_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/type_traits.hpp new file mode 100644 index 0000000..b832572 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/type_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81149d082102b1619a71493c4ba31624535717e44eeff724c42afc497e0a8fc0 +size 2746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/variadic_templates.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/variadic_templates.hpp new file mode 100644 index 0000000..5a0733e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/variadic_templates.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b3bfc75ea923ab378a7c4fc990e7e69ef1edf0309a41bd3387ba5fbe412f8ad +size 4528 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_handler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_handler.hpp new file mode 100644 index 0000000..a56579a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_handler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b2510d6ff0652a018b73bdb9382e5c79790e37ae093b2869d66848fe46c711 +size 2643 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_op.hpp new file mode 100644 index 0000000..fcf6911 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wait_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2ba94c8fd940e00cb1097e45b8530107cdf4952f836081b4eeef5f36da1448 +size 1021 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_event.hpp new file mode 100644 index 0000000..23b4c41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f234349477d033e64294e1c2272f6e8da40fce00dd1fd2f47b0a570f6a5a2e9 +size 3596 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fd_set_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fd_set_adapter.hpp new file mode 100644 index 0000000..a846024 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fd_set_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fda7ed1dca38c382d8471621b2e18776cc85d76bd335fd0a16eb41b03a471578 +size 3911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fenced_block.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fenced_block.hpp new file mode 100644 index 0000000..2af4ab6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_fenced_block.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:449f35f728927d4d4ba098ca3972124ed8a1361c7caabba3fa0e153a57309d3b +size 2138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_global.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_global.hpp new file mode 100644 index 0000000..ffa9eaa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_global.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4326d64ea4d853ead8a891c2753c1de8c98edee7c227f458d94a7f1949f1356 +size 1823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_read_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_read_op.hpp new file mode 100644 index 0000000..eaa5822 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_read_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdf4c9a9047b170f207331154187e434305034c2cfc482db65a3c6181edeb616 +size 3689 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_service.hpp new file mode 100644 index 0000000..8456bba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f5cc6c988536837ad6cef362e037a387267a258ee8283164a5804917356bc17 +size 12356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_write_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_write_op.hpp new file mode 100644 index 0000000..0faba8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_handle_write_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:050375a8210731bf74fd7a4a4fb21210211f3cc918f89b0bf6cb160427e22441 +size 3484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_io_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_io_context.hpp new file mode 100644 index 0000000..484aef0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_io_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a887684ca04873e9cde919aafd54226d9c1df02ba5018fc44d8373b0dc494c48 +size 11293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_null_buffers_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_null_buffers_op.hpp new file mode 100644 index 0000000..0cbbd92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_null_buffers_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f7654939397009a9fc199bfb92147311dc540e73241b075a5d7261fc0ba5a0b +size 3850 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_operation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_operation.hpp new file mode 100644 index 0000000..16fa70e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_operation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d6969bec7a2226db3061fa310680c255d722cc391ab8a6d133ae25cc9ae4592 +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_op.hpp new file mode 100644 index 0000000..9c1c4aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f7fdcd47ae4d20dd98572e5787399b3f264036bf5e1dbd1d6ed6ae574b2091 +size 2918 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp new file mode 100644 index 0000000..2d19b3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_overlapped_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0f4d8cd2abbd0afa9bf52fd817be6c8de971d9ea2fccf64997cffc2cd4c70ba +size 3561 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_serial_port_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_serial_port_service.hpp new file mode 100644 index 0000000..8202ef3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_serial_port_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf4469088d254ce43cddefc1f1aa71238f709112ba030f3bd4c8dcf3dc525460 +size 7848 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_accept_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_accept_op.hpp new file mode 100644 index 0000000..a9342ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_accept_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f10aab18b460d197b69e28bd51257b2792557afccd73900e33e0a57e2b4ec654 +size 9676 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_connect_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_connect_op.hpp new file mode 100644 index 0000000..571dfcf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_connect_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f98301ef1adf3e679f0acc45dbbfd611ff049590a3f1f430e0eeca3b586edd8 +size 3835 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recv_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recv_op.hpp new file mode 100644 index 0000000..9e385db --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recv_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b13de30ace488f64262fc869f05d1b1613f00c2b2374ac1d92f94b7709a241c +size 3958 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp new file mode 100644 index 0000000..3e0d647 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvfrom_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8538901831792383ed246c64c94153d98fdea6696a858ab84f61e17e1a24cf5f +size 4116 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp new file mode 100644 index 0000000..acc2a28 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_recvmsg_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79334e9adab359b29c803a19bce4fed09266a9e046d36a8e7ec7dd03e7c9d5bb +size 3937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_send_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_send_op.hpp new file mode 100644 index 0000000..aeb9a7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_send_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:522a003daf6c68da503c14749c0567c49f413aa333e77dae1e86a9c495e85ad2 +size 3701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service.hpp new file mode 100644 index 0000000..2f236f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f95ab08dbb3af7fe18f341202fe97b87c5ff9bb75b90da419ecd9b3699bff80 +size 20585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service_base.hpp new file mode 100644 index 0000000..50ebb57 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_socket_service_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1de9b20eec883e09f4a42351d7074cbf10ae75a4a1c5329fc5f1ad9a1da115b +size 22970 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_thread_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_thread_info.hpp new file mode 100644 index 0000000..fd11fa2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_thread_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8757a76df82b24733b37e8faf7caf5e125281de247127afdc662fd65d656bb0b +size 903 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_wait_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_wait_op.hpp new file mode 100644 index 0000000..61f0f72 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_iocp_wait_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e28640c50c829aa4a8062030a78d52ac9b82b3d3f5e5d23eff395bee8f85a07 +size 3711 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_mutex.hpp new file mode 100644 index 0000000..18405ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9881d335171e72da5d16a814726f1f71b0432e1e92bbd70399612795ce111400 +size 1832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_object_handle_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_object_handle_service.hpp new file mode 100644 index 0000000..7447b93 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_object_handle_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96619f6ff6e1f1ecbbf2deb121219f63537d6921fcef5849c67fd88cd06fb066 +size 5991 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_static_mutex.hpp new file mode 100644 index 0000000..b302422 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea162c53713c8fe9f3f354f4a5ae8c60fcdabdda9b03fb6dcb9ced41b9a091ae +size 1937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_thread.hpp new file mode 100644 index 0000000..151c2ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5da25470ee00115bc15732d2b8300f8d13777a37f28e812192639f8de26d601 +size 3233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_tss_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_tss_ptr.hpp new file mode 100644 index 0000000..92d849e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/win_tss_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:027351323e075b51bbb4cf75f579bc195e2964cb72876a8e69e8c421c667b5fa +size 1744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winapp_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winapp_thread.hpp new file mode 100644 index 0000000..4c78c62 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winapp_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df88b9b348ec91207daa1f83252c90a0c13dc8ecb428782eb3e43f4d2ab4a50c +size 2740 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wince_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wince_thread.hpp new file mode 100644 index 0000000..6bad7f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wince_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a9330e36ec552fd2376174739bf6b057c1790b6d5fda2bcffc7c25eb87706a8 +size 2683 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_manager.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_manager.hpp new file mode 100644 index 0000000..f6a68f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_manager.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2f02eaa8e8c37a467703b2385624d1830165aa09dcff8334d6c607b9c0840df +size 8700 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_op.hpp new file mode 100644 index 0000000..cdebd5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_async_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04b1d6bd54a98c9cbc75a2d43950b61326bf42aef5c6aa9e39f552f9c10d0078 +size 1487 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolve_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolve_op.hpp new file mode 100644 index 0000000..afd78e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolve_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7fd049a17949996d69be978d7ffcad3e8f26a70c8e7d4e998ed15b5c0ba7bd4 +size 3784 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolver_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolver_service.hpp new file mode 100644 index 0000000..c33ec11 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_resolver_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8571d956ea0ac4f98b5508e0052d2b63a57ad17471f657ab4f6168ec8d915483 +size 5746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_connect_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_connect_op.hpp new file mode 100644 index 0000000..dd8baaa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_connect_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c71da19c487253fea8777ce75ed35e22de6a2a8efeab6fc8cbc19f49a8c05ea9 +size 2965 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_recv_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_recv_op.hpp new file mode 100644 index 0000000..2879335 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_recv_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84f0385bb94a35ce2578286652e923897643d8f89bcd0e78d268213973b4678a +size 3764 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_send_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_send_op.hpp new file mode 100644 index 0000000..3a34fed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_socket_send_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb7ebe5416c9329a3283463e9bbca847740b74baa929deb54c0df302170bd7b1 +size 3399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service.hpp new file mode 100644 index 0000000..555e029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0525c18869c3de8f89c61ff19b386135ae7f4025e4ac1e9b871a9b0da7496e7f +size 7089 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service_base.hpp new file mode 100644 index 0000000..62fd60c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_ssocket_service_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12e5c1cd470783f0be3dce2028ddc99489948eaa7c33a667bbcad4c12064c0eb +size 12560 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_timer_scheduler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_timer_scheduler.hpp new file mode 100644 index 0000000..776d4da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_timer_scheduler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2008908bd8882a5c4d13afe6b6d94e48428683049640df1c36d6967e3f5679f +size 4511 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_utils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_utils.hpp new file mode 100644 index 0000000..78905ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winrt_utils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:640ef16c0cf47062f071ab23637a2e6d3751ae0bbebbdb717d0f956faedb5d80 +size 2760 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winsock_init.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winsock_init.hpp new file mode 100644 index 0000000..d0c8cbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/winsock_init.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63f1f7dc67a733908855a135025e3aee04ff5dcdfc8ef7750a9a84123476b50e +size 3232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/work_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/work_dispatcher.hpp new file mode 100644 index 0000000..4ff4f34 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/work_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:593d3454031d55d415a0f3f2e42a1530260a483e68c4576197e400150e006fd1 +size 1929 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wrapped_handler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wrapped_handler.hpp new file mode 100644 index 0000000..4e90d86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/detail/wrapped_handler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b853d7f308c42c5c754df3ebc6d198a1802c0142c5c54c18c556bcfdad3239d +size 8334 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/dispatch.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/dispatch.hpp new file mode 100644 index 0000000..60493e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/dispatch.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f02de1b3a86abcd3eb6b94e2342601fbcf4c010bc414368357382d342ffd2fff +size 3997 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/error.hpp new file mode 100644 index 0000000..a78d1c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baa0e11510425b18acc67872e2c418d81623e6100958f22568444c5237222aba +size 10351 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/execution_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/execution_context.hpp new file mode 100644 index 0000000..ccb5d1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/execution_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e14bfddcc202437cb659405c666fa9093b81ee958addac171658f40255b5e28e +size 14333 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor.hpp new file mode 100644 index 0000000..f89bc41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:131ed030b7701fd32bbb00762ac82e723b80532911ea42968b1d405f674ba66f +size 10297 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor_work_guard.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor_work_guard.hpp new file mode 100644 index 0000000..733e454 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/executor_work_guard.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5bddb1ec2b137b07255c945b88b168a7be362fc8003318e60951aebc8f21ea6 +size 5133 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental.hpp new file mode 100644 index 0000000..c0259de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:245d8dd777c1a59a97752137ecad2230d8591a93b709e4ddc133b86227e8f483 +size 656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/co_spawn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/co_spawn.hpp new file mode 100644 index 0000000..6a81f03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/co_spawn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d2458fda0e9d12b5c6597ed32688cccb1e646db6c3bd82fd37f4bf3709a3e9d +size 6380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/detached.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/detached.hpp new file mode 100644 index 0000000..ac46276 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/detached.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fcdefa1caea5197033dede92a721728e623fbf476f3478344356096e664b25e +size 1826 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/co_spawn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/co_spawn.hpp new file mode 100644 index 0000000..fdf8cd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/co_spawn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9869211858b73eb3d3debdbe1c1faef44fdf975a730a1253f1972d5b00ebaa +size 20232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/detached.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/detached.hpp new file mode 100644 index 0000000..5f37f0f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/detached.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20caf730d7400d2a87a8b4567617580e1ea2dcdf5be2563397f22738f1282342 +size 2128 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/redirect_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/redirect_error.hpp new file mode 100644 index 0000000..d043f90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/impl/redirect_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8d4876b1637b67e716211d19efe02db8d4f5c44683ab56350a91bf5e42c3795 +size 8588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/redirect_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/redirect_error.hpp new file mode 100644 index 0000000..803993b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/experimental/redirect_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b051c51392c0bb980506ddddfd2698e932975873c8132a0e22f930f59079f085 +size 2046 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/basic_endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/basic_endpoint.hpp new file mode 100644 index 0000000..5863d78 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/basic_endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2f1822a6dc08e182b8f423402f79a7154b6952a80db8f5c593ba90a2e55c72b +size 4824 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/datagram_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/datagram_protocol.hpp new file mode 100644 index 0000000..e4ff5c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/datagram_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f8d444b89360703332b71284a947d6ffdedf0201513930a645e897796f9e7be +size 3290 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/endpoint.hpp new file mode 100644 index 0000000..3f12577 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed92caff8cebc4dc3180e14af7f7b1e31cbd3baa7f9096349daf4a0602c93c26 +size 3359 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/impl/endpoint.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/impl/endpoint.ipp new file mode 100644 index 0000000..6a088c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/detail/impl/endpoint.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0973171b6da3051ac86e7d8b3eedbcd8759c995a96c7a36f5ff942ad158f221b +size 2846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/raw_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/raw_protocol.hpp new file mode 100644 index 0000000..7aa2d07 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/raw_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de0781c2e14c29c4ca2f4d0351449873e09b1135315439f1fe50ab5bdba0d6f0 +size 3150 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/seq_packet_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/seq_packet_protocol.hpp new file mode 100644 index 0000000..c8d10b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/seq_packet_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c5d06ad85fd296a4543107f7ac9643b0dc477b30f8b7dee8ccff409c957aa47 +size 3236 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/stream_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/stream_protocol.hpp new file mode 100644 index 0000000..3d75abb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/generic/stream_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ceb76a6660d5e70d25e8dc9e3d5c9d063a109c73aab48c73949575a13a05dfb5 +size 3463 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_alloc_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_alloc_hook.hpp new file mode 100644 index 0000000..084a2a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_alloc_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:560e2460c5db4c122574053ee37e62a238ca2cafd41c204f59c692568da7fccb +size 2516 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_continuation_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_continuation_hook.hpp new file mode 100644 index 0000000..e1b40de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_continuation_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67f9ae57a708be2ffc606334214a35062c9802536d2f1da0169848537b5144fe +size 1474 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_invoke_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_invoke_hook.hpp new file mode 100644 index 0000000..ea8fa2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_invoke_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:909232f25d5fbaa668f0d685ed0172e20ebdd5517e85c45624719e369ed9f4c8 +size 2750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_type.hpp new file mode 100644 index 0000000..cd8bbc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/handler_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b55cf8c79ee0d892648bc0d8a8836f7f4340f0a1b549fa30a64f0998ee8ca463 +size 1608 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/high_resolution_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/high_resolution_timer.hpp new file mode 100644 index 0000000..333efc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/high_resolution_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef7a84a54d5c1764b10ca15dc61d73b20047eed3a9049d0f58d4fd0e10b1448 +size 1394 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_read_stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_read_stream.hpp new file mode 100644 index 0000000..fc6da66 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_read_stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a84d5d302790a9b04dcee06dba9e444405d33433b7e95ac1f36bd4595aa6a53c +size 13410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_write_stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_write_stream.hpp new file mode 100644 index 0000000..94a8dbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/buffered_write_stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c539ec32e1cbafab25ee990f956db06c0e4e2616eb6b97c3aade2e69ec9fb74e +size 12977 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/connect.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/connect.hpp new file mode 100644 index 0000000..6757dfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/connect.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:804ccfb625482e4fd775f381d924d2963c1739e71c19f5113bd630a6f10b1dfb +size 30400 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/defer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/defer.hpp new file mode 100644 index 0000000..16c2b34 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/defer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02648fb36045315a6cd3985da79616a1a5b908e4efea0d532a6dc8532f75ba9a +size 2454 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/dispatch.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/dispatch.hpp new file mode 100644 index 0000000..f7e6a2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/dispatch.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e27ec1faf56e4c13daa2d10b51ff1da007d61fb8297f13356304ef6047c618 +size 2496 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/error.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/error.ipp new file mode 100644 index 0000000..268641d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/error.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7026e0ff4b9d134d412cd5160c5e2face30c88876429925290e562799cbccee1 +size 3070 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.hpp new file mode 100644 index 0000000..5fc767a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e59a04360ad5038bcf336bb1b211407fce3fb349f12b6c6bb7b937e2b4e6acc +size 3248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.ipp new file mode 100644 index 0000000..497c33a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/execution_context.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca346c4d55aed1d4411db83613daa33311d6cbe0f36a61ad9a6ba052f7eb9e58 +size 1801 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.hpp new file mode 100644 index 0000000..57f004d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da2519b35e8e2ee8cd2a36bb7847e544c60257a3e6091524fbb4595f0c77d91f +size 8425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.ipp new file mode 100644 index 0000000..234424e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/executor.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f84b90cd80745837a3fcf01ba9324bc65893f242554bfd0766f52b75a8f5b667 +size 911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/handler_alloc_hook.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/handler_alloc_hook.ipp new file mode 100644 index 0000000..f05cf50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/handler_alloc_hook.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2408d51873fe153d2ad407ac9659c1c58345fce73283e13c3290dfe8f3c8c45d +size 1690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.hpp new file mode 100644 index 0000000..fc5f9cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bca79c36df175a4e53eea7ab79b6d822ebf71e977ae67643afff0205a9fffd3 +size 10171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.ipp new file mode 100644 index 0000000..82bfd3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/io_context.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65572c45c5b7cd1f5f6a513c04c9b44547e3a5a63f9fa9422afba8be4a249ae8 +size 4084 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/post.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/post.hpp new file mode 100644 index 0000000..0ee6ffe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/post.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ce4a0c5ffffff7ac857b49d9e0480681d3206aa687b93e2c3f21e9d25daf41e +size 2443 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read.hpp new file mode 100644 index 0000000..aaf8490 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:932008cb54ed84513c5d05590301a5b8b7d122b6c6b1c797536e8cc83bd3985e +size 26056 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_at.hpp new file mode 100644 index 0000000..d34ed09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a80572cee8b10da3656f3592697f4d61fb051bd0dd5ac01b602ee4169668c474 +size 24102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_until.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_until.hpp new file mode 100644 index 0000000..1fafea3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/read_until.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d94f0e2368503868fd078b65ccca8aee8da44ea822d227b77ff78eae338ae557 +size 50549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.hpp new file mode 100644 index 0000000..68040ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b93d39624f4d87526100a15305a5aa9113250ba331028c47ecd31e38f5a0342 +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.ipp new file mode 100644 index 0000000..bfeea4e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/serial_port_base.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:398142e389a4c8c988efc05afd1a3a44d77c9de10cb0eaa32d1dbf93c474bbcc +size 13327 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/spawn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/spawn.hpp new file mode 100644 index 0000000..284deb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/spawn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dc5a82c6e2922931b19909c441031c4c6ddf6d34617f2d2c8cb5d63a095d885 +size 15788 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.cpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.cpp new file mode 100644 index 0000000..a30182d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.cpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:027311c78ceb4d1900592cedcf91f929ad84b25698772815d06bed068271ed37 +size 712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.hpp new file mode 100644 index 0000000..9891175 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/src.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b921421712371a4c630582c874b6a79ee7b3ec26d32c803500e1e6c72b9f7ae +size 3661 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.hpp new file mode 100644 index 0000000..6b309ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdc959173817e9f5f4f182387244294563850d3a4083d4103eaff7f13b6c5755 +size 875 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.ipp new file mode 100644 index 0000000..e2d34ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_context.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbe223cd3aa3421cc05a8bf7f79e385ef275664e0f7c3e6b7521be89ebd28a5e +size 1591 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_executor.hpp new file mode 100644 index 0000000..9e7a3b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/system_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80123ef4002039fb1c1c3e1e9fe643ff2404d3e34c088a12d387a210654c28fc +size 2727 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.hpp new file mode 100644 index 0000000..a7a1fae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35f9f9682866f4de33447eeee09ebc69b07b71a60cc4200b8dd54c243b1d929c +size 3836 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.ipp new file mode 100644 index 0000000..9a9ca3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/thread_pool.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d11820ab27f8cc2eb0c6d633a2f6d1f1ae325c3e831cd206dde503e8cacdeea +size 1630 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/use_future.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/use_future.hpp new file mode 100644 index 0000000..a3aed95 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/use_future.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd5301f2b0f81aa854d9265fa5ebde565d49c247ad43e5d8ffe417bfd3199be8 +size 25304 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write.hpp new file mode 100644 index 0000000..2eba656 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:269222cfc0fdd661418411fa64b921f281231957bcee343f0bb8b2ab974d8640 +size 24231 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write_at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write_at.hpp new file mode 100644 index 0000000..f35ae00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/impl/write_at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e883994ddfcd223e2031d7c1516172e8d084a9db49335fd0e461baed0fcf4308 +size 20882 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context.hpp new file mode 100644 index 0000000..4a03dcd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ace12ef70142c92895b0112a33dfc5d97c50e16b35596419d7989c8a9d39457 +size 33264 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context_strand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context_strand.hpp new file mode 100644 index 0000000..2c12625 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_context_strand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d507cdd9d5a67e5bd7c10b9ff9e61bedc678ebecf0fec69d762112166d1a643 +size 13970 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service.hpp new file mode 100644 index 0000000..d3c4a05 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05d43932fad7c13d57944f0db0599e75431eadc23877e5af0da933273d5e81d2 +size 861 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service_strand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service_strand.hpp new file mode 100644 index 0000000..abef986 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/io_service_strand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:740d721453207bea19bb53f2145766e17499975a04279760f93a53735471ab76 +size 575 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address.hpp new file mode 100644 index 0000000..1ef8494 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1ae8a83875a8293f95e03288a66089670ffb050ea03fa4998619a7778833ddb +size 7806 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4.hpp new file mode 100644 index 0000000..0fc9097 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3b8a0f0edeb67a741c01cd9999f968772972f91c469f570909de73907e8eb32 +size 9621 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_iterator.hpp new file mode 100644 index 0000000..1495626 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e659f9c99c997f9f26f763edc04c26d27ed22a7e8617471e20cfc5fdd0471a56 +size 4260 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_range.hpp new file mode 100644 index 0000000..8e5019e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v4_range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:634e6a10d612672160badf5f4daf6dbe7de3b9b4bc8f1779e39b4ca3a27433c7 +size 3392 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6.hpp new file mode 100644 index 0000000..070e951 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be66f84f8f6c0d0b9c78da49a30c51819093bc07c1d61e05ed6f90afab0ceab6 +size 9943 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_iterator.hpp new file mode 100644 index 0000000..19db191 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:909280f4144b87cbba1d689ae4a05968464fa8f345e204c84f0bd03f12058601 +size 4602 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_range.hpp new file mode 100644 index 0000000..70c8219 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/address_v6_range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb2e51865a750cc7f970a0c14822f64357d083e1d71829e21e8b6a3f36a7c0f6 +size 3335 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/bad_address_cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/bad_address_cast.hpp new file mode 100644 index 0000000..59ca681 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/bad_address_cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a537a290eb8cc79c20a333bc52dc8adb7c53bb6edf47d7f7628d46d23711aaac +size 1317 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_endpoint.hpp new file mode 100644 index 0000000..b821443 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e16fbc31d9c938fa29e3f9c29f75a6245b3b34a35083f4250af5859fc55c5b51 +size 7008 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver.hpp new file mode 100644 index 0000000..c14538e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5893909a41f2c2edbdbc348fceadabfc3a9778410eae379bcc96a2ac28fbac7a +size 44973 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_entry.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_entry.hpp new file mode 100644 index 0000000..e43f3a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_entry.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:817b5b8501da73242c5e4c0f643f5d0674f39de89e22f2bd5bb667e4dd2fca0a +size 3020 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_iterator.hpp new file mode 100644 index 0000000..a5ced5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8b2d7ef1403f664e3370155324dc745988227670d4f58a63b37367c70524cb +size 5154 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_query.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_query.hpp new file mode 100644 index 0000000..32f71f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_query.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea98bc2724ca2716db822ad8d554abe1a7f729e61a928ddcddb1655c1f1b3fe1 +size 9356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_results.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_results.hpp new file mode 100644 index 0000000..1a41e0b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/basic_resolver_results.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2732bdecc6b106dcf1e2ac5ac21a3cc2aad35d6656d7b493f5e50e43c9d0f5f0 +size 9749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/endpoint.hpp new file mode 100644 index 0000000..2ea4a6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d596c6b8cdad52afbf03a5f6f24a06784b0e9d02c16d014a5b51e6d8c21f63b +size 3767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/impl/endpoint.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/impl/endpoint.ipp new file mode 100644 index 0000000..0782ce1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/impl/endpoint.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12d9d27d00dda12cba1f5dcdd02e980db6cd69b89599f0234537fb1c06106767 +size 5670 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/socket_option.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/socket_option.hpp new file mode 100644 index 0000000..d624276 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/detail/socket_option.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c62eb2ce9b64345f6fd8da7afbc267e237c62f0eae9972fc3854e509ffd994e7 +size 14206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/host_name.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/host_name.hpp new file mode 100644 index 0000000..d7d5e44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/host_name.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc63f753dcf320196077f0771713dcb9f03bedb78a86833225580ce10b51577 +size 1106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/icmp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/icmp.hpp new file mode 100644 index 0000000..dd9c53d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/icmp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de48e868cf93da48510fe65ad55b67147f58318bcf209d6fcfe830bc1ffb4ddd +size 2745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.hpp new file mode 100644 index 0000000..6a3c595 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef96c7203c2c98f3023a61fdd03eb660401756765b325cce077791830a522b92 +size 1641 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.ipp new file mode 100644 index 0000000..c24a61c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2e1c764a86ccc309e6c2e460f036a3b23976b2dd8b3e010a1ec48f14f609637 +size 5307 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.hpp new file mode 100644 index 0000000..5642e2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1b05b2874beba8d0ae3c45e76a628834844120681467ae2e8e3b19a9408d6b7 +size 1695 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.ipp new file mode 100644 index 0000000..e272eba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v4.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fec7f5663e125790acf43f184ff8a8924161aebae569787d74f38364372564ac +size 5479 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.hpp new file mode 100644 index 0000000..fd46fdd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed4e419c897db68dce6664eb49baa71682caec0e69ff253ad90ea2b44a6cc9e8 +size 1695 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.ipp new file mode 100644 index 0000000..3dda495 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/address_v6.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cf5ac7da3d90753d1f796d3c374de28a3f3f4ce082e2aa20aa00789b41b94e6 +size 9941 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/basic_endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/basic_endpoint.hpp new file mode 100644 index 0000000..8ff7a17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/basic_endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ceaf18cb3f79c64359e1f826d984cfdb9cb4856e17f05efc3a7c280047c7d71 +size 1227 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/host_name.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/host_name.ipp new file mode 100644 index 0000000..b0edcea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/host_name.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0144ef48a3f082ab9f4a45234cfb7bb52ac567914eb349154af1d571d99cf84b +size 1426 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.hpp new file mode 100644 index 0000000..24d1e77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78954e2d43659e33abde368bb68f6a5160f8cbf8906e51567dae0e38a279c1ab +size 1484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.ipp new file mode 100644 index 0000000..aecc726 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v4.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:026e2d4de233900343b36bd1c104ecedc350f22ad9b7a9f1e5eae54d85ccaa0d +size 5619 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.hpp new file mode 100644 index 0000000..2407477 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90128aeff354db1121426e26a866ade6a3f0190ad190a3056f9549524b77370a +size 1409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.ipp new file mode 100644 index 0000000..f989f3d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/impl/network_v6.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:235079f8fde220d14bb9b0c8318bf96471839c399acaae770c18b6a2f97f8ff6 +size 4961 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/multicast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/multicast.hpp new file mode 100644 index 0000000..df73304 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/multicast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79961573d1f72e8e495a8866d49159c7224f9e4c31cde25fa9f343347945ffc4 +size 5503 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v4.hpp new file mode 100644 index 0000000..d02d3be --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693999f0ba5a341d081d81f6379ea49d96b35e2173778b25dcd88804e0aa96aa +size 7283 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v6.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v6.hpp new file mode 100644 index 0000000..3c7c06d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/network_v6.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7d83f4fc6fe2f5e5f5fd2ed93c01b2c35a90906e6b6f27cadca73dac2a48d69 +size 6500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_base.hpp new file mode 100644 index 0000000..c87f905 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b8e04c8cd661c170e1a1c860031db233ab0de1b78246a3842b1a95a4fed07de +size 3772 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_query_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_query_base.hpp new file mode 100644 index 0000000..4d1ace8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_query_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17d1be625382e3d52753963618b09ebfc2aad48a59217c6d2b78c16756a647a7 +size 1169 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_service.hpp new file mode 100644 index 0000000..57cde38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/resolver_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2c1ecfd6df37e67c9071ad2ad6e6c91b6fb4580f5e85769a0de9d6b1d18f571 +size 5904 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/tcp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/tcp.hpp new file mode 100644 index 0000000..df69ff5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/tcp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9f69a13f5d4b3a5578506989fcbb10f6e1e7b9a1b63f9692c6c80b9491da534 +size 3810 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/udp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/udp.hpp new file mode 100644 index 0000000..c4e642e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/udp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a278a7e948d92e8dcd908a0fc1dd243e18a61444f042064e619c764ddfb5fcb +size 2540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/unicast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/unicast.hpp new file mode 100644 index 0000000..72447ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/unicast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73002b553b3e40b76e5ca0bec0d4d7d292fb1d656db7ac866da8224eadd1f2c6 +size 1787 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/v6_only.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/v6_only.hpp new file mode 100644 index 0000000..26cd5b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ip/v6_only.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce7c43d538dec4b00eeaafc486449fd6d919a87df3a6d0adc7834d0d2abb371f +size 1811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_executor.hpp new file mode 100644 index 0000000..db98dec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4642a7c28a21dc9a1a9b8f1d794e2fcf95b4802ce42b97e415bdd294183c3a61 +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_read_buffered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_read_buffered.hpp new file mode 100644 index 0000000..be1a489 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_read_buffered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5801a804e7f3224e279183f23dcbe2c2baebb05b885b592120080ac4b46b55a2 +size 1646 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_write_buffered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_write_buffered.hpp new file mode 100644 index 0000000..29f89e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/is_write_buffered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c70135e9f8db384995dd34b4fc8df249acb1196bbefc9ae86f78ddd656e4b2c +size 1667 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/basic_endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/basic_endpoint.hpp new file mode 100644 index 0000000..9bcda4a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/basic_endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07fcfacee85c741a92f85ee153de26d14d64b7dcc643b3eb6489f0d4a3212cd1 +size 5716 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/connect_pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/connect_pair.hpp new file mode 100644 index 0000000..3b72749 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/connect_pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e04aeec377ea5ddb5a4b76c991a99e0efe804346c49a8ad8f88646165d2a54d4 +size 3515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/datagram_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/datagram_protocol.hpp new file mode 100644 index 0000000..76ffc95 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/datagram_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:194e2e306d432e5f44caf5c5932985f27fb91bbcd276d53b2d60b2da614bfdda +size 1990 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/endpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/endpoint.hpp new file mode 100644 index 0000000..0e4f6c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/endpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f46c4572a363e45ef131430ba9dc31b6b9f7eb47e8892a9c5f3c8ea0561549d +size 3564 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/impl/endpoint.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/impl/endpoint.ipp new file mode 100644 index 0000000..f918385 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/detail/impl/endpoint.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:784fb7ddf36d7e06ae3acc2a244954634c026bdd9cabdd778ff881160f13b144 +size 3320 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/stream_protocol.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/stream_protocol.hpp new file mode 100644 index 0000000..1275f03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/local/stream_protocol.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3a44ead6ff8f0822f0265c261b1708d1762106489a84b2a13097128b761e635 +size 2335 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/packaged_task.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/packaged_task.hpp new file mode 100644 index 0000000..1fa668e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/packaged_task.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74317a2903dbc5e993d0bf926fd34f88b4adf2f41be1089328fcf573b8703f72 +size 3358 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/placeholders.hpp new file mode 100644 index 0000000..40b3942 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e8f59912eb21394e7a59b0510098cce186fd01cfe3791f5c963ddd16f762496 +size 4146 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_descriptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_descriptor.hpp new file mode 100644 index 0000000..d52c963 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_descriptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5335a1d978d265c7fafbdba08cb8e0a212f6abe291c85097bb18d289fe189b2d +size 20466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_stream_descriptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_stream_descriptor.hpp new file mode 100644 index 0000000..7111ee5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/basic_stream_descriptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c6738de29d25de7fa3388899e2f62a2ea6176e17fc5d7d3bd6faeed945da905 +size 14316 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor.hpp new file mode 100644 index 0000000..0e85394 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7002eeec5966af0e8f9eee1a4a288566bfccadcf89e51271ebd3b049adbf3897 +size 22357 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor_base.hpp new file mode 100644 index 0000000..75007ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/descriptor_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cf9dd85e7c8b3cfccb9b9a06492c773263fc3a3415629b79dc968f58bea5d3c +size 2370 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor.hpp new file mode 100644 index 0000000..731d586 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c57d4e81bbe0f090c397e2454f066d6a9f90df5486a95f0f08f9dd054294ab8e +size 13985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor_service.hpp new file mode 100644 index 0000000..91dbde7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/posix/stream_descriptor_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e626bd2b574f2a3d78af4dc47eda81cccc481c262b26c8f2b683249ea72bfb92 +size 8816 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/post.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/post.hpp new file mode 100644 index 0000000..1bcffa0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/post.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4329b3b0800d3d87f1bb5c1f51197a9515febd65c323d11add3507b6572a8421 +size 3938 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/raw_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/raw_socket_service.hpp new file mode 100644 index 0000000..c38625c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/raw_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75594b3abdc58d6c6aa2d1d47c1a41336156bb12ee6b0cce6b76b870c9b88a34 +size 15181 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read.hpp new file mode 100644 index 0000000..9e18628 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66ebcc6a8237b95811767ec799e726096a05b6a0f66a31a169bb08af5bd47ad2 +size 38935 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_at.hpp new file mode 100644 index 0000000..f21721c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fccf23cf7f0869e87ca2f1104ce9efa450c9fece2d26bf7dcf1f2988c82b950 +size 26510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_until.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_until.hpp new file mode 100644 index 0000000..eaa08d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/read_until.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48862844a4ac2c096d032a19cb44e97f02377adbdd4bba85bbc6cd6ee29a8d27 +size 75209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/seq_packet_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/seq_packet_socket_service.hpp new file mode 100644 index 0000000..2cb7ae8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/seq_packet_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa15d57b6c03d284c10cb0d4e9f3306c9d36e0c3013f6e5cb2516b91138d9105 +size 13489 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port.hpp new file mode 100644 index 0000000..f54325d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98de02d7379c32792c715579a241b4f19d790500fdcac36dc4357903c7366e33 +size 27711 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_base.hpp new file mode 100644 index 0000000..201f2d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dfbd5c1391c6aa207014acdf1b86ce5383156bb9a9cd62f8e01d734c95b9804 +size 4975 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_service.hpp new file mode 100644 index 0000000..49a2243 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/serial_port_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c827629f8e7f5504bb1740b20b71dcbe35aad37fc8f271c2a5c4911f86e658a6 +size 7586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set.hpp new file mode 100644 index 0000000..4970fe9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:938f8d39da7a28a7daf937016221844b3c9561091f35b4977ffa1d3f25cf95a3 +size 15900 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set_service.hpp new file mode 100644 index 0000000..6336a11 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/signal_set_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:231ff32be7d7c59c2992c85642af4e24b9bb5e9f88ea81922c49998b7d14fb3b +size 3968 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_acceptor_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_acceptor_service.hpp new file mode 100644 index 0000000..43a3720 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_acceptor_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:624706c38efeb26f24f19c826af21406e46787f74e383530161e234f892074de +size 12093 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_base.hpp new file mode 100644 index 0000000..1deb883 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/socket_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2a3e7520ac45eca3bc4c08257914681c0908b2b08959a45e3594c8caa0ae99f +size 15962 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/spawn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/spawn.hpp new file mode 100644 index 0000000..26a01d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/spawn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffd1d7c66de2aae0a6baff85d864a1274f58b280f2e7f65834d7968365cd8908 +size 11556 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl.hpp new file mode 100644 index 0000000..530062d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72bfb0942f5caa3d6ff4dad2a7fc5a2cd0f906bfd620ce2a4066e0ff7d9fe2e9 +size 795 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context.hpp new file mode 100644 index 0000000..4c1098f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca3ab65dbe10885fc8d3adc0a3cff6e697fb0816e445430d4249f1b50d5e3b6c +size 26624 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context_base.hpp new file mode 100644 index 0000000..18b577a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/context_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25db549bbe8bb1c9cbd21a2570f8a7166c89a8488af0b2104b455fa6df14dd97 +size 5437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/buffered_handshake_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/buffered_handshake_op.hpp new file mode 100644 index 0000000..d4dcd4c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/buffered_handshake_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2580cbcebfa28f014adb4c2b897da0dc372e82ea5ca692cbdb194aeefb8e3dc2 +size 3275 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/engine.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/engine.hpp new file mode 100644 index 0000000..84165f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/engine.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b54f2331a87154fac972bd309c3b3603b59b721e58dccafaf7ecac3f556921dc +size 5852 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/handshake_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/handshake_op.hpp new file mode 100644 index 0000000..512573f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/handshake_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f0aee6ab4760366967c6b9bb974574843fa4187dc6cf399b8b0f55ab95dd758 +size 1410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/engine.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/engine.ipp new file mode 100644 index 0000000..4e023ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/engine.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cd5bfdd4962e34f7f00fba7056835e7a61b74b1b5592ae90b244e17a6be63a4 +size 8413 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/openssl_init.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/openssl_init.ipp new file mode 100644 index 0000000..fa4400c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/impl/openssl_init.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4576aa1a186819d859a77deb4c88b00ab77d4acd636cdcff4cb54d42c29b0518 +size 5401 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/io.hpp new file mode 100644 index 0000000..5a49334 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef104030aec2f664091ef94724fe460930ff60612d7b26f26209122d41a6a540 +size 11692 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_init.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_init.hpp new file mode 100644 index 0000000..9486024 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_init.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572a66b06054f551a97d172ce334d48f6726189e4e3ead817f267126d8702158 +size 3059 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_types.hpp new file mode 100644 index 0000000..34df581 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/openssl_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4712c62bcf5f4cb325748f17c182850c53e699a4710a501e026865748c1e86a0 +size 904 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/password_callback.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/password_callback.hpp new file mode 100644 index 0000000..6708dd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/password_callback.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abe1f9bda2a1421a673da68bc2defe24cb7dec90bd5201f6473bc9a1f2c784fd +size 1512 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/read_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/read_op.hpp new file mode 100644 index 0000000..d71705e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/read_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de61ee61dc57775f31dbc35247ce83edb62d67812c37f127268b546d976ce045 +size 1677 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/shutdown_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/shutdown_op.hpp new file mode 100644 index 0000000..952f889 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/shutdown_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:219051fb00397f06617a3bac21f11fd8a1edd830d9a9ba28255098736c5405d1 +size 1273 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/stream_core.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/stream_core.hpp new file mode 100644 index 0000000..3440987 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/stream_core.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b412fe905737046182f56e78da5caa8bf8f8df4a46fedbc134e788e8f7c2e273 +size 4134 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/verify_callback.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/verify_callback.hpp new file mode 100644 index 0000000..1808a02 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/verify_callback.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a46fcc3a676358edb5ee9fc24aaa2e2d8e7d322f2f8c7382503b1e9b9538b4c +size 1392 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/write_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/write_op.hpp new file mode 100644 index 0000000..64cd29e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/detail/write_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beff61c5f4ca7bb1e464c69b760e0778d21818d065f3cb4ce47d7562ec989e51 +size 1673 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/error.hpp new file mode 100644 index 0000000..5e586fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfb76db60b80b6ba8b05b2da78c81641e1d42ee77777634680b4faff48383dcc +size 2687 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.hpp new file mode 100644 index 0000000..fc73ae7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afde58c52015dfa62533bd5d3a5bbfb1cd0c5145c36249065284ef4a9c5d4dd7 +size 1953 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.ipp new file mode 100644 index 0000000..67a667e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/context.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3bb2ab44844aecdd11730dec1fdf414167838316ef0317d4287781f73ade612 +size 34027 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/error.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/error.ipp new file mode 100644 index 0000000..e0762d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/error.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d5a8a3900b8f50c5b29cd2fd5fc4738a40e49c8c084e65ad30268b215b38351 +size 2121 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/rfc2818_verification.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/rfc2818_verification.ipp new file mode 100644 index 0000000..5b74f70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/rfc2818_verification.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:028f19f31d4170831b9ff47cfe249b8e7ac32a64f35f15d3dad5cb5bd7964a51 +size 4753 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/src.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/src.hpp new file mode 100644 index 0000000..c9c9daf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/impl/src.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1445166ad0fe1b8ba389ae347f3ebff66bb0a4b59d763c8004e5274a56e6945 +size 832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/rfc2818_verification.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/rfc2818_verification.hpp new file mode 100644 index 0000000..b09cd41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/rfc2818_verification.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2430456dd28fb6a9cdc12efd195f58e3dc2dd586a4b2767e51e48ecc8366175a +size 2854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream.hpp new file mode 100644 index 0000000..48dd365 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dff19d7da7532713b37568303bdb2b876044fd13f85721be1430f7411311e70a +size 26723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream_base.hpp new file mode 100644 index 0000000..e52ca74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/stream_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9693789496a1b3f7fd110a765df743d123250fde7cf042ee5fbf58c6172a4cc4 +size 1224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_context.hpp new file mode 100644 index 0000000..59a2022 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d1368845a0393d1a831f36144fa86cfb60c03aed6e592937c581d9c0d301af2 +size 1745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_mode.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_mode.hpp new file mode 100644 index 0000000..920ede8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ssl/verify_mode.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4da539e4faae73b099b49744ee7bf03b00ba5800fd0b2a1466fb653a70e56346 +size 1758 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/steady_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/steady_timer.hpp new file mode 100644 index 0000000..f97001f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/steady_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09e97b40fac7a2e1fcee8294af930795092b3a874578ed4e34d247a740f6ab73 +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/strand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/strand.hpp new file mode 100644 index 0000000..448e9d3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/strand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3877818734dbc699317e929fb44248e3caf6e3f627c50305bed13d5c571a7dd9 +size 8947 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/stream_socket_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/stream_socket_service.hpp new file mode 100644 index 0000000..4c10419 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/stream_socket_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d1b40058ef27c7b5ec9c496fc502a1b3d27eee6ca30d68d3f2e73876ac26ff5 +size 13145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/streambuf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/streambuf.hpp new file mode 100644 index 0000000..37ba65f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/streambuf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9dda58d4e8da8527f3224ecfba296055f5aec3036af1386a290f921c8034b34 +size 826 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_context.hpp new file mode 100644 index 0000000..8ce947b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2911d8c3e5f35c39e35373ecaa4de7731d113cfebe52ef8ec8796daf00ce38f8 +size 2166 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_executor.hpp new file mode 100644 index 0000000..ddf7c06 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c226892076a2282ad2c6b019837b715eb86142c31c91ceab5a13e8a62675be90 +size 4390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_timer.hpp new file mode 100644 index 0000000..fb1ccac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/system_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40ef5f6018157c4eb087fb8bbfa862808db4d8ffcc38422e355737e46ff1b33e +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/thread_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/thread_pool.hpp new file mode 100644 index 0000000..e04fd6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/thread_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a541a4dc05285a3dbe9efa4641f9db317bc60a931f1c31d394967b93fdfb4b5 +size 7449 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/time_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/time_traits.hpp new file mode 100644 index 0000000..3181c91 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/time_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91ad4e0a41a42d656b4c09da7b1bafb50bc6aee724ed7a8bdbe72c9fae38a4e0 +size 2281 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/buffer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/buffer.hpp new file mode 100644 index 0000000..e9bcd9d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/buffer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92010a61c2cb299ecfd3ca88dc2d3b4c9c5fadf0f7050f32a95256719057ca4a +size 671 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/executor.hpp new file mode 100644 index 0000000..951515d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95315500977f69c2b393b75348ef77b43076d72da0310f6e983f7683f01b8d48 +size 1125 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/internet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/internet.hpp new file mode 100644 index 0000000..d09ab4d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/internet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f91d7191014d874c3edd49bc4d2da9a5be3bd83dda5413f293eeb8caf1f487a +size 1393 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/io_context.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/io_context.hpp new file mode 100644 index 0000000..a37471e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/io_context.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e4aea9c89b65b53d3275d8c863efc0c42aaf6b2a13feaa0b8c1756311f74702 +size 548 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/net.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/net.hpp new file mode 100644 index 0000000..79af345 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/net.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99fc28ce0060d1dad8ab068ab7e1a3e01f7c6e7c0f24643de2a5f967274cc25a +size 735 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/netfwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/netfwd.hpp new file mode 100644 index 0000000..1099ea5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/netfwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7dc63ff0371577c59c69865286e7ed06ecd94c4d72a0db5542c02be15f01fd6 +size 5123 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/socket.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/socket.hpp new file mode 100644 index 0000000..2f3579a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/socket.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2fcc64f241bb09615b9e043780c8d61b8eb980f9debfe70c203fbe31b81a2a7 +size 841 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/timer.hpp new file mode 100644 index 0000000..96fd924 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/ts/timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f2940128369a6f667c6602f61f6802f54ffad8fa9b803807c0f3ef08cfb1b09 +size 738 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/unyield.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/unyield.hpp new file mode 100644 index 0000000..ec4c028 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/unyield.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05cec70bb2caa62252bea38b5c9c9da8f82264911d816b13fb387dbbae1afedb +size 381 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/use_future.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/use_future.hpp new file mode 100644 index 0000000..1fa3417 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/use_future.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0efbcad95c823020605bfc4dda17f6905b8409e5d25d4343d228be3da02e9637 +size 4820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/uses_executor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/uses_executor.hpp new file mode 100644 index 0000000..a5bd963 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/uses_executor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:988440437a206491d44593f2a7a12f20ba9951b4c572db2934c71d36c0f47d36 +size 2348 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/version.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/version.hpp new file mode 100644 index 0000000..5c090d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/version.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:679f696421f7dd798971f860534910ca693fd9dac5ae6973d0fd8c04b284410b +size 686 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/wait_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/wait_traits.hpp new file mode 100644 index 0000000..07fbd64 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/wait_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8195e154d3fe6fb41d7000da5dabd4e02b8a2719d9dd1f5393f6356244930a7 +size 1451 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/waitable_timer_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/waitable_timer_service.hpp new file mode 100644 index 0000000..443771d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/waitable_timer_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fd732196bd673628019983bb0a0155b67971caf8b4b08f5a6f4be12bcf388d +size 6346 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_handle.hpp new file mode 100644 index 0000000..91d711c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9c449c77722603d514f2c738c694b3c99ec2dec4714c886c8eba8ae4702c482 +size 8810 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_object_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_object_handle.hpp new file mode 100644 index 0000000..191e9e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_object_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fea66ca2dbb1547743b9d1f3ea75e0050a671b4d1451ba3d6110ecd885fc766 +size 6353 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_random_access_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_random_access_handle.hpp new file mode 100644 index 0000000..9fae87b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_random_access_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6017f7e39c8f0bb20ea214dab5f630193fe6931dfa0bd5a9fc364261ba9fc70a +size 15013 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_stream_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_stream_handle.hpp new file mode 100644 index 0000000..af151bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/basic_stream_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30e1f06f36cf78c331db0ad459d95f13f1404caec3a85c75508ce5cc517dd835 +size 14005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle.hpp new file mode 100644 index 0000000..bc4e09e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c3528d08d93e565cddf05444b6593ca82623ef5bd952ac1aeb0564cc29163eb +size 12870 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle_service.hpp new file mode 100644 index 0000000..d2cb780 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/object_handle_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cc1f72a8a48cf99033679c9a34b236fcbefb922d08354a40f408e182878a300 +size 5349 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_handle.hpp new file mode 100644 index 0000000..d8b0b9b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64f0ebdc050ca6bbbeffe4b73bd472038405a753b372f0c4125af7588b5d929b +size 10888 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_ptr.hpp new file mode 100644 index 0000000..cc76ea3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/overlapped_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d790c15bb8ad8ce973c742522e7e6e5ee6be2fd2dddfde32fb4614e5c0c15719 +size 2959 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle.hpp new file mode 100644 index 0000000..55bd039 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ae1f571a0918b0b8fd5fcb7f8d9db16bf5a2912ae6ba93dcadea52053316f70 +size 14811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle_service.hpp new file mode 100644 index 0000000..71f694e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/random_access_handle_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54f3d602c856f4086dc68810f157912dbf05f0f8b343f3e0bf6c1eb5c101b81d +size 6796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle.hpp new file mode 100644 index 0000000..a925fff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cbfb1581002a24ac9778b6234d276c27e989ec3d117e5e5474569a2a97330e8 +size 13860 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle_service.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle_service.hpp new file mode 100644 index 0000000..fdb292b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/windows/stream_handle_service.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e22f0da024ae451fac13f7791632c5265012553c26bd8a6c6eaeb65e4e89a40 +size 6391 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write.hpp new file mode 100644 index 0000000..3d29525 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8121f2c0dbd7a962a183ddd6956b8a6b083976279c5c148433d54ea399d91911 +size 38694 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write_at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write_at.hpp new file mode 100644 index 0000000..b4676ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/write_at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85c2d4434e994f6178bc0805fe1da40110531ce9a2b0b0d40bb4d0f3f4c5c2d6 +size 28250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/yield.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/yield.hpp new file mode 100644 index 0000000..a3af2b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/asio/yield.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83be779e6c7a0e51559c632e5e50fc5f73fdb4a351ca8df7266f2f386cdba485 +size 482 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/assert.hpp new file mode 100644 index 0000000..f14b4df --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bbedf7669fec61d273084e1165bdf766636bf427d0ce5e9fed378b23445969e +size 2625 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind.hpp new file mode 100644 index 0000000..9ac42c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7442708211608a9390f8a8bcbe1b6008370998f67c1e0198f2d68225e0cd0387 +size 936 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/apply.hpp new file mode 100644 index 0000000..722b63a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3f545bcefda3d8f2dcb7302b3971c3e685b35c6d14b90dab5a56c6982b9eaeb +size 2402 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/arg.hpp new file mode 100644 index 0000000..1821c60 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcb9eb3acf810e8079dfb3e4c7665b8f80e1cc98ac5a7b763fb1d8ff09f04a47 +size 1314 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind.hpp new file mode 100644 index 0000000..a7f6323 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8930aaf6257441ae0a43693e7f3cfe2360c2926a40c55f055d6f445fbc816c90 +size 81476 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_cc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_cc.hpp new file mode 100644 index 0000000..51c7d02 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_cc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba98f81705e1e9633fc3ecc97bd94cd6c195d1695d69c2e4d4f25c47cd065eda +size 6508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf2_cc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf2_cc.hpp new file mode 100644 index 0000000..82c46be --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf2_cc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73218349eb9ff4fa1b2d715093c6bc3d19e3ee555fcb404fc566b45d1433964a +size 11338 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf_cc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf_cc.hpp new file mode 100644 index 0000000..bda8469 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_mf_cc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc07c077db3f655b49d08b991056c0c857e01041cd5861e2afbd645d1ccd3bbe +size 23475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_template.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_template.hpp new file mode 100644 index 0000000..4879567 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/bind_template.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2defabb1fd59d8ff0db963d5be9edc88c4067a43e93a1e809a9871c51f700ed4 +size 14071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/make_adaptable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/make_adaptable.hpp new file mode 100644 index 0000000..03ab040 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/make_adaptable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e65ae5b80733e6b0876abf81d5b6409a7c3efb2acc4dfb4bdad33ad1dac70735 +size 3164 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn.hpp new file mode 100644 index 0000000..58d6ecc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e131c07d7bda3064b4ead6d06de823dcac2a8340fffa69bc7841b0438758dc +size 7049 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_cc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_cc.hpp new file mode 100644 index 0000000..4ac9b6d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_cc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac135d8d682b5e01e76f4c552996aa2eed247eec4ae8c3fcf0ddd1960f02f22c +size 4804 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_template.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_template.hpp new file mode 100644 index 0000000..8c621fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_template.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbe25c55983f9b0f6d695a7044aab9e2f2c74f9804a0883e679350db3667bb8a +size 26529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_vw.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_vw.hpp new file mode 100644 index 0000000..8bcb7e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/mem_fn_vw.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9311b08120e2ae2c1d980ed338db29fb60257cdbb26780cfd32797164f1a157 +size 7952 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/placeholders.hpp new file mode 100644 index 0000000..193a076 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ca918e6c9bebbf79006b2923220e045a06a6caaf7b83ed3572660aa6eecce70 +size 1725 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/protect.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/protect.hpp new file mode 100644 index 0000000..561f13a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/protect.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3372f3a9494d06ad0f6963183ecbcf7351857267348b1ae4ccc97b354f9b2b21 +size 9704 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/storage.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/storage.hpp new file mode 100644 index 0000000..b77336e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/bind/storage.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e0a84447240d765578227aee29572ff8ec9388b203ccf27ff7f824fb1f8ac02 +size 13372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/cerrno.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/cerrno.hpp new file mode 100644 index 0000000..4bf5985 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/cerrno.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c098a406619f7cd75cd5638191be32e3837a5a6692cf9bab1bf2403617eb9b59 +size 4187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/checked_delete.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/checked_delete.hpp new file mode 100644 index 0000000..22c30d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/checked_delete.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c33aaa806a5b166366b487f1ef9d332216a926db4c5f83b68d9449ad5301f6f +size 414 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config.hpp new file mode 100644 index 0000000..569d474 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:373206390d20aa5bb9e2628eb08543399d73b853af7bfc5f1d2bd9a00bc07593 +size 2216 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_prefix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_prefix.hpp new file mode 100644 index 0000000..453f12f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_prefix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bcb32c03327907d1a79f1a687d1e889f048f89a02f01c9306ffccd270ccd53a +size 1002 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_suffix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_suffix.hpp new file mode 100644 index 0000000..952b524 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/borland_suffix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddf73eec710e6a40e5649e70ff0f5ee262b92648ab5b1ab2abb563a5fb6bc556 +size 280 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_prefix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_prefix.hpp new file mode 100644 index 0000000..4b10fa7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_prefix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0846f71a84d25120bd54ae29095b33af1e9691f162a3a81d518b044a76037613 +size 819 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_suffix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_suffix.hpp new file mode 100644 index 0000000..ce5a06d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi/msvc_suffix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e401a3cc760fde65b6ff0681094eaab365a5716632d8526d4847e98f842927ac +size 252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_prefix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_prefix.hpp new file mode 100644 index 0000000..5bed52f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_prefix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cab389037c481b96573401da49f75d2309e6df2947f3c63db396ff5d2a04cff +size 698 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_suffix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_suffix.hpp new file mode 100644 index 0000000..ba176b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/abi_suffix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f301ea93528e4dbf8cada69033f4cda44920ec5f82f6bc4f1e87d88b60cfeea +size 781 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/auto_link.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/auto_link.hpp new file mode 100644 index 0000000..30ca396 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/auto_link.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73dcbbd0d807c16747233ddf769380816eb69f3c8f2fec9dc2bdded7bebd783 +size 16377 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/borland.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/borland.hpp new file mode 100644 index 0000000..7fb7361 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/borland.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf4d58509f668b53f1bc61b854f2828d5e5dac8ad8847a0c0f460b34f93fcf4f +size 10611 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/clang.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/clang.hpp new file mode 100644 index 0000000..b16fffb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/clang.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a223c63d52a40dde9b4a30cdad596406cc9ef6a7d48859776df761998ff84a82 +size 9409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/codegear.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/codegear.hpp new file mode 100644 index 0000000..c2f0af9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/codegear.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89ad51ee112993c90a3dd26d1d99f5fcd852f4ca7cba48cc5da381b053422119 +size 7802 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/comeau.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/comeau.hpp new file mode 100644 index 0000000..1b9fbbe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/comeau.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:710f475254cdce46a9409b53a618f241267f91fd4ff66b24796b4ea596044227 +size 1638 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/common_edg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/common_edg.hpp new file mode 100644 index 0000000..b8aae6f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/common_edg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a02c301cedd3a5b169253f184c419f2051379b0f16afa7d1840495e4be1873e6 +size 5247 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/compaq_cxx.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/compaq_cxx.hpp new file mode 100644 index 0000000..ffa7557 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/compaq_cxx.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5db1c8909dfc9e25ccaca4b205c4def731e3565a73e7529c7ceb31b98f255203 +size 501 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/cray.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/cray.hpp new file mode 100644 index 0000000..a793ed2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/cray.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e4c3d6fecb6d9c7b177a007cc25d61758e56e900fe325f4e860c6561ed302f +size 15285 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/diab.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/diab.hpp new file mode 100644 index 0000000..c98a05d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/diab.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b60af9eae596c5c9b8e26cfaa82d91f8e1024e442d91dbf8245be373de43ed9c +size 909 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/digitalmars.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/digitalmars.hpp new file mode 100644 index 0000000..64e044d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/digitalmars.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a27e82f571ce92696730536998566452e87df1ad2b06e05fd5961f286ca9321 +size 4521 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc.hpp new file mode 100644 index 0000000..992f2dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b93e55d7f13c181e3526f3484283a86c54fac45a7f1025dec9a96a074028e765 +size 11572 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc_xml.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc_xml.hpp new file mode 100644 index 0000000..2d3cf3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/gcc_xml.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6159362de2881f4230008c9e543aeb119ac53e121354057160c4b2ac453f591 +size 3967 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/greenhills.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/greenhills.hpp new file mode 100644 index 0000000..46dce08 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/greenhills.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fa76a673c90ac4dfa2868f87c6fdd42601c1ff69bd4a1aae14dbd374dd49714 +size 822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/hp_acc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/hp_acc.hpp new file mode 100644 index 0000000..3f9e397 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/hp_acc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0614cef2999442685ce759bb10724749b56935302dc6410f880309f6c35fe1e +size 4927 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/intel.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/intel.hpp new file mode 100644 index 0000000..fce44dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/intel.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18b2ae5c32a57321ca00780ff8171b4568599b389c0e712c4cda3dbfbe09ec2c +size 22218 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/kai.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/kai.hpp new file mode 100644 index 0000000..c3f33bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/kai.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a92aed2cecd022d9c1321a47929ae0b518c6e502396df8b70042d90a653e306 +size 1030 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/metrowerks.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/metrowerks.hpp new file mode 100644 index 0000000..b29ea6f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/metrowerks.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba43cb6b143e9a15881c0d721824d6e706d3b60de574ef996a14cd8c61b8bcaa +size 6303 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/mpw.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/mpw.hpp new file mode 100644 index 0000000..7eacaf1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/mpw.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce5a90d5581b5d500db988db6e7786b990712fa137038ceb4e8aa1f1547ea5a1 +size 4706 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/nvcc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/nvcc.hpp new file mode 100644 index 0000000..a66fe65 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/nvcc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d6e949ad18b5c1391cc87ed1aaf8224943ac3d6ff650d3312d23ebde698ef54 +size 2042 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pathscale.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pathscale.hpp new file mode 100644 index 0000000..629c59a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pathscale.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcd0f45be8c30a8337203db437e22a2355a1032d30e0b59ea4108e6089d611f5 +size 5045 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pgi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pgi.hpp new file mode 100644 index 0000000..4250fac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/pgi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0545c8d13c7680d2b46308794b54196f76b86625c475dd0ff809ebe8b8724bb4 +size 770 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sgi_mipspro.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sgi_mipspro.hpp new file mode 100644 index 0000000..2256ccc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sgi_mipspro.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0911c1cf0f124ba79239bd9ee73bc1a78c529e9f99186dc2820c0c33e64097ca +size 774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sunpro_cc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sunpro_cc.hpp new file mode 100644 index 0000000..2531069 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/sunpro_cc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bceea851fe07e3702d8aac9df57d0b6dee85f76ac4b756315a80c6ec49a6818c +size 7350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/vacpp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/vacpp.hpp new file mode 100644 index 0000000..5c52870 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/vacpp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8ae704d51ce15c16b33e5d698ddbe2d9073c8fc743a4aad7cdb1dca85fa8a99 +size 6044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/visualc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/visualc.hpp new file mode 100644 index 0000000..311b862 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/visualc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:194b0a6ad4592bc913df06312279702b16b35dc54f43175a5de0836fdf3fb3e3 +size 11612 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp.hpp new file mode 100644 index 0000000..cdb5a23 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01eabb78ac1bc3c293ea62a7c7a383365e0d5aa1de79645623f2240f5dc914f +size 7768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp_zos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp_zos.hpp new file mode 100644 index 0000000..3b1c9b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/compiler/xlcpp_zos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e6fdd6a4368ba3dc9ec0aede9cefb5056d83728522bb2d896fd943c14b51449 +size 4879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/posix_features.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/posix_features.hpp new file mode 100644 index 0000000..cc7cb8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/posix_features.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bba105d0af558c09307941fe64ce5ce9d775990b96684708adf4a9a92070fc0a +size 3736 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_compiler_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_compiler_config.hpp new file mode 100644 index 0000000..8102469 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_compiler_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92fec7679b77bf4defdbb0ef661a63c2a32470a88bddca82b66e4b48eb788879 +size 5329 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_platform_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_platform_config.hpp new file mode 100644 index 0000000..4d0a9a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_platform_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f2107ebb83c115963be6ec3a63dacc89ef644538b639babad64d720e391b9e3 +size 4479 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_stdlib_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_stdlib_config.hpp new file mode 100644 index 0000000..c168e79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/select_stdlib_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:866b014d24f2a1ef38eb648496d700384ecb4c3a414d6c2f4a5b9071a515fc1c +size 4090 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/suffix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/suffix.hpp new file mode 100644 index 0000000..c63bec9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/detail/suffix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d71fa9b920caf20305158579f3eb45e2021a6c25eb042615e0663639dfe41800 +size 37297 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/header_deprecated.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/header_deprecated.hpp new file mode 100644 index 0000000..6666313 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/header_deprecated.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f65fdd80185ee4999beb94248ff133db9875ac8e44349ca77a20a7ed375c0815 +size 813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/helper_macros.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/helper_macros.hpp new file mode 100644 index 0000000..ec27035 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/helper_macros.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecf739b9b06545ebb0d691e8207cf7b70a5d42d7cb378d5d5502c0c96eefafc2 +size 1120 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/cmath.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/cmath.hpp new file mode 100644 index 0000000..54fdf23 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/cmath.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88333f68b514da159a18b2aac33be864f279ce4efc215c3f8425baf2c9ea1fa4 +size 838 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/complex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/complex.hpp new file mode 100644 index 0000000..3929495 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/complex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c91b0824f8f22581547c364626decc91d94092518be46aa5ed473046565ac0dd +size 854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/functional.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/functional.hpp new file mode 100644 index 0000000..e7ab900 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/functional.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa14f93ad82f3ef4d5be7107e388f4636e057cc056602527ae82319bd6d91949 +size 878 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/memory.hpp new file mode 100644 index 0000000..7955654 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0be3cb94459966b29df1a4c36d4bf7bc18d57d2a06a433c12e1ed60ec29851c +size 846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/utility.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/utility.hpp new file mode 100644 index 0000000..7f033c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/no_tr1/utility.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2f768cf5c0a2800fb8bee3bd521e1e77feb1ca8dc7120d3fed4c7b2a70cacde +size 854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/aix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/aix.hpp new file mode 100644 index 0000000..2b77a21 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/aix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:202780bd2c63a581860b273d439c27aebf5380ec6ef88c3ae6f45fe5498ea7f4 +size 888 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/amigaos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/amigaos.hpp new file mode 100644 index 0000000..e45417d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/amigaos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:281591f1f79e5560b06fbc5671ed86596e10c0ecd02215f3c5e12c101165ea0b +size 442 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/beos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/beos.hpp new file mode 100644 index 0000000..f3b1da9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/beos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bfb4c40d6a696aafc3068e0613768b4ca3bd914dfda24677afe87e6eed39bfd +size 600 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/bsd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/bsd.hpp new file mode 100644 index 0000000..2bfc0fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/bsd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb1eb62f358321c2c555a893329e6b2943e3626323173760e4818c43e923d1f9 +size 2505 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cloudabi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cloudabi.hpp new file mode 100644 index 0000000..614a862 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cloudabi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9c3693c4033f2625f90185806c9a7be6bffb1982fbbf48adddd565fa2e09680 +size 530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cray.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cray.hpp new file mode 100644 index 0000000..e2922b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cray.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cdb37d8dfc102a686fdff50aaa77641aebd5e674dd617c73c405748ffb94b24 +size 456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cygwin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cygwin.hpp new file mode 100644 index 0000000..d97d86b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/cygwin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2851dd3e823b55e73cf894d2976354d7a7326072b2fec81c18a9ed58e27ec1f1 +size 1767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/haiku.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/haiku.hpp new file mode 100644 index 0000000..9db3e2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/haiku.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e66f4725bfa196668a3252964ed5468c81dbd1006a733c49edd4f87f0e7fd4c +size 807 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/hpux.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/hpux.hpp new file mode 100644 index 0000000..a447d8e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/hpux.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e1ada36b46783f7a3f336b8d060a38cd519e9701cc606c958fcc202e8e4f4ce +size 2484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/irix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/irix.hpp new file mode 100644 index 0000000..61e3002 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/irix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ea7e1e081993ed5aa631acf35b69146193f6285624011872fdc861d12274115 +size 796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/linux.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/linux.hpp new file mode 100644 index 0000000..e6a54b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/linux.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f508f04c0fe1e1dab43a5c5cb287bb5514b58f63ea3d4705d3aafea528be2341 +size 2850 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/macos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/macos.hpp new file mode 100644 index 0000000..ad8e5bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/macos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5f923845074c86a3abfb0b5fee1e5795646e92274f722291f6e2a1e6e4d7b0d +size 2350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/qnxnto.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/qnxnto.hpp new file mode 100644 index 0000000..1755871 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/qnxnto.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a994c5204414f356008d0cbb491bb1215f24adac65f71ea62e8f1641b5741482 +size 773 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/solaris.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/solaris.hpp new file mode 100644 index 0000000..a2bdf6f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/solaris.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da27516af05fb2bc561fcc06e293202524b22c962eb9c077646fa7a592afcac3 +size 841 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/symbian.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/symbian.hpp new file mode 100644 index 0000000..956f9f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/symbian.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:301de8231e5be4e9bbb812e7142235c15d6b8b31b05c3b5c55944e898f059e9c +size 2621 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vms.hpp new file mode 100644 index 0000000..52dab7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e479c2501ba061a46720795cbc7845137c12a081df6325d58b9ffe7317ca00a1 +size 749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vxworks.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vxworks.hpp new file mode 100644 index 0000000..ddabc1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/vxworks.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03a1c29f99985989d7315a2ac1a84fa2722211876b0bc61691c39912910f8d40 +size 15342 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/win32.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/win32.hpp new file mode 100644 index 0000000..3400dc9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/win32.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eaa82c93bc49969f4e91edd333e1068bb4aeeb97c9a3dcdf51c0f8dab05dc225 +size 2718 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/zos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/zos.hpp new file mode 100644 index 0000000..584ed16 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/platform/zos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:108f3d2d0c14c98e258b6bb012119edc5c0f954981f4836f019f563e7ec4e729 +size 789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/pragma_message.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/pragma_message.hpp new file mode 100644 index 0000000..bd4e822 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/pragma_message.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1951b59b8db3e8bf1e02c622605c7f45067dc3ce86eee8fba00f656099c64ab9 +size 1019 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/requires_threads.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/requires_threads.hpp new file mode 100644 index 0000000..f6bba02 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/requires_threads.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff5b6b123e00b032d58d5f0c2daa299d99036618d9c90260cb4c7693d05a985c +size 3507 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/dinkumware.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/dinkumware.hpp new file mode 100644 index 0000000..8c5f051 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/dinkumware.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c12e2ab06e2357239c62b4472221a8113f59c4abf4121fc553770665bb30cdff +size 9354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcomo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcomo.hpp new file mode 100644 index 0000000..efa5fbf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcomo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c524987d9cfec1e22e892dd9f5d463a0c443e8d2240e2c0b4ad8cf26ac7c7f7a +size 2791 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcpp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcpp.hpp new file mode 100644 index 0000000..522f6cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libcpp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17f7c3e0fcdf40e865c1ebe0cb1927d179fca9a198076e3dd371a1c2fbddb3b1 +size 4929 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libstdcpp3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libstdcpp3.hpp new file mode 100644 index 0000000..fe65898 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/libstdcpp3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1dbfe1e377b1b9c16f95bbfefe7519b96732645cfa5a8c257757a396d7c4d10 +size 12239 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/modena.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/modena.hpp new file mode 100644 index 0000000..d749948 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/modena.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db7f6ae87e7ef379a1f6319b2598bd177ed9b88ac0ff35a5247cd6274f4067b0 +size 2196 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/msl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/msl.hpp new file mode 100644 index 0000000..1576609 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/msl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42674ff55c138e6e8957fac8d03e461f5d2626da6d627ecd52f06849563500ba +size 2797 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/roguewave.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/roguewave.hpp new file mode 100644 index 0000000..fd17fc1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/roguewave.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5cf1bfc3827462eecb0f5959d6bb823f6fa2fcbec102a72a399e54fed43be50 +size 6219 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/sgi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/sgi.hpp new file mode 100644 index 0000000..4c1fcb1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/sgi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f45d99aab0c0e9027965b14fa9b6abf441da4804ae239e98addadf4788371724 +size 5022 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/stlport.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/stlport.hpp new file mode 100644 index 0000000..46bcecb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/stlport.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:275e8b37848ab6d82d9da164e466868f19136892ce5eff5d466bdd3719dac5d9 +size 8532 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/vacpp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/vacpp.hpp new file mode 100644 index 0000000..488e3af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/vacpp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:153464bd14987f2d0b7d5317084571446bc164961b6b560053e39a43a62ea096 +size 2355 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/xlcpp_zos.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/xlcpp_zos.hpp new file mode 100644 index 0000000..d08b48c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/stdlib/xlcpp_zos.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3918664637dba3e454425906964c1bf56ce5ac2e33beab01e0ec6f62eda3a438 +size 1926 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/user.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/user.hpp new file mode 100644 index 0000000..280acd6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/user.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3031f2d4cd6ab3b9f7f8a17a0b2acd3947a9ede21ecb18a16104b2f2b68d2cb3 +size 5367 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/warning_disable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/warning_disable.hpp new file mode 100644 index 0000000..fdcc86d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/warning_disable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51afb69aa2a3907b10d253ed93d000cee51f88cd6ff1bc7ca23a3296997e7453 +size 1820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/workaround.hpp new file mode 100644 index 0000000..6c55d78 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/config/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d4fd91e3ed1c01cdb49d1bc6dda8cbfd071c323da15bf40c2b58b9371ca48a +size 7558 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/adaptive_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/adaptive_pool.hpp new file mode 100644 index 0000000..cca1253 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/adaptive_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca36797be3bf6fad249895a55362b3dfc83fd877751190c8150640464c2b83b1 +size 23207 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator.hpp new file mode 100644 index 0000000..630cfd0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8ccb5b89731743f872bba30fd11ab752668718535d3c5de0966628a2cd68bd0 +size 13809 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator_traits.hpp new file mode 100644 index 0000000..92724a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/allocator_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b998cb2d659b71ae2e9a547c65f6fa5687a03a8feca8f3fa96cdd54d5b4b6b37 +size 23213 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/container_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/container_fwd.hpp new file mode 100644 index 0000000..0281479 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/container_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9009f31dc938d3eec09bd43576fc0ad97d4a47cca7e0e24c85edbc68e00045ea +size 7795 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/deque.hpp new file mode 100644 index 0000000..68282b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d2c67577f8c7b7adf0dc86427c4245434f8b7292e39dec75b03e435b9c0cef8 +size 81807 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool.hpp new file mode 100644 index 0000000..d82a0e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8dc59b370749d2bb6463a578b92eaa1562408a4e66d41fd8c47643152019c26 +size 5569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool_impl.hpp new file mode 100644 index 0000000..e3e0147 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/adaptive_node_pool_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba25f2342be0cdfae1861ec460a349401e63ced4fe8a9fad321460a7f5f17de9 +size 54088 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/addressof.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/addressof.hpp new file mode 100644 index 0000000..1bfe281 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/addressof.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85817e83cca948b15bd4294c04d36a0c9f06d3aacf8868b48edea274064dbc7d +size 1063 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/advanced_insert_int.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/advanced_insert_int.hpp new file mode 100644 index 0000000..c800e42 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/advanced_insert_int.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d371daa953cb5de31d88f2ded295cb4509618f83356bc22acd34e0fcc73893c0 +size 17544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/algorithm.hpp new file mode 100644 index 0000000..79c91dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3a67332a18f057c2ae6d001f0b692124243722f691d6e21b58ee04c518bd342 +size 3880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_helpers.hpp new file mode 100644 index 0000000..adb5fbd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00da1b4240cda3358a8acae0e737c807e6208a2cedc11732961e520400be8d0a +size 1741 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_lib.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_lib.h new file mode 100644 index 0000000..e8414a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/alloc_lib.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ae7c2f57ce10dd5b64c543d1af5901f43f78acd35894c7a42b7fa07d210f3fa +size 11710 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocation_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocation_type.hpp new file mode 100644 index 0000000..02171fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocation_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81611e89ed54d9deb3fd03c648e6f58e45fca65410f1a846cd422d4b562d8a1d +size 2017 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocator_version_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocator_version_traits.hpp new file mode 100644 index 0000000..18d89ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/allocator_version_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c7b05ab60fa46ecdd75a29ba82721c5c044e2f2fc94006651f707043d71418b +size 5632 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/auto_link.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/auto_link.hpp new file mode 100644 index 0000000..162ad59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/auto_link.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e711211ac22c58b18ccd0dac1f8b6c21556f86e3009d4611e6bded25f45ee7d +size 1657 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_list.hpp new file mode 100644 index 0000000..97db143 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98ced842d2e57aaa2de002ab8de4cab28718aff2073a943435e43b525a64727a +size 4122 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_slist.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_slist.hpp new file mode 100644 index 0000000..1c1e676 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/block_slist.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c5269d48993dc4adda3918c359ab9d0582b63318976f2ece7d39676e2c0dc9e +size 4426 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/compare_functors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/compare_functors.hpp new file mode 100644 index 0000000..d0fc330 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/compare_functors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85c4cb4b05632f26006d2636f3b458eacbb9035ad7be5a7f4dff931778a3079e +size 4013 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_begin.hpp new file mode 100644 index 0000000..879771d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74c930a9e23bf0ea690f43ec8a12b5c9f80109186beae33ad4951e52aa3ee342 +size 3637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_end.hpp new file mode 100644 index 0000000..7408b2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/config_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f35bfe1070009b6dd95b4d76bd60399fc0ba4fcfd462709851499949b552c227 +size 480 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/construct_in_place.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/construct_in_place.hpp new file mode 100644 index 0000000..82522ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/construct_in_place.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ea864816752e399d90e5c9cb4e2c13fb6a11aa7178eb757455f29548e03edaf +size 2952 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_or_allocator_rebind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_or_allocator_rebind.hpp new file mode 100644 index 0000000..16c169c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_or_allocator_rebind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66997726c38ca95f813219bae7e424eb85511cb257a8cdbd3c6bd32528aeadaf +size 1619 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_rebind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_rebind.hpp new file mode 100644 index 0000000..7c0714c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/container_rebind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f83bbda90c8997cb1733dc098f06b999779a70895575394a3ca9501e6cd61ac +size 10824 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/copy_move_algo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/copy_move_algo.hpp new file mode 100644 index 0000000..9526559 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/copy_move_algo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c98d1df5921f3da2eac74c77efcbcb6d2e012a8a4bc2c3b0779d5360b47c1e3a +size 38467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/destroyers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/destroyers.hpp new file mode 100644 index 0000000..b712fb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/destroyers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b11fae41fd6bb4f7704509d6773d5e0262ac00654564663fbb64a30e096f703 +size 9338 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dispatch_uses_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dispatch_uses_allocator.hpp new file mode 100644 index 0000000..7a44b2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dispatch_uses_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14a9c0c060eee5ee84b2df807466e790196aa27d6703be91cfb28f6c7ca50511 +size 19485 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dlmalloc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dlmalloc.hpp new file mode 100644 index 0000000..80ce5dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/dlmalloc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a808c9bf7add5c4505769d257180cb1b477805f53fa52bf066c6aecbc7569092 +size 3444 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/flat_tree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/flat_tree.hpp new file mode 100644 index 0000000..8bcb47f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/flat_tree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6672e0a6a94771f9a947aee6a326a17d380643b18beae44124195eec8649f26e +size 61462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/function_detector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/function_detector.hpp new file mode 100644 index 0000000..6c64031 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/function_detector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c695281459d1ce9a54e8d6023733dbd1e87564cd18a3f7220452daf91c3017b +size 3558 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_container.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_container.hpp new file mode 100644 index 0000000..d2b1ba1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_container.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a05957392014db9799a58c034d9883d14d553c0fc645ec961beb203b8b88127 +size 2132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_contiguous_container.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_contiguous_container.hpp new file mode 100644 index 0000000..fdd327a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_contiguous_container.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fba30670ef4a0028c5dfc13b7ba4ef96279190bec3df7e7eb2c2e7f904c26d04 +size 1712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_sorted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_sorted.hpp new file mode 100644 index 0000000..f580304 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/is_sorted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78082cc7f00dc3b8ed73d601352b4f456c136532bc19f1e8af4190395a61daea +size 1465 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator.hpp new file mode 100644 index 0000000..280ec30 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae697e6b82b585d1fd6569ca744851e78504073f39ed3e9a952248150b22bde1 +size 2590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator_to_raw_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator_to_raw_pointer.hpp new file mode 100644 index 0000000..a29e8eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterator_to_raw_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:758d0974971f187b130aa6ddea90c633932daa7d0ea3b1065988f37fb89611f7 +size 971 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterators.hpp new file mode 100644 index 0000000..4e741b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/iterators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95c5fb1a97f0e6151c8040a87cbfc4956a47ed9fa846c91fd7040ce898da6bcc +size 26063 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/math_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/math_functions.hpp new file mode 100644 index 0000000..1b87904 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/math_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d71c4698133616580d723198f54e1ba1c28680a557a857f4dc7f6d713c5b97a +size 3872 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/min_max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/min_max.hpp new file mode 100644 index 0000000..9ed8b1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/min_max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46047136eeeba6892fb4d92ae362e2be20bd8b74e08abde37cc1602f5fbd5e6f +size 997 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/minimal_char_traits_header.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/minimal_char_traits_header.hpp new file mode 100644 index 0000000..14e625a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/minimal_char_traits_header.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a34e6549640689dacfd8f82d945bf97eeb29a729a1c309bf6533f85b7efef9db +size 1057 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mpl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mpl.hpp new file mode 100644 index 0000000..87e6e87 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mpl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d5693b121b9473db400f9ff80707bd1a4d9e9ee791ea9b08e8e35d3810e2dc3 +size 3778 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/multiallocation_chain.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/multiallocation_chain.hpp new file mode 100644 index 0000000..50e738f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/multiallocation_chain.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e97a150a94b8527c4a4b03e688f4f98d539c80b3f8eb6190b2d98d7860aeb438 +size 10317 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mutex.hpp new file mode 100644 index 0000000..0b9752b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:679965f26776637b748d894e0dc65b0128b74bb52fdcdb0c61bff10622a2b5d4 +size 8665 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/next_capacity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/next_capacity.hpp new file mode 100644 index 0000000..4c88ed0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/next_capacity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4f30acc17dfe1c3002c330e6e4f3fe95502a170d835d3bde535d24a538581de +size 2140 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_alloc_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_alloc_holder.hpp new file mode 100644 index 0000000..4ee716a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_alloc_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db4ba31d3048d7abf5ee895cc3bb37d9219f36f79b541e217e15c08ca135038e +size 17651 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool.hpp new file mode 100644 index 0000000..ef83160 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e773146c9ecf45ec8c2fb7545ac48614b034e026505d736820acaf4653fc12fa +size 4808 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool_impl.hpp new file mode 100644 index 0000000..b6e3015 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/node_pool_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dda6d7bcd7a4b0a9f57107bd1a6232b64a035597a48c3072837b66a0ebc82ee +size 13171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair.hpp new file mode 100644 index 0000000..e801ac7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07e6392d7dfaea04181f38720abc3615f3d5d6eba8f27cfa0fd7c68dac7ca243 +size 19046 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair_key_mapped_of_value.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair_key_mapped_of_value.hpp new file mode 100644 index 0000000..285f879 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pair_key_mapped_of_value.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b48b142f084d7d3b1693f5d03a6e9bb4857ca178cc697e2b1fe06c38041a3b99 +size 1466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/placement_new.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/placement_new.hpp new file mode 100644 index 0000000..c7dd114 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/placement_new.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:624e2da323c21b01142e31388403c071cf915950d91b59bc82167ab75b017735 +size 914 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common.hpp new file mode 100644 index 0000000..1afcbe3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d440b96963a29471b32fce299ea92240cc5e26bf534739a66bed15f92499d2c9 +size 1606 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common_alloc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common_alloc.hpp new file mode 100644 index 0000000..d21f4e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_common_alloc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ad2d8210ddf586c70070242e02991540b8f3fc1acc25c825714a1b4066daa92 +size 2730 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_resource.hpp new file mode 100644 index 0000000..b0fdbd0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/pool_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f47ef05e5ea1eef48a77c54aac3e52a6eccfbf9ceff3b7569e90db3a13c67d13 +size 7744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/singleton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/singleton.hpp new file mode 100644 index 0000000..981e6ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/singleton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3928673e1293f043baa56dac6c38cf7e0bed2f7df6873483c83824aab97ff1af +size 4465 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/std_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/std_fwd.hpp new file mode 100644 index 0000000..7d309b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/std_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6d541b8c82a29fbcecfeb4b54be889570f2c71f02341bf4b8eb1d64b52f6129 +size 1450 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/thread_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/thread_mutex.hpp new file mode 100644 index 0000000..dfba990 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/thread_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e43787e0469c55afe74bed268a252e36b2cd5989c4921cd079ec5559d1fd3c52 +size 4440 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/transform_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/transform_iterator.hpp new file mode 100644 index 0000000..5ce7fe8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/transform_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c2a3a41bfaa0db0d95cfb75482cdd74784d5dd0beb658b3c84476b525b428cf +size 5103 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/tree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/tree.hpp new file mode 100644 index 0000000..a589a06 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/tree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff65d82e5390e8e3e9f10cbcec5845e8fe4be9d28ac075f1f0ef70a5520e04a4 +size 55865 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/type_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/type_traits.hpp new file mode 100644 index 0000000..864d566 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/type_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cb5197331c9251167b68db1432d84ba52cfae40b2e5b623c0ecac5c42a67bb7 +size 2714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_functors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_functors.hpp new file mode 100644 index 0000000..2ae16f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_functors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ae0b73aa647084c393425f9f6680887e6b646edad42aac89f7b744023fe85e0 +size 1026 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_init.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_init.hpp new file mode 100644 index 0000000..0664574 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/value_init.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69f9bd16f6ec8e0b9709d5cda5c81fc46452603e6c678dd538e6c0fbc43d5baa +size 1135 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/variadic_templates_tools.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/variadic_templates_tools.hpp new file mode 100644 index 0000000..093002c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/variadic_templates_tools.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30189e4df53bc5ff1dcb896b27c1e9afa19494d5097d40dceddfffcb9572c9d8 +size 4959 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/version_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/version_type.hpp new file mode 100644 index 0000000..1a7cca1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/version_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d791962ad165a84a0f118cbcdf1f40ebc707ae50e4e4f03b9dee1f1c7ff74bc +size 2650 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/workaround.hpp new file mode 100644 index 0000000..bc5ad39 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/detail/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c96dc9894a16f739a88345b5264a705c753e5c2e407befb1a2be2e580f0c781a +size 4360 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_map.hpp new file mode 100644 index 0000000..abfd02a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aaf36bca6fdf621d5fea4eb88f85fbbc8d7daae19484e809504e458ccec06c6 +size 135185 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_set.hpp new file mode 100644 index 0000000..6e7db73 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/flat_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7c50d7443926c10f583f8d96af9d70352aa3fb33d676e0061dd1b889b2075a8 +size 84437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/list.hpp new file mode 100644 index 0000000..c33cc5d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2932e201900557ee62074169eb67151b10ec074dcc2573c5ccc7c977e94a6b2b +size 57410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/map.hpp new file mode 100644 index 0000000..675dfc5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:babba37700734440739685c6a5674b25493a228954f0bf9a80851c8b234925d6 +size 103614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/new_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/new_allocator.hpp new file mode 100644 index 0000000..d23c13e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/new_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c51ea38764fdd8e1c9b2e9950b02262489c1c65efeec27c7a7ebeb3054212f2 +size 5779 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_allocator.hpp new file mode 100644 index 0000000..90244c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0559380f399711515d9b6a9562b181c50f13a9c8cb759564eb8df239ab8e1948 +size 12485 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_handle.hpp new file mode 100644 index 0000000..1c6d04c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/node_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b0e33149324e8fd37dcc7dd67e025f56347bfce0adcc710a8873eabf38e55e4 +size 15448 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/options.hpp new file mode 100644 index 0000000..6c923b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:959fe941344d0895d4f971b212de5f7f84350ee97483ddd72d2e5cb4788e3e6d +size 9054 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/deque.hpp new file mode 100644 index 0000000..12eb6b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c84b9bd31b180b49b59797f79cf27ab3e241596316fca3ce4c7fd1be49cead71 +size 1160 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_map.hpp new file mode 100644 index 0000000..9df3443 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e151eb16824c8cb7337b06f8d69e8fd57759913b2e87662b595cbf8fae8ace +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_set.hpp new file mode 100644 index 0000000..ed53096 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/flat_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e5545422237dc7908dabf6d8a6567cc4ee2f6e1c601275fc6d2ae872837f021 +size 1719 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/global_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/global_resource.hpp new file mode 100644 index 0000000..99bc5dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/global_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572cc0465577b9c726cf983bdf1dd50206b8b4a86ddf9837b5725a7cfeb8f723 +size 2733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/list.hpp new file mode 100644 index 0000000..b0a0e7d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b517bf3972e964569806a899f41dca6314049369f4decbd4b1dd700ea3aa3f21 +size 1153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/map.hpp new file mode 100644 index 0000000..9832cf7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:617314d31645256f4274ae8d4f927858e2658faea6c4c86000c80262b4a0b3af +size 1992 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/memory_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/memory_resource.hpp new file mode 100644 index 0000000..a1760fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/memory_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03465f4d5cb6e2f4e078ac5f8454887d1655a1f3d813353d241e23dacf9b578a +size 4047 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/monotonic_buffer_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/monotonic_buffer_resource.hpp new file mode 100644 index 0000000..5dd3ad2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/monotonic_buffer_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:209fdb451925db3c21838ec6f1ead15aca3b675cb6bbe325fb9aacec8d9e25be +size 8172 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/polymorphic_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/polymorphic_allocator.hpp new file mode 100644 index 0000000..ea3329a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/polymorphic_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a68512287b0d237d5f07de05f9dfbe384cfec41e38fa1a41fa0b1717d81ebe +size 6189 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/pool_options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/pool_options.hpp new file mode 100644 index 0000000..22b74c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/pool_options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8525dcffff4f7a89745453eb6252d807b37b21bfb8919e62e5be3263a18ff9c +size 2083 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/resource_adaptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/resource_adaptor.hpp new file mode 100644 index 0000000..f3d6012 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/resource_adaptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e44d4d6acf7ebc7de0d2a4ca1266fedb279dbd6b0aaea5cc34e5fdf533c6b393 +size 7106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/set.hpp new file mode 100644 index 0000000..724c0f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e48645929e7b95e859822f002841acecbbb9613b75524a6f8356d4adc57272fe +size 1820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/slist.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/slist.hpp new file mode 100644 index 0000000..8892420 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/slist.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ed1aeafbb1a55dd1f106877f63dcbc01d404c759b7ec009c21b69dc0bec219 +size 1161 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/small_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/small_vector.hpp new file mode 100644 index 0000000..3a8544a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/small_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a50c69e5a22c8767ccf005e6826249ebdb80b05d20f18ec8e2a6ce9722ebd56e +size 1259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/stable_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/stable_vector.hpp new file mode 100644 index 0000000..e77fa6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/stable_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35304a610c0a425c275923ba8cf2f453590e5f2abc89a909f7dc2807676d011 +size 1232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/string.hpp new file mode 100644 index 0000000..c020bb5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:653a19c4302f866bc3d9f53d203000777b42b633ace6d071253eadad13bb9ce4 +size 1423 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/synchronized_pool_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/synchronized_pool_resource.hpp new file mode 100644 index 0000000..29cc894 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/synchronized_pool_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c3260484b730afcdfb042679570afcb7a0398e2f5647a1d2d6e62ff37bc64d0 +size 6111 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/unsynchronized_pool_resource.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/unsynchronized_pool_resource.hpp new file mode 100644 index 0000000..84c2601 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/unsynchronized_pool_resource.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:188429bdca7e6224e2297d4c322bd8aacefbd78789e64eac5eb642f27894ca42 +size 8568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/vector.hpp new file mode 100644 index 0000000..56e42f0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/pmr/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:331eb4eb5266c349bd8feab278634abf367c6c763ea015ceefd965b951d38516 +size 1169 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator.hpp new file mode 100644 index 0000000..4670bb1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:196dfa0350e2fbf576462f15749c88e973f1aa72c8b3f643982bb0c2fb40b6dd +size 37015 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator_fwd.hpp new file mode 100644 index 0000000..57d6f36 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/scoped_allocator_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f05c469dbff10c113be2986dcb448cd857a8f0bcb6d5b3ae9ccd46a0aa76d242 +size 2164 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/set.hpp new file mode 100644 index 0000000..5b8f20b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42743033f4cd7c3050c60db083fc83cc3769bf736706be7254085cf93c62b048 +size 71786 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/slist.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/slist.hpp new file mode 100644 index 0000000..59a59d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/slist.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7af48ec021a5d2114edf79faa803768c87ef54c31e4cc23639f70cce0a1eaab +size 68707 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/small_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/small_vector.hpp new file mode 100644 index 0000000..480f2c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/small_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:162eb86c7b91da734287e06cfaf27c76616345719ef868ccba0409e9a5bdd49c +size 29769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/stable_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/stable_vector.hpp new file mode 100644 index 0000000..27d7cb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/stable_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a7238bdd6e6bbfd4a94fce4f138e48d0ddef577eaaafc4ff69116a72be324db +size 81300 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/static_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/static_vector.hpp new file mode 100644 index 0000000..b4793f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/static_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572abb6546da20d732a528a81312b8452b9ef0b09986e79981e85460fb1aef07 +size 41483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/string.hpp new file mode 100644 index 0000000..7eb15ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b35c46542bb1d7a36ddac6840dec5f9df242b451719973cca86353c76f3a50ce +size 128107 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/throw_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/throw_exception.hpp new file mode 100644 index 0000000..9488d6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/throw_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:765da2d552f6ee07b49687b523d6f9e0823cbd68cd8b68d84274ca8983fb468e +size 6617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator.hpp new file mode 100644 index 0000000..9e694b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74301a9e236dcced388e0dafae3cd8b73841e1fa8270b1ceb6dbfc2472ebaac4 +size 7514 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator_fwd.hpp new file mode 100644 index 0000000..604ea41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/uses_allocator_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e10f25e2777a0d866180e6a2d97add1f976ddb1e4e2e7c67be04ac34c90fb013 +size 2540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/vector.hpp new file mode 100644 index 0000000..93db681 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a9a7b829da31de7602533d5416e0409f3f256629b4cf8c0b0599cf5ca08d527 +size 138814 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/float_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/float_functions.hpp new file mode 100644 index 0000000..87b20fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/float_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38f198d979b179803048865a8dfb14d02abf327cfdf65e6897af2a04132fffca +size 13683 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/hash_float.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/hash_float.hpp new file mode 100644 index 0000000..4f054e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/hash_float.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2f8606b8f1c8efcb339291f5a52431e861c7d825a08d978f5f623b7aed0aec2 +size 8079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/limits.hpp new file mode 100644 index 0000000..41ad1fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/detail/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b863c3d936d76bfa33c45ba20a781285fbad604c6279ac858946e53e6db737e8 +size 1691 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/extensions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/extensions.hpp new file mode 100644 index 0000000..fa519e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/extensions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2659b8b59d8ceec444374e4c74c5720165354dac66ad34f8f0a39db2ef4a5ba8 +size 11603 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash.hpp new file mode 100644 index 0000000..1cb0bef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f39a6b23d88b5477de2343049368802a042b935f4aac52fe93275c5fb4968d7 +size 22475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash_fwd.hpp new file mode 100644 index 0000000..4af5008 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/container_hash/hash_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93bcc6f92f328d5a55c7a351cacdd0f0a6ccd4eb98ebd9c2d1e1ab3fbac2b36d +size 971 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/addressof.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/addressof.hpp new file mode 100644 index 0000000..f32aaf3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/addressof.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:643323576b2aa61127f9aff6c01542975d997cfac46c2a97e9d3f4954853b83b +size 6149 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/checked_delete.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/checked_delete.hpp new file mode 100644 index 0000000..c1f78aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/checked_delete.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e25321ad09aa981c0b0732158aef56702508d779b4c96a72397d970e6fc1d6f +size 1588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/demangle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/demangle.hpp new file mode 100644 index 0000000..e2a6fd6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/demangle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:310bfea5659a54a79f0421132b5d7fcf5e79f846788775e64beae700c01f5413 +size 3034 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/empty_value.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/empty_value.hpp new file mode 100644 index 0000000..32106b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/empty_value.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:482d4e37868c9b3fa4b95fdef7a0689dab3841d43f3c1cb5b683265d7349d72b +size 2997 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/enable_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/enable_if.hpp new file mode 100644 index 0000000..1d8cc07 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/enable_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4aefa20fb7a5d673ee4023e693ca74738dd84ffd5a4c248ddc06c1df812229e +size 3315 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/exchange.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/exchange.hpp new file mode 100644 index 0000000..77c67e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/exchange.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:010dbad20301588498082a5d26121cf7f53c51f948f92fa9097e17319d520b28 +size 911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/explicit_operator_bool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/explicit_operator_bool.hpp new file mode 100644 index 0000000..7affa3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/explicit_operator_bool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4328e10b18731c5a01feb82e692d6e3d61418d37958cd6ef66c55e1676070c3f +size 5354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ignore_unused.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ignore_unused.hpp new file mode 100644 index 0000000..3680e6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ignore_unused.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:091ae9d42706a5ba1cafd9546f080927a5e6b8dc3dc7c10f26410525708a342e +size 1976 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/is_same.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/is_same.hpp new file mode 100644 index 0000000..225d464 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/is_same.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:686586c5a596d4819c71fc970dfd4400f21cc55909743ca1e0f58d43fc87869b +size 793 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test.hpp new file mode 100644 index 0000000..e26e48e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91e714a355defe1fe684f9b63ed20a5f82ca82a79b045c7e5902275c6839f3ef +size 15544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test_trait.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test_trait.hpp new file mode 100644 index 0000000..e71e5e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/lightweight_test_trait.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:960cce021dc6403dac6c19a8aabe0a62af951a4848d4da0640acffbce929be26 +size 1613 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/no_exceptions_support.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/no_exceptions_support.hpp new file mode 100644 index 0000000..b28de20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/no_exceptions_support.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b612e534d0b9405c3c7d206eb10282557590a8c6e289f508bd7fbff58eb123f +size 1390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/noncopyable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/noncopyable.hpp new file mode 100644 index 0000000..bb55b81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/noncopyable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37177e9d1a542014397f53f01495f00937c502cf5f8454db1d035c4021cab20e +size 1911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/null_deleter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/null_deleter.hpp new file mode 100644 index 0000000..c196216 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/null_deleter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29ba0a5afd6f04d18edbb97c5cc72cb5d8b06f4901862774552a335a9a64c818 +size 1232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/pointer_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/pointer_traits.hpp new file mode 100644 index 0000000..7947845 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/pointer_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b043faee0d6d221cedb9bbd7cf229ba94a205147d4af21877b3b5da715514225 +size 5053 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/quick_exit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/quick_exit.hpp new file mode 100644 index 0000000..acb89a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/quick_exit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0de8f085851cc50221306337dd5b2be3ce20cc5817274bde84c92c40a9a76dd3 +size 1097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ref.hpp new file mode 100644 index 0000000..935919f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/ref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d9a961c758fbd24b0ce724ecc3d520dfd8e35c1eb2877a3e679224b6c503e1 +size 5972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/scoped_enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/scoped_enum.hpp new file mode 100644 index 0000000..8cbb2de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/scoped_enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c923e0d3cfa3d28f7269c636cd7866cb54c6c8787757bbdfb72ac207e49d9b61 +size 7880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/swap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/swap.hpp new file mode 100644 index 0000000..ab3cc35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/swap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e46d8300864b19397cfad6b4b988c840825659130996488102a5a75be2bf4244 +size 2044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/typeinfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/typeinfo.hpp new file mode 100644 index 0000000..a93c897 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/typeinfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b197390b6e5fa52c32ccced47f0132c67d5e6d7b27e4132a770f2f262af37f12 +size 3099 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/underlying_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/underlying_type.hpp new file mode 100644 index 0000000..53874e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/core/underlying_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47a7e72f96110bb7e961f1979ed9032c641fe26553775d7bf60205f89e1f1c25 +size 2205 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/cstdint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/cstdint.hpp new file mode 100644 index 0000000..b89cdab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/cstdint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85d2640e28b15a56508f65b9406e64e7042265cc9a55f20bd341b5d657d60185 +size 18473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/current_function.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/current_function.hpp new file mode 100644 index 0000000..ab20b4c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/current_function.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3289f8a267ae81c452b9dda40391ea0778c027771eaa90b7af2284e8e3a7a17e +size 1701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time.hpp new file mode 100644 index 0000000..78e505a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5973bcb349ac07a42d883201b177bb7da778157f11982d4e706b2b6c29f435b8 +size 540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/adjust_functors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/adjust_functors.hpp new file mode 100644 index 0000000..d53a819 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/adjust_functors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31851a1c7ed0a952cbeec86b45bd8ec0ae37c4b1090b99b001c4fca9ef73ea64 +size 5467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_local_time_adjustor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_local_time_adjustor.hpp new file mode 100644 index 0000000..25838d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_local_time_adjustor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:258565a0a5e4bc5e912eb9e89f26c68973fb152cc08eca965a2aee4bbe7d81cb +size 2631 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_time.hpp new file mode 100644 index 0000000..63c8f5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/c_time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f9615c5283919867707c997c2de710c6f94eb00fb6230a461f85c879bbb5a9a +size 4288 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/compiler_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/compiler_config.hpp new file mode 100644 index 0000000..af490bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/compiler_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21410b1960858ac3c7fbcb7c4ef11583ec6a95a822fe70ff98acb8dd268767db +size 6327 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/constrained_value.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/constrained_value.hpp new file mode 100644 index 0000000..a02e31c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/constrained_value.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46d1a0955478a2790397f603fb72a785692ee8f6e866b4deb0ff8018395a6c3a +size 4025 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date.hpp new file mode 100644 index 0000000..7fb7550 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82c2ad7a595250e588dae3b8edef727684f57a13c3cb6c09318589ca71327d87 +size 6905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_clock_device.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_clock_device.hpp new file mode 100644 index 0000000..f6efa3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_clock_device.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13d55167b7b349282fa5ff8950a8f659a2f124d0dbe457b3984572e824e2cd6a +size 2299 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_defs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_defs.hpp new file mode 100644 index 0000000..c6b1393 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_defs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6e32066c662aaf8c9fe93b908676b2b75c6b4daaed6898be5824739283a5259 +size 701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration.hpp new file mode 100644 index 0000000..a5748e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c20b51691d1e18bee689b456d1454008319f227b9c31d424d602608dc88bacb9 +size 4510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration_types.hpp new file mode 100644 index 0000000..d581089 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_duration_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abc44f224030c5e2028ea034e66290f4250e6821d63a86f263ab755a950a0bc8 +size 8243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_facet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_facet.hpp new file mode 100644 index 0000000..bd75eca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_facet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae3b4688b9285dd19365d7273705978ebaf59cad555fc25b38af111c79b80dbb +size 29307 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_format_simple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_format_simple.hpp new file mode 100644 index 0000000..9b351d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_format_simple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54f2045755444bf66d9b790724ac3bc1bc4eeb3de842695ad95013283cb1c4b0 +size 3128 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting.hpp new file mode 100644 index 0000000..df61a7a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90e2399a826f825bcfb0645c551cd3daff201d0ccf63df3311f03712344b3c42 +size 4208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_limited.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_limited.hpp new file mode 100644 index 0000000..4019228 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_limited.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8456598970a28a1e9c665f778052a76493e46e1a5384393afb788bbeb9535cd0 +size 3461 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_locales.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_locales.hpp new file mode 100644 index 0000000..6d97fe7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_formatting_locales.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64a572ef7978032622d869d6055016061a88b9379a37aaf5197d403f0cbd908e +size 6748 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_formatter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_formatter.hpp new file mode 100644 index 0000000..073c4da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_formatter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58ee6e9b80bf6f6d1f86e3e07061c1d363af4d7e9e3e39e47889338d10dfd4b9 +size 11715 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_parser.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_parser.hpp new file mode 100644 index 0000000..9a0f4f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generator_parser.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ed55fd956de6e6dd362bee41ce5b21fc3e8326631ae017287aaec6f62c738e2 +size 13064 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generators.hpp new file mode 100644 index 0000000..241b548 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_generators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a054891f0881965708c9f3f565d476ce2cf834db5a0854eb9ac5031f5fae4183 +size 16156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_iterator.hpp new file mode 100644 index 0000000..fdac4ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e169e910a7d5f2c5ad23a85b04db17136a701071ed56dbbff9544b0c3275492 +size 3305 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_names_put.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_names_put.hpp new file mode 100644 index 0000000..d6e2796 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_names_put.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7bae080a8e0db02188cc42c782e264324d41271341257449b87d7cb3c93a0bb +size 10754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_parsing.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_parsing.hpp new file mode 100644 index 0000000..abd1710 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/date_parsing.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2004b64c2d2b0c6f1f9d3aa80d1d2c06d72bd8e8650358219337e06e1df5b27b +size 11784 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_rules.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_rules.hpp new file mode 100644 index 0000000..99daf9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_rules.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:320526d0e30b6a050a3bfcac54cabb4505d4507b2e0e6a2057cd14aeb2f64be0 +size 15505 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_transition_generators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_transition_generators.hpp new file mode 100644 index 0000000..ffa6d2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/dst_transition_generators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0450f3a83c3e83755a6e0a9d34ddf8006d7f50283e3ca95af3d35690f0a4311f +size 2275 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/filetime_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/filetime_functions.hpp new file mode 100644 index 0000000..3a8d3c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/filetime_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38285d82bd47b2e017dad7556770f61e261fd3f78fbd80c292d9086007a873aa +size 3163 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/format_date_parser.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/format_date_parser.hpp new file mode 100644 index 0000000..9f8d222 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/format_date_parser.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb9de62184af7f47233f6b672e69c910808fa622c24b5c33402419be73668d5 +size 24153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/conversion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/conversion.hpp new file mode 100644 index 0000000..c494d58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/conversion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e969d78894c065b76a3a7b49ddde85a8d8cdf7c42048bddcbe957e7804e99008 +size 2067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters.hpp new file mode 100644 index 0000000..a84066c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7329f13482203c62780e0ab9a0bd8fe9cea69361ef95e4490f076122d3611ce +size 5627 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters_limited.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters_limited.hpp new file mode 100644 index 0000000..2d2054a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/formatters_limited.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d62a9048c3d6e16329a2e71734d15b15def2c0e145e85eaea5f0f919c983960 +size 2746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_calendar.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_calendar.hpp new file mode 100644 index 0000000..e402b0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_calendar.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9506577b519976af0a3fff0e8779eb725625ff50bb81c7fc25094992c96da47 +size 1588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_date.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_date.hpp new file mode 100644 index 0000000..ab4ce89 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_date.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:532297dd97a6ade09da0dbf75bacd44130f5e2f591b3f2d11bc2dc67d9e372f1 +size 4517 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day.hpp new file mode 100644 index 0000000..ec04646 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25e987120333af63aeac2bba07ee56b54efbb199c0c0d8cea3095b5d9e2d088b +size 1832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day_of_year.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day_of_year.hpp new file mode 100644 index 0000000..93fb651 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_day_of_year.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:893c436c51fa71996b6654deca0761ba6e8df65b85d887bae7c7e0c2337b45f8 +size 1094 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration.hpp new file mode 100644 index 0000000..adfd5d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6abcabbcc34a24ac06b809b32ee2c0f4fe73f93dca0a0bd86f826267a4ec36fd +size 3919 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration_types.hpp new file mode 100644 index 0000000..701abaa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_duration_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e0c78a508ce20d5da5ddd0b4ec7f7bb13777e24f7efd5736116dbad0eccfeaf +size 1413 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_facet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_facet.hpp new file mode 100644 index 0000000..a410474 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_facet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ff825c8a9a1ca337a3402822ab400addf2cabb02fe441255dbc4fa3c5abbe5f +size 13225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_month.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_month.hpp new file mode 100644 index 0000000..ec40b75 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_month.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b506c3ded4675d1b207d9d8acaf4abd934b03491238a90a77ca53f0a4ef4ee49 +size 3449 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_serialize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_serialize.hpp new file mode 100644 index 0000000..238d8b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_serialize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b600c2c77a6aaee3047bcf7f2ccb93a8148aa2dc5a7446014123d6339c03f8a +size 19711 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_weekday.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_weekday.hpp new file mode 100644 index 0000000..1adcabd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_weekday.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9dc951357533666ada1cf44b77c3b9b1bd404bcac33629fdeb45a0e9c5b950dd +size 1892 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_year.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_year.hpp new file mode 100644 index 0000000..f858da0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_year.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3682daa0f4ec1ebdbcfd76e1b97beca5a262ba67c793534e10cb01416118ed79 +size 1630 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_ymd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_ymd.hpp new file mode 100644 index 0000000..f6e02c8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/greg_ymd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1771bb4bf7fa2c9429f27d630d24addccd50218bc70423285b994a98dc18bc5a +size 857 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian.hpp new file mode 100644 index 0000000..3f03b97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1214658bea4d9808808d3e225b943dcd43c989d8cecf403e5defdc2acd9d95d +size 1163 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_io.hpp new file mode 100644 index 0000000..1657dfa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f170b718c37f77803c3af54b2a0eaee0f4ab60d89ffd76fd41eff673d8b23116 +size 28585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_types.hpp new file mode 100644 index 0000000..8223d7a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/gregorian_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bcef06b45abf99432752a3339a70377214798d7af09333af2ba5a8cbb663d2a +size 3631 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/parsers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/parsers.hpp new file mode 100644 index 0000000..9bd0db2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian/parsers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c4e3d8b0f5b28db420256b3f3bb3b034493c1fb3ef43a6054d4893db141c54b +size 3594 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.hpp new file mode 100644 index 0000000..003805b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f88d8dc7997345799423b4439f59d1d5299ce380cd3d7b7fac63921ff2c32a +size 2544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.ipp new file mode 100644 index 0000000..9ff1a31 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/gregorian_calendar.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd4c7b335ba02e048c4cabcaeb8254c5c78a4c8ca95fd52e648719f4f17f42ea +size 7969 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/int_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/int_adapter.hpp new file mode 100644 index 0000000..3b8cf0c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/int_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15e40654ba5e1d3dfad18c560f1546888e3d2d51217ad8c8e7b5111c701364c5 +size 13552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/iso_format.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/iso_format.hpp new file mode 100644 index 0000000..7edb88c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/iso_format.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:575e7a4ff7917693210d013dc6f4a7b5f9f6ed4e6102a72dfbc92e0d58c3afa9 +size 5640 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/conversion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/conversion.hpp new file mode 100644 index 0000000..c1f964f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/conversion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0c44c46c8630f5687dc17e7c7f1350fd0a5e85da25904523657d9f10973e771 +size 863 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/custom_time_zone.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/custom_time_zone.hpp new file mode 100644 index 0000000..7d378e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/custom_time_zone.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c43a05cdb6ec0b18f6efbebca58dafa66506a8d231360cf18010b40d074f443a +size 6279 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/date_duration_operators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/date_duration_operators.hpp new file mode 100644 index 0000000..93800f0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/date_duration_operators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d881a3010dfe4087c691cc8fdaa2f4052a5896bb5cedda9fcd4c491274ce554 +size 4282 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/dst_transition_day_rules.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/dst_transition_day_rules.hpp new file mode 100644 index 0000000..06e3aa9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/dst_transition_day_rules.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:08089af0dad8c7212646d394cf0d1a357c02ce15e4502e60630aa783ebcd55b4 +size 2638 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_date_time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_date_time.hpp new file mode 100644 index 0000000..6a8f65f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_date_time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51c0fc0edf4ba88412c18fdcbb6272a7aa516428407a9a19ff729aeece5a0243 +size 19914 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time.hpp new file mode 100644 index 0000000..a94fe4d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5da700d67733e74ed6c05cb751a5c5680b8690e333f95ea97aa4e0d76272f1e1 +size 911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_io.hpp new file mode 100644 index 0000000..16119dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ea3fecf2bd8c2ab87afead6c70687d818903f0608f7a8f239aef8774459b31 +size 7001 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_types.hpp new file mode 100644 index 0000000..1a8ad00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/local_time_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:846162ee7403dbfbb7dee722c27f52c6280d1389178ff12da3a8d429ee83632e +size 1957 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/posix_time_zone.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/posix_time_zone.hpp new file mode 100644 index 0000000..7bfb778 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/posix_time_zone.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f5c65e79e32f09e8a07687ab839b80d1b88d4d04969f05b90b0f6964c76905c +size 18179 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/tz_database.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/tz_database.hpp new file mode 100644 index 0000000..f67ea8e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time/tz_database.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cf5cfed850b7ed153c8338a0173ff28e2b3108681e3cdd88b88a426943471f8 +size 1044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time_adjustor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time_adjustor.hpp new file mode 100644 index 0000000..26f1efa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_time_adjustor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cc7101014480462359bf1babf29f3cd5835e0b055828e914408acc40b0cbb49 +size 8578 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_timezone_defs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_timezone_defs.hpp new file mode 100644 index 0000000..d55f781 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/local_timezone_defs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a897f6e00db5b61e55d317aca3f68ad4cbaba1fc6d06672cc18ccb65d798310 +size 7618 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/locale_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/locale_config.hpp new file mode 100644 index 0000000..cf49c1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/locale_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaf3df750edb54d2b517d0b6c8056533401d30823d6ccad734cd3e008dcd0a1b +size 1204 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/microsec_time_clock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/microsec_time_clock.hpp new file mode 100644 index 0000000..0a060c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/microsec_time_clock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51afe4a30061be7d51053d2217f06e03a3d0475d83b724a39fddd7f029a1db74 +size 6257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/parse_format_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/parse_format_base.hpp new file mode 100644 index 0000000..c066f16 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/parse_format_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b34b51527656fb1347b1d97130808daa118d26ce87591ed0757c2802ff7437b +size 961 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period.hpp new file mode 100644 index 0000000..627e41f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbde2892f2c09817ca32d9852b64e34e694b0bbb70936ea4a62a902e8dca764a +size 11069 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_formatter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_formatter.hpp new file mode 100644 index 0000000..be86308 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_formatter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a086f31bf78a1dca3fd11833c7b4ba464b8b8e7fabf125eca55a2b7ca199aa4e +size 7216 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_parser.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_parser.hpp new file mode 100644 index 0000000..4fdfba4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/period_parser.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75a0425bef0c9bfdb20fcb864a8d5204a9cbc2576150ff30a94c2180df23b40e +size 8022 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/conversion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/conversion.hpp new file mode 100644 index 0000000..b21a25c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/conversion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19ecc8e1ddd8d358477de2f22fe8094f8f46e446dd4389de01d66063721a4987 +size 3391 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/date_duration_operators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/date_duration_operators.hpp new file mode 100644 index 0000000..d0618bc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/date_duration_operators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26b0a57f64b28a27648622d046bf8ab7961467449cbaf3ff6a42fef5a9aeef7a +size 3730 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time.hpp new file mode 100644 index 0000000..22f5c8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34137e920ef44d6f7ebe62b51c74ebf37fb4a3f469d25d36683f142ff668d4f8 +size 1250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_config.hpp new file mode 100644 index 0000000..c3ce870 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72adeb89f412867c33b9e5da016a80d4830c5a6b2cff89f89a64f5332feecc9b +size 5948 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_duration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_duration.hpp new file mode 100644 index 0000000..85660b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_duration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:351fc7e675046f77b45446559b3722ac17ad709b83e4ae3aaa8cf4b819ed513c +size 2769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_io.hpp new file mode 100644 index 0000000..f6b6c4b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ee9170b6bede5822cefe353210cffdecfb58c94c0056026ddfcfaa469cad385 +size 9233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_legacy_io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_legacy_io.hpp new file mode 100644 index 0000000..bafc3e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_legacy_io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32a60630628875121fefbf735484d3f8c312a7e4253b730d56f4f5cd3c84b29b +size 4640 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_system.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_system.hpp new file mode 100644 index 0000000..e816ecb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_system.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef0a43e1a0e93e2b709420ffd5048fe9cb24c36f42c36d0b7ddfee724ca1fc01 +size 1154 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_types.hpp new file mode 100644 index 0000000..06da376 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/posix_time_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e720aa5af0a1ced8a64579a3a5ff4cfb90838ae6413d543dca74f59ebb7c2fb4 +size 1798 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/ptime.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/ptime.hpp new file mode 100644 index 0000000..e4f1a3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/ptime.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5ea6995328fd8c26d27f6ab013e09769cdf440e6cd599b3f5689a275889e18c +size 2143 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters.hpp new file mode 100644 index 0000000..0ad94a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d34478c620f0651ad11bd2b9900f401e2ffc8b18e42cb9e7278a034b054001d3 +size 9300 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters_limited.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters_limited.hpp new file mode 100644 index 0000000..3103894 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_formatters_limited.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61329e533e54183f15753ac72ca491ab553a4597f5c817705d397d0487ae2f31 +size 5988 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_parsers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_parsers.hpp new file mode 100644 index 0000000..23f4b8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_parsers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01dd2569f9e36ddfd10c2dd350c5dff7c4516bda57c1da8044d7ec42aa9174bc +size 1384 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_period.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_period.hpp new file mode 100644 index 0000000..44750a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_period.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf187c92b23661debf994b73e9ad0dc47c414284ad4ef6e4547051430c8b156 +size 690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_serialize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_serialize.hpp new file mode 100644 index 0000000..c4555f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/posix_time/time_serialize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e9f2f28910e0e312629f8ea924fe4431a3da6b5e3b3d00ae32661aba91bc677 +size 9067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_defs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_defs.hpp new file mode 100644 index 0000000..5b1e1dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_defs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e60e7b693dc42d405e5287ad2007c0451963c798ae2dd92f80fcb78d5d8f17c +size 633 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_formatter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_formatter.hpp new file mode 100644 index 0000000..a294a07 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_formatter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eab0cca5dee40bb0c3977e4688bcf9a66397219923f053a8c27dc8da43df803d +size 3637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_parser.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_parser.hpp new file mode 100644 index 0000000..139e2a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/special_values_parser.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feb4a8ba30926d446dd205e9925155d5d812b99ac51f651c6f259bae635d9ce2 +size 6296 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_convert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_convert.hpp new file mode 100644 index 0000000..531b277 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_convert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1b7a9cd7756d05168150b740b27dddfb152badfff4fd70fdb2c3b787fef7296 +size 1002 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_parse_tree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_parse_tree.hpp new file mode 100644 index 0000000..0291921 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/string_parse_tree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:294a84fbf3dd9bc5eefcb372d740e0adb24d173c7bde8467c70ebb19ba3d44ec +size 8397 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/strings_from_facet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/strings_from_facet.hpp new file mode 100644 index 0000000..27c222c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/strings_from_facet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d79aef90303f28a21831db5330636b6c2e606dd9ef0e6bd780dfb89730efd0a +size 4456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time.hpp new file mode 100644 index 0000000..e0040f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c32f5de81e684f650161a47505b374816fc2c4ce8e6a8218478996fe5fbd2423 +size 6261 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_clock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_clock.hpp new file mode 100644 index 0000000..7639508 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_clock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05d28d4731ef2087af7ea08cc7d71cc99934a0cd6ef37792d5ff09f850118caf +size 2245 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_defs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_defs.hpp new file mode 100644 index 0000000..b15ef25 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_defs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7b7ee0bd6c015d4f62b8a75891299ce9bc2b364474e98e8cb26ab982e3ed414 +size 942 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_duration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_duration.hpp new file mode 100644 index 0000000..240e0dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_duration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f96a30c485a756a5ed30b77e06e3fc568bd81c034f513431e38d98015d776578 +size 9619 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_facet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_facet.hpp new file mode 100644 index 0000000..bc20278 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_facet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:598804789646de8c3114e6c11b6b5e3dd6b99f7112fb80360729df1729b260f3 +size 58976 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_formatting_streams.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_formatting_streams.hpp new file mode 100644 index 0000000..8665d5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_formatting_streams.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b3020371d76c64e262d150b21ee3d94dd3d17f8285eeef8f4329a1e726cb8b6 +size 3752 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_iterator.hpp new file mode 100644 index 0000000..b4930d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1fd1676da75940dcb1e499b035d6b31ba3bb3cd149d17854eba7769b25761dc +size 1438 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_parsing.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_parsing.hpp new file mode 100644 index 0000000..3c17fde --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_parsing.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:412e34e03a58eaf5fe6b5f85a9e8f3cd06fd46f7102d5755104731a4171db456 +size 11854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_resolution_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_resolution_traits.hpp new file mode 100644 index 0000000..1a522fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_resolution_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18b4534e09a33ba616d52ccf378f01cf4d47d14356ffd15a334d5af08a676c43 +size 6364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_counted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_counted.hpp new file mode 100644 index 0000000..3ee433e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_counted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:695cef3b0f1e2ac39e043cc5a9be3d05d5ed6606ad94e812a757639e926a5c0f +size 8441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_split.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_split.hpp new file mode 100644 index 0000000..4daeadc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_system_split.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:553897efc9659072d0cb74e6a9146dcc56bad4581adf85f60c8b7d541fdb79d7 +size 7795 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_base.hpp new file mode 100644 index 0000000..0372fe4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d43c4bd562b051592f1abdc3037d7a6b58a87abe9a5cc3e8038e4e8bdee5cdb +size 3710 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_names.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_names.hpp new file mode 100644 index 0000000..37a2ff5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/time_zone_names.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d756a1c7241212d3676b26105e4f34e0e289783ce386a0b47a173f39aa3cd4a +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/tz_db_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/tz_db_base.hpp new file mode 100644 index 0000000..97df1a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/tz_db_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cee6199b6b5c6fb3b7961f7766738e6446a7aba368a362007993d333ba891e3 +size 15950 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/wrapping_int.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/wrapping_int.hpp new file mode 100644 index 0000000..d859309 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/wrapping_int.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e0dd673bf4a70bda3f1c16ce830e393b39af0036703e49f555d0b415ab46346 +size 5508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/year_month_day.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/year_month_day.hpp new file mode 100644 index 0000000..387032e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/date_time/year_month_day.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3540087870f6c8dc9ab9cdd48b5a4d7254a992c3a3762fc5d0f1c478837461 +size 1333 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/algorithm.hpp new file mode 100644 index 0000000..16f474d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:976ed0f5ee1552f8d37eff0b650e271211b35081ccff9a7ab39156cb7fa3d01a +size 2960 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/allocator_utilities.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/allocator_utilities.hpp new file mode 100644 index 0000000..428752f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/allocator_utilities.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d53dbbbeb9fdf88fa3b132b017ae3cd31836d623013fb4a1b879272819d83e +size 4792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/atomic_count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/atomic_count.hpp new file mode 100644 index 0000000..ca90f54 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/atomic_count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21e4599d95ecdb73147ed2a580e950de649119b6342ae8137733845eb4df7aae +size 618 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/basic_pointerbuf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/basic_pointerbuf.hpp new file mode 100644 index 0000000..3a39ed6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/basic_pointerbuf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c7feca71b630a9c768f178507630fe7ea539788270963a2365ccac4c28fb37f +size 4425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/binary_search.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/binary_search.hpp new file mode 100644 index 0000000..32963ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/binary_search.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d955f53e843e5e5b332083d73f6bd8b8471be79d19454a2354e8e7e4a25676d9 +size 6358 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/bitmask.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/bitmask.hpp new file mode 100644 index 0000000..28f057c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/bitmask.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd17654c91580081408d358c0c83a2d4a6d34362b009cd620aecb1c603e05d6e +size 3033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/call_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/call_traits.hpp new file mode 100644 index 0000000..c6dd2a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/call_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60399c9aee599b10f6a1e93acd9ceaf061ff6abb7770f18f2e32b2d0d5889bd8 +size 4322 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/catch_exceptions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/catch_exceptions.hpp new file mode 100644 index 0000000..72a982d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/catch_exceptions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53d42570100e9b74caeb9d380786176310eaf6231e6e0deddb70056e840c4e82 +size 5644 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/compressed_pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/compressed_pair.hpp new file mode 100644 index 0000000..3c7ea7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/compressed_pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4ee16a2881189010ac17202551cb3e3dda582449aa7a9295e8a44f4cc77c300 +size 17002 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/container_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/container_fwd.hpp new file mode 100644 index 0000000..ea0371c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/container_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5865c63f8a83daad0747aed35dc5b036f200d2844c9cccd53d805b17a83f5ada +size 5160 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/endian.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/endian.hpp new file mode 100644 index 0000000..5dad19b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/endian.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86701f68f842417a8e887ef6868b09eaa68e9519ed2ecd0f3ccb558743cbe5da +size 364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/fenv.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/fenv.hpp new file mode 100644 index 0000000..0349579 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/fenv.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:433a938c63e22681fe03b2220ba342289c36b89926d5836511595b27cbe4a2dd +size 3206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/has_default_constructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/has_default_constructor.hpp new file mode 100644 index 0000000..653ff3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/has_default_constructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:645f2a64387bfde7e31b97a09df13a6566752d3d28bb5beb7a82e2cda55fe7b1 +size 935 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/identifier.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/identifier.hpp new file mode 100644 index 0000000..960b93c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/identifier.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28318c5a65122b31542612eef2f11e0b6b6e68d26d3954c39aea41e6e85cfaab +size 3178 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/indirect_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/indirect_traits.hpp new file mode 100644 index 0000000..d98c4e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/indirect_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10629648828b55d799bb03bca2bcfa203b76993dde571c43bbf77739f96299f2 +size 4423 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/interlocked.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/interlocked.hpp new file mode 100644 index 0000000..6d42050 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/interlocked.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa500324f550dabf1beb9ba6a83269778d0e50fcb076e3130bded65ee999ec1 +size 8907 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_incrementable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_incrementable.hpp new file mode 100644 index 0000000..6f1a109 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_incrementable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44ad465d065f7b81faae5a13d133d1739fdec6ef3fffebfe29cee15fda7ad51c +size 3071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_sorted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_sorted.hpp new file mode 100644 index 0000000..7e44754 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_sorted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02cdbe1a5149f8c45bdf989f7e0273dcc858e53b001961eb4cdafe3fba282618 +size 1464 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_xxx.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_xxx.hpp new file mode 100644 index 0000000..cba5103 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/is_xxx.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b234852437ea2dae5472f1985d58485faeade9b310052024ac430b954f40755 +size 1250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/iterator.hpp new file mode 100644 index 0000000..20881b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b9993e0c49c30c8bfe4d09b1ad3a045943013d2f2e688fdf21e9fe6b4027543 +size 1068 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lcast_precision.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lcast_precision.hpp new file mode 100644 index 0000000..8d9214f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lcast_precision.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8407e48a437166db6b905fa78d1317af9c5589012f7cc0df9c26384b64e38fa +size 6089 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_main.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_main.hpp new file mode 100644 index 0000000..9ee5320 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_main.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7c84f48874707850915234489fcb4fd947ad679c02dfa891b1c6073f025c25 +size 1226 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_mutex.hpp new file mode 100644 index 0000000..f80005c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0889c1d4383014f4c1d4b399b10aa48d9947fc50608dacba28f751c56667cc67 +size 630 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test.hpp new file mode 100644 index 0000000..0e3beeb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e20f75a9ec1966e0282e51641d064d0351b0da81d4328e08e238cb5126f3a823 +size 436 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test_report.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test_report.hpp new file mode 100644 index 0000000..eaa500c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_test_report.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cacffcc87fd88da49b8cd0ee2815ffca5ff238137cfd893e7c0da3451e86640 +size 2223 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_thread.hpp new file mode 100644 index 0000000..892a3b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/lightweight_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd2a9165de74bc01431fcc584dc5595e03ac2d1c941d0a9e37d7f35ba3e756e +size 3412 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/named_template_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/named_template_params.hpp new file mode 100644 index 0000000..c3adfe8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/named_template_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42a3f77ad31176a3e9433169d5a30d40c9f02eab2911cdf522434834cc6f18f7 +size 6090 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/no_exceptions_support.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/no_exceptions_support.hpp new file mode 100644 index 0000000..f50a232 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/no_exceptions_support.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:923b11128f5132839e7a320c9a56c9a5985885ec2682dd51a26c00ded2396f2c +size 456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/numeric_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/numeric_traits.hpp new file mode 100644 index 0000000..a4a61f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/numeric_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b43af6d1f7e9f237f4a21bd07a045861a2be0679319492745b888f8490685a5d +size 5473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/ob_compressed_pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/ob_compressed_pair.hpp new file mode 100644 index 0000000..dca5e30 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/ob_compressed_pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baaab0b90d8aa661ac54811a284c18392e1b57dd84653d9a77266140692c0df2 +size 16399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/quick_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/quick_allocator.hpp new file mode 100644 index 0000000..c88605e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/quick_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55e168afa917d086929d2a9b975fa28f6da034b7d89db7bb3bfa8ad83286e7ac +size 606 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/reference_content.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/reference_content.hpp new file mode 100644 index 0000000..695178d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/reference_content.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:729862548f026865e374c9df1eaeb7524c992d68baf5d45af7bf1f6b54b4ec1c +size 2443 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/scoped_enum_emulation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/scoped_enum_emulation.hpp new file mode 100644 index 0000000..3a5d29e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/scoped_enum_emulation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:738641b0d11878f83645d85b5a72b3357de5b9040c664138cedafb116ebf9fcc +size 437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/select_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/select_type.hpp new file mode 100644 index 0000000..a5b4dfe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/select_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:983d9862b3b45e5a213140521c24a33c928fc4cbc297013fb7130b78b7a0aa32 +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/sp_typeinfo.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/sp_typeinfo.hpp new file mode 100644 index 0000000..2ead394 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/sp_typeinfo.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ed76e073cd899a2375dbd270994e2ad07ed32da690e12198cf4e327e623cb6 +size 755 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/templated_streams.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/templated_streams.hpp new file mode 100644 index 0000000..d4b2817 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/templated_streams.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:515459aa9b62b0cd8fee8fa901df26cb423166328b0217a1166c6476ee7da575 +size 2242 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.hpp new file mode 100644 index 0000000..9b1e88e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da81df69b429bd1d31f7c7cd449570555a11b7cec011f66876e03201abe59866 +size 7726 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.ipp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.ipp new file mode 100644 index 0000000..6dcb5f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/utf8_codecvt_facet.ipp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b2fc6b7ba19a83a6de665fb4475869ec3372d044ce8a1cee0cdb906646353af +size 9560 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/access_rights.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/access_rights.hpp new file mode 100644 index 0000000..7c22534 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/access_rights.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbc4465aa9da6fde41aa58231d317fc5258bb6a5ab94ccad73b396794b697b66 +size 525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/apc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/apc.hpp new file mode 100644 index 0000000..6248cb5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/apc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f2124b4787cf692e3fc121066a1da2dede0203a5b29813627f2859e59373853 +size 475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/basic_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/basic_types.hpp new file mode 100644 index 0000000..b018826 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/basic_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7ebe425dbdfe971df31f0e01f800cd2fc4dbc16f3ce6ca128da527172b80ce8 +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/bcrypt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/bcrypt.hpp new file mode 100644 index 0000000..702f77e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/bcrypt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a74668a720375819c2b97a3f8287946e11d08d8fe6269ea7e249f14754619f61 +size 493 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/character_code_conversion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/character_code_conversion.hpp new file mode 100644 index 0000000..839cba7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/character_code_conversion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc53578e9cecfb3ba65ccec4f68d187f996ec5c1295bec319ed4791543b4455a +size 585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/condition_variable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/condition_variable.hpp new file mode 100644 index 0000000..8c514a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/condition_variable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24bf06cf7fe55796cfa022d4af61411eb73d5a7d3298e5d264fc081253210a25 +size 654 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/config.hpp new file mode 100644 index 0000000..5a8efa1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:315556578f72bd289cb9b5f06c586c663870d0096a2190249d0cd1faaf873ec7 +size 457 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/critical_section.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/critical_section.hpp new file mode 100644 index 0000000..75aac4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/critical_section.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8d3c8eb8527cbb3ed6d23ae046d799b84932159794eb7b8a07e8dee421da1fe +size 540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/crypt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/crypt.hpp new file mode 100644 index 0000000..6dbf287 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/crypt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f3a5a70a91bde2ec5eafecebbb1c26367f90646f9187d977de4e75a5c2f1696 +size 485 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dbghelp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dbghelp.hpp new file mode 100644 index 0000000..d40ebee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dbghelp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d88a4fb3e5fb5de41b347fd1782b53211490fa911a71865ab76a65f68ee5293d +size 495 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/debugapi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/debugapi.hpp new file mode 100644 index 0000000..aef48f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/debugapi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed667194b5257c31fb5699c5865b11ea7a33e24745c7a9d4fa248f7d504a72e6 +size 500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/detail/deprecated_namespace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/detail/deprecated_namespace.hpp new file mode 100644 index 0000000..366c8d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/detail/deprecated_namespace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40410f67af3513578474fa04ada5c30ea62b384ff06b3b9a53cf6dd7a9be6f36 +size 714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/directory_management.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/directory_management.hpp new file mode 100644 index 0000000..a058dbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/directory_management.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f676b76a78108f3e09c044fc46a3e6ee19f8bd6a0601eb14c921955051a87e3 +size 560 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dll.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dll.hpp new file mode 100644 index 0000000..4271f01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/dll.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb3a0729ca76dad40f984f49f12e0cb312b785950d0c19c8c7cad90ba5f6198d +size 475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/environment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/environment.hpp new file mode 100644 index 0000000..c60f420 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/environment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c41b70241b1c26ffc48e37c33f1e144b95529a16e87093b6a4df185fec3af639 +size 518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_codes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_codes.hpp new file mode 100644 index 0000000..e285150 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_codes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5cc6a1db79b1e94693c5a64c0675a6cd88980a340a1ee449085f4c5690726fb +size 518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_handling.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_handling.hpp new file mode 100644 index 0000000..1fa043c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/error_handling.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7533316843f8f3222d809e84ac2fc40959dcf16508e308cfa4e0f7a985d0cb5 +size 530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/event.hpp new file mode 100644 index 0000000..11d081a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41b84e5e6061b0cca925e13d35f127657a23173a3bcfa277051689692e003359 +size 488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_management.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_management.hpp new file mode 100644 index 0000000..9a54fed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_management.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:690403490a9b17310c70e03a01804ed99bd5191bebaca4d0fd76b051ab954b6b +size 535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_mapping.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_mapping.hpp new file mode 100644 index 0000000..cbb670e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/file_mapping.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:118250fb16e8e915238db1bf0d69e3b0447987ab93920b5fdda26e064af501a8 +size 520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process.hpp new file mode 100644 index 0000000..60d51e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f8ee35f983cffbdcb00f6b6b3eba7c6e9498f679bb6584ba945f7884b22b0a4 +size 555 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process_id.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process_id.hpp new file mode 100644 index 0000000..fe4f0e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_process_id.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aef3b74ca147a518db6574d2b841f02c7a4766c084be587f9f3fe5752983e542 +size 570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread.hpp new file mode 100644 index 0000000..40bb129 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1371550116848274c95d826a95bccd7e29330ff8cdd88d71975ee11c25db64f0 +size 550 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread_id.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread_id.hpp new file mode 100644 index 0000000..2ed3187 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_current_thread_id.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2e933198420e32b4447b9410c4a9a3f3745957848e833abbb9286e4bc8d012b +size 565 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_last_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_last_error.hpp new file mode 100644 index 0000000..c29a920 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_last_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03981df2b80a2dab93d31fe206536ca124140916a89e9f04f985571bf36f6d4e +size 530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_process_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_process_times.hpp new file mode 100644 index 0000000..3e9268d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_process_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3c79b723ef4acd812760158dd075a6a916c92948b63d967e229566506c2a468 +size 545 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_system_directory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_system_directory.hpp new file mode 100644 index 0000000..1f652e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_system_directory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:998fc56deb9a4abd6924f55ab5399b05bd23fa6421b06f595e919922b7c0dbd0 +size 563 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_thread_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_thread_times.hpp new file mode 100644 index 0000000..75a1fcc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/get_thread_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96e5a7d6be15e188f089ae2583e41c80ff0e397a56670b35884ff47d80c3f88f +size 540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handle_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handle_info.hpp new file mode 100644 index 0000000..25bd997 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handle_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a8414e4152c87838c2ed151206d9535038268e184799b745cae6abb6626e693 +size 497 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handles.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handles.hpp new file mode 100644 index 0000000..f0f5f39 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/handles.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fba63abac1f9cadc62bdc013d0d765ebf19414e51196e3fbfef3ae5a37887a18 +size 495 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/heap_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/heap_memory.hpp new file mode 100644 index 0000000..5493b5c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/heap_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab0059ad4d9c121fc520a5b0bd07d3ca9b96d5d790f862e506c05c4b6dcb4d8d +size 518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/init_once.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/init_once.hpp new file mode 100644 index 0000000..5e205dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/init_once.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:102d3aa7c752d66654353f5ad7185a5ef60e6b88f4a4f3c03a70f01991df94eb +size 591 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/jobs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/jobs.hpp new file mode 100644 index 0000000..49a357f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/jobs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af3b9837acfe70f21d40c8ea01382f96478aa53c7c195dcd5f6e4b588696c4da +size 483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/limits.hpp new file mode 100644 index 0000000..ae21832 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:255ec01d72f6003225b3d9cd4ceb5422a97ad9a7a4e820d3b2b3bafb3c297917 +size 493 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/local_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/local_memory.hpp new file mode 100644 index 0000000..ff37363 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/local_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1de63cb324e539f1e6ba27b04f2c1a27317f7084e5d081df472f865a8e6cb3b3 +size 520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/memory.hpp new file mode 100644 index 0000000..a820596 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14064e4b9161f43d34afe30a7c8073fba572d36bdd5a97d98fbcd88afb16e48e +size 490 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/mutex.hpp new file mode 100644 index 0000000..bc63076 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81e7d5f5da2ddef51df2413b1804695b02277896d158305442d61ca6c376e35f +size 488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/overlapped.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/overlapped.hpp new file mode 100644 index 0000000..77978c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/overlapped.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b6800c170ae14063520c964c0d0c00ac89ce58f783c9ee739d19612ba7ac096 +size 513 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/page_protection_flags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/page_protection_flags.hpp new file mode 100644 index 0000000..4e7cf15 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/page_protection_flags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb371b4baf59697e5af8d9ab509dbe8a0f683bdb227e4f0e8974b3b2528931d7 +size 565 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/pipes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/pipes.hpp new file mode 100644 index 0000000..43e5ae0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/pipes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e0fd8bc7e675e40d844d250d16e759c432ca48009a0e1d49218467dee80e79e +size 488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/priority_class.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/priority_class.hpp new file mode 100644 index 0000000..98fb193 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/priority_class.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8d44fb8e536e41278fbda3fd5fc45dee1e61a26a0d6d50e851e0d03afbbcc1e +size 533 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/process.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/process.hpp new file mode 100644 index 0000000..c7e9058 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/process.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a4750ef10d3f1f268e1732e87e460b35e795f274c2b90f4aeb9babdd518c885 +size 498 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/security.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/security.hpp new file mode 100644 index 0000000..6d6b9ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/security.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7fe97cd2e55285cd618035c82c99c774c3de7d22b845734642c0d674a724a84 +size 500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/semaphore.hpp new file mode 100644 index 0000000..b1d24ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db7aa39b4343a0f66b935a59ad977278962379e74c0cac8f92906a9a10000862 +size 508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/shell.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/shell.hpp new file mode 100644 index 0000000..03e355f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/shell.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7437f13c9f434b4cf3f3487d6cb7777379ae6ce28727786d7ef23c56bf07155a +size 488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/show_window.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/show_window.hpp new file mode 100644 index 0000000..bb59682 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/show_window.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbdafeaa0ab9c1108db542a9eeac68233344e79ef2d985cc21907ae5728e302b +size 518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/srw_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/srw_lock.hpp new file mode 100644 index 0000000..30ef3cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/srw_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ba6ef9b75093a556ecdb6bb8b7972e5d19f1d77e634c7d4a5cc048447af297 +size 582 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/stack_backtrace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/stack_backtrace.hpp new file mode 100644 index 0000000..99f6083 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/stack_backtrace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:660275d50150aae8684024235a2fa0d9d55cd36cab467afb8964418e36eef29f +size 565 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/synchronization.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/synchronization.hpp new file mode 100644 index 0000000..9426f23 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/synchronization.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b6644a696afac9741400c6f29feec97d777a2b1d4a9946d38cd7351772bb066 +size 535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/system.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/system.hpp new file mode 100644 index 0000000..927f3db --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/system.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15733ccd41fa17c9a487195c1102f8d5bdf897ae174663dacbe8d5606e219981 +size 490 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread.hpp new file mode 100644 index 0000000..6e799d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ef7f2dc8ece4aa9c4c61d261eaaecd0eb8b6f0c4c588736f9de14622a18e890 +size 490 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread_pool.hpp new file mode 100644 index 0000000..712540e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/thread_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f950c6742892cb382f3b90498cfb319dee4b6c42c6735b7d42d3108371d7c58 +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/time.hpp new file mode 100644 index 0000000..a8ace51 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac3a8900e861ab0a429164dff6eba97e6942d2adff24a66f77b36fc495ca628b +size 483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/timers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/timers.hpp new file mode 100644 index 0000000..6155b6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/timers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af99266715c4290a294141862d092a5dfa9b3a31f32883d3404c924d9cabbc5 +size 490 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/tls.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/tls.hpp new file mode 100644 index 0000000..bffac3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/tls.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4069c9c7135bdc45fb538ca8ff07b28e671beac1318ffefdde4cb1d1259e3ab7 +size 475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/wait.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/wait.hpp new file mode 100644 index 0000000..e560d58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/wait.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a56716b284b0913ef90a815d15e2bc5a381d13b5286ff3802aca66b8b8bcb936 +size 480 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/waitable_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/waitable_timer.hpp new file mode 100644 index 0000000..4747808 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/winapi/waitable_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c54cde3e76277ec342ae754d04db876cf416308da5ef4a6e763e948b82d4b7ac +size 530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/workaround.hpp new file mode 100644 index 0000000..cfb8216 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/detail/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05218eed322b097f20bd71ffb52aa57721acafa13cb89b641634ab75d251b73c +size 335 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/all.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/all.hpp new file mode 100644 index 0000000..2aee82c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/all.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d10e54d586b0769c93f29b2516259424d6754d3acc7d4c476e5573d22ff1dd1b +size 1088 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/current_exception_cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/current_exception_cast.hpp new file mode 100644 index 0000000..6526e1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/current_exception_cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ce6f0adf3c6f89b0f1b9acdb86082b844332c16dc0a46be0309f8e482ee640d +size 969 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/clone_current_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/clone_current_exception.hpp new file mode 100644 index 0000000..38957de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/clone_current_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fef7179fdde82942d5e2808a6c94fbc6dab9e619b66e92ee36faec3a23f79a8f +size 1523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/error_info_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/error_info_impl.hpp new file mode 100644 index 0000000..6ca4828 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/error_info_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afd2bf0004079ae850aae6456f7ab6d1fc5b7ba540ffdba534b262b047571edb +size 2603 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/exception_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/exception_ptr.hpp new file mode 100644 index 0000000..b22a29e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/exception_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72044a74be3a6fac55fa564fa370530af48d3b017586d9164292957e2aa277ee +size 15044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/is_output_streamable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/is_output_streamable.hpp new file mode 100644 index 0000000..0807999 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/is_output_streamable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03e17bb5289229a2f0095292158042eea201bb1e5d722c06f276748346105dd7 +size 1683 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/object_hex_dump.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/object_hex_dump.hpp new file mode 100644 index 0000000..d74f040 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/object_hex_dump.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d20278771122db81717d036dd9dc397ba368cad4604161edb4b83e9a6b97bb62 +size 1544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/shared_ptr.hpp new file mode 100644 index 0000000..b4fd6f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f95697b38d3e5e3d9735c4e89fefb1797d4fdb98c6a98ea8101762229181cb31 +size 570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/type_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/type_info.hpp new file mode 100644 index 0000000..063eb82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/detail/type_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61c40731ffc078fa63b37197c7879707b8077d4e37635d81dc6c4edfcb2d24ba +size 1963 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/diagnostic_information.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/diagnostic_information.hpp new file mode 100644 index 0000000..09f04ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/diagnostic_information.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1765dd76c9b767c678eafe07a54cac621d4f22658e02c4d79fb67ecb0bc2437c +size 6225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_current_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_current_exception.hpp new file mode 100644 index 0000000..d032fc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_current_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c86cd2285b011fcffefbad55a10ea61cf042b8c09d6278ac227b7ba7048be8ab +size 363 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_error_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_error_info.hpp new file mode 100644 index 0000000..e732ff9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/enable_error_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15dc4b579c758c6ac086b0ddfea71219f0a4582719ba1bf6628dbf43c225162b +size 363 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_api_function.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_api_function.hpp new file mode 100644 index 0000000..ba79bc6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_api_function.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bd6f4226a07aedb8da2f6304d1b91693edfec6fbe83d14324aeee4300f6b195 +size 647 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_at_line.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_at_line.hpp new file mode 100644 index 0000000..00b2575 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_at_line.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c80d47d6cd9d7881812e64fa4e8ef678635a456e192a1a377447a9d0aed66416 +size 547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_errno.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_errno.hpp new file mode 100644 index 0000000..e588a43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_errno.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b42cd61ed5ef1d23ad7c3c09e2dc2a24d881437b8402ad2a97908152d157e7cc +size 1296 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_handle.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_handle.hpp new file mode 100644 index 0000000..6b14b59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_handle.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e05ddb3496f484221d00ff32b5582891decb1931c1c3513dd523a0dc3c825fcf +size 548 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_name.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_name.hpp new file mode 100644 index 0000000..8156c53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_name.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8f8c04371a21e6be85cff42d4344cbf34c3c761ea37d1c7fc31f3075a018872 +size 723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_open_mode.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_open_mode.hpp new file mode 100644 index 0000000..068208c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_file_open_mode.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c10c18c311e1eb32882b593d7f0e903fd9c23a614821f800a4757b7775739c3 +size 733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_nested_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_nested_exception.hpp new file mode 100644 index 0000000..d9e91e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_nested_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d84e25ef4c14d8c5386138fa2785c4e66dc48b3e49fabdbe9806175ec1eebe91 +size 576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_type_info_name.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_type_info_name.hpp new file mode 100644 index 0000000..c6f4c18 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/errinfo_type_info_name.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5bb4ba4865b59ba22fea9670cf73a6ec50000ad8490d1f049cdebb6ac12ca16 +size 637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/error_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/error_info.hpp new file mode 100644 index 0000000..a4d7006 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/error_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a40e1a1818b60fe4f978933cfc99f8865174ec6d579205e314458c8464502e6 +size 387 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/exception.hpp new file mode 100644 index 0000000..0f38a25 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3dc079bac46d9f89de9d8423e6c8f38b9ecf30f6552fa7e6bdfda2ea86113f89 +size 13395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/get_error_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/get_error_info.hpp new file mode 100644 index 0000000..f4184df --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/get_error_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79c5c95affcf79050fa5fa8e4d175d1c960627c1c7d5b9f856c79b4a38cd3230 +size 3701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info.hpp new file mode 100644 index 0000000..8c1338a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b41e3a43d69a06cfae4f8d587543bdb06f059b14d475bd8614699fb26d6a499 +size 8663 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info_tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info_tuple.hpp new file mode 100644 index 0000000..586fc0c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/info_tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1818414aa51d87f02a494ea82ae6f05ce9d5d4e28abe65905dc679617cbb1acb +size 2390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string.hpp new file mode 100644 index 0000000..87c0388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69584c5a901d6330a1376ead93f2c0f9785fe7bec22ebb64085a812965a3af01 +size 2268 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string_stub.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string_stub.hpp new file mode 100644 index 0000000..9c21d41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/exception/to_string_stub.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34e1d3a10535a1db9eae2ab0eb57d449331a44a171ef16d068fee23e8f877fdd +size 3032 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional.hpp new file mode 100644 index 0000000..01c48c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ea4dd42b936261a749117e245aed5e6ec7612e294dc1dc9fea61f991ecc3251 +size 20124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/factory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/factory.hpp new file mode 100644 index 0000000..2e36ede --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/factory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bccebf2544b48566f0cc0c54fa4f5d854c7d74a43787ad17d82e8d1ead9a54ac +size 7206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/forward_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/forward_adapter.hpp new file mode 100644 index 0000000..cc0129b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/forward_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e164429f2797c4ef7d3d7187bc3c52f6a7be17e9da9e60141705d08d9baaa2f6 +size 16401 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash.hpp new file mode 100644 index 0000000..4dee620 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1e756b0c98774fb26f75e8880ff4bbcfc53e18d8a39e686b32c7af45baa2d1 +size 233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/extensions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/extensions.hpp new file mode 100644 index 0000000..4a5c587 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/extensions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efc474537dd76c2c774623fffe518e17f599c44ab6b20fb68dbc39ed0cd1f359 +size 234 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash.hpp new file mode 100644 index 0000000..4dee620 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1e756b0c98774fb26f75e8880ff4bbcfc53e18d8a39e686b32c7af45baa2d1 +size 233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash_fwd.hpp new file mode 100644 index 0000000..d25693b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash/hash_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0177e56687b53ed7aaee092cd10244379e8078dbcb6d2ed1d85487da783f36a +size 237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash_fwd.hpp new file mode 100644 index 0000000..d25693b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/hash_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0177e56687b53ed7aaee092cd10244379e8078dbcb6d2ed1d85487da783f36a +size 237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/lightweight_forward_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/lightweight_forward_adapter.hpp new file mode 100644 index 0000000..8f93d2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/lightweight_forward_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb63c82a1215b02c4a3169de71f5e3d6026a22fb001bdac00745c210ea915384 +size 11464 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function.hpp new file mode 100644 index 0000000..eeb8e96 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5819bb758e91d8b2b6ea4a504b32b6f9382909cd322d7766301db7f845c07509 +size 11550 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/config.hpp new file mode 100644 index 0000000..1fad36e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd7d900490adafab512bd9adf520574ef07667d10336fe08e833095b02d76827 +size 1767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/base.hpp new file mode 100644 index 0000000..359e051 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11aa009f112f773ba237e2649e14dffe16b86e4ab63532ea1be56d4b6ee1c207 +size 3020 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/function_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/function_type.hpp new file mode 100644 index 0000000..f2ae9f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/overloaded_function/detail/function_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3c903bd0a3327b9e26a2de29a85cde6e2b81fec992d226978beb18923866de9 +size 3278 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/value_factory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/value_factory.hpp new file mode 100644 index 0000000..f3623de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/functional/value_factory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bce63b611ed23a08deb7838440390e09329509aabfec28bd00e408ef96c698a8 +size 2138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/get_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/get_pointer.hpp new file mode 100644 index 0000000..2a51746 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/get_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56f8d28eef5c78280970bafc3b7b2878fd63e73161e26afb86b3a5e1ec4e1279 +size 2288 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer.hpp new file mode 100644 index 0000000..ee10737 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dae90c95bdbf6f1fe82fb396767ccffcd8a4e83c614d5e8453ae3b6cb9701f2 +size 11589 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor.hpp new file mode 100644 index 0000000..5650179 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2521f84197c24d4a460fe6214957df4fd1c11a4a53972607905a73e727cc5cb8 +size 583 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_ct.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_ct.hpp new file mode 100644 index 0000000..4f2f7c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_ct.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b85a7dda1a533f650df7f1b175291d1851e37f250bc062833eab94fe810bb8a +size 3368 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_rt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_rt.hpp new file mode 100644 index 0000000..c5cc668 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/common_factor_rt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28179a82632d6ccbe5e91c2d6c803b852178b9370e8aa52ca432a73ced0f5bef +size 22779 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_log2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_log2.hpp new file mode 100644 index 0000000..8a51b98 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_log2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04fa99f596f9bbdd90273dffd8a7ba5202d7c8ccd5a20d14a1756535a64bda5e +size 2245 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_mask.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_mask.hpp new file mode 100644 index 0000000..ec287ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/integer_mask.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c96e1b3efbb580afe2dde46d30a29d1871fa223dd1fba8a2371de4ab6463c5c7 +size 4234 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_log2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_log2.hpp new file mode 100644 index 0000000..540b967 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_log2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af8357eeba97d9abce9ad9b7b8e5248b8cf933553ca4e181f704da50cbc81fa1 +size 3540 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_min_max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_min_max.hpp new file mode 100644 index 0000000..49c6e38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer/static_min_max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af6c4c495b600acf67f8f3ae41b95c32353ac103c2f48ecd359577b2024713df +size 1605 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer_fwd.hpp new file mode 100644 index 0000000..aaa59b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/integer_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23575339d843ad61aa7255dd53313da4ddbc3bc41037e58db5a595c1c6697640 +size 5181 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/adaptive_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/adaptive_pool.hpp new file mode 100644 index 0000000..cc679d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/adaptive_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:616220460f1e914da88269829daddf6b37656d8c2949a08f7c42ff6bb2295ca3 +size 17970 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/allocator.hpp new file mode 100644 index 0000000..8a71a68 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6077069c3e6a268fce7247dc53a634e6a7a1c151bc3afec3ee53524e8ea529c +size 11433 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_adaptive_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_adaptive_pool.hpp new file mode 100644 index 0000000..9abacdf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_adaptive_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e812f2862c584ed6ff405f0c7cb5e3f428f278c17981d35542fcdd026a0cb612 +size 13283 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_node_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_node_allocator.hpp new file mode 100644 index 0000000..dedd916 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/cached_node_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f46285e55eab91cce4b7f77a6363fd83bf11dd0a63d3aa2b14f728a221fbf10e +size 11528 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/adaptive_node_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/adaptive_node_pool.hpp new file mode 100644 index 0000000..b0b8624 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/adaptive_node_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ee7a663ade4d613ad9e555f320cc2eab0ed998d505b6511b1818228561a0ce2 +size 4187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/allocator_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/allocator_common.hpp new file mode 100644 index 0000000..3545fb4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/allocator_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7bf4fb493a87adac31a0e74826c7b1a5f1657953b665626529dd1300d7529b +size 31594 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_pool.hpp new file mode 100644 index 0000000..cf117c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d251903f7c2aadeab4606b84b8f37ce101cae7009a1aca636bfb51d7911e540b +size 3880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_tools.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_tools.hpp new file mode 100644 index 0000000..87d69ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/detail/node_tools.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b37fa25764ce5c3cc49296170cb7f2dcc7468ef98baacce1e90dc52c10da1e8 +size 1535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/node_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/node_allocator.hpp new file mode 100644 index 0000000..ae5d9a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/node_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8572772ed26c2e7a4c0db3c81f8a37c96d0f5c74b0643440fd714e477eef5fa2 +size 16625 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_adaptive_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_adaptive_pool.hpp new file mode 100644 index 0000000..e34c9c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_adaptive_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4bd4ba7a7100d041ee329e61bd58fe68e580f8cde56fdad60c09e93285cbb5f +size 17706 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_node_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_node_allocator.hpp new file mode 100644 index 0000000..bc2d7ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/allocators/private_node_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:852b72bdc07b726e038a959f1d9a6aaeb432144eb036fe8ae70d72790380d335 +size 16253 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/anonymous_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/anonymous_shared_memory.hpp new file mode 100644 index 0000000..91227fa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/anonymous_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8ab4659071f765758e630781cd18adc280e7d885480cc723716660cb20fa47b +size 3532 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/allocation_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/allocation_type.hpp new file mode 100644 index 0000000..b111d14 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/allocation_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cc2422647ed4062bea6a3811c5912a70b434d0a846d29b7182c1f033659eec6 +size 1716 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/containers_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/containers_fwd.hpp new file mode 100644 index 0000000..44a999c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/containers_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f96b7b09b1f1bd394a760a909cd0336112de9d66cd3b64af2286f722934ae90a +size 1387 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/deque.hpp new file mode 100644 index 0000000..88897aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f429179d2d081bd7e45339bb3ab75c7ae03d256cd517308eabdd71b8ba69d4e2 +size 1044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_map.hpp new file mode 100644 index 0000000..9a65b38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6478507387557195a010a6cf18b11b5a7de1143a3ea32e300086f04e0e71e940 +size 1097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_set.hpp new file mode 100644 index 0000000..996c0e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/flat_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8c5db5a5a13ea016b18faec7338c982a157ae8824fe0cb959ae42f7411eed23 +size 1097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/list.hpp new file mode 100644 index 0000000..594e16c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1627ea6a8b7e8d9c0ec66ec8f60cd1f49e05b44811eb8fd5ef31d23963ad9071 +size 1039 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/map.hpp new file mode 100644 index 0000000..8917500 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5426f0c0c9e7fc53bb2e3f7131847f2126ff96edfba597e29b8b37d31000f5ce +size 1067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/pair.hpp new file mode 100644 index 0000000..7b3ae63 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2590ba221f3e980150cb607a75b25159a0930af5aadecd72f3051b4b8d3c5c73 +size 1051 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/set.hpp new file mode 100644 index 0000000..dd3d652 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd0b84d6c9df4d06da26bc0f9fd8a22431914666893b662ea59cf3b0387409a6 +size 1067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/slist.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/slist.hpp new file mode 100644 index 0000000..8657bc9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/slist.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6ac4acc98e1ba2d651baa103806e01c4f08c54ad48039e0a571c298d3a971e6 +size 1043 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/stable_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/stable_vector.hpp new file mode 100644 index 0000000..be9dd55 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/stable_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f0002e93855662dbc5de38f84f42e3f1e71149789f2c7dfad7d3818e55d6e2f +size 1095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/string.hpp new file mode 100644 index 0000000..067d0f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c7da01416662dce170d38e750cb2acf5b9a8b820f2056409a95c818a48aa22 +size 1086 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/vector.hpp new file mode 100644 index 0000000..aa3754e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0632c99d79b206ceac1fe3a793072691f01facc2ada799e81cec61d82d3b1bd5 +size 1049 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/version_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/version_type.hpp new file mode 100644 index 0000000..de585cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/containers/version_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d12f53fdbf3df957db5809e0119edb892fdcc3effb423a767f7e1b5abcac2141 +size 1069 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/creation_tags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/creation_tags.hpp new file mode 100644 index 0000000..f82f394 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/creation_tags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:028e4d9b3b79ddc28d90f708ed8dafe11c4d12e5a5c3aa073f3b2f3e6594ebb7 +size 2399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/atomic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/atomic.hpp new file mode 100644 index 0000000..594f489 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/atomic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dcac8403881d13a796f93b05d4ae24450c48bf4fdb8249650d58da7677e4ecab +size 22036 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/cast_tags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/cast_tags.hpp new file mode 100644 index 0000000..8b9deea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/cast_tags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2b4221b19b64cb102a6716626b29a98c473834c6137643bf01eebbfbae8c9e9 +size 959 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_begin.hpp new file mode 100644 index 0000000..7b970b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5dd41320ffea8d1e018b7c35fc59bd5e86ffd6ac3285296f2d50210382c72cda +size 3210 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_end.hpp new file mode 100644 index 0000000..377fe02 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be2c18196ba9b71075cb6e193ab327216191916cc8e4c45c484577d488caff5c +size 564 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_begin.hpp new file mode 100644 index 0000000..8ed8073 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:548d9e827042cb33ce0e9e6226e67395882f6001cfdaf72948d75e295ff081a6 +size 714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_end.hpp new file mode 100644 index 0000000..d97b778 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/config_external_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7685806919226c8156bb6f1822baec80e01032dcefd6da8fbfcfdac2c1539a +size 529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_locking_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_locking_helpers.hpp new file mode 100644 index 0000000..c4c6251 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_locking_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:177c53ff2d26e0c2144eb9752a353758a6208189f121dccf3b5e13eec8c85242 +size 7029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_wrapper.hpp new file mode 100644 index 0000000..7d53e1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/file_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1a5d357423fb322d0ea02de7c52a99d1c0a213c8b35b175a2370086ab638920 +size 6407 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/in_place_interface.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/in_place_interface.hpp new file mode 100644 index 0000000..ddcdebd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/in_place_interface.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9aa2674552e3cbd2b0db3a0f2dd0bc5786e22a0700872eaed9f5a0706659eed +size 2284 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton.hpp new file mode 100644 index 0000000..3cd5a26 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:973fbdd6aafdf760f02ce822e7653ad674c78fc419df052d2d30cab35796de59 +size 1634 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton_common.hpp new file mode 100644 index 0000000..99903fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intermodule_singleton_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e5513c31a297d6b3a5283ad620392cf27d9cd465ba684c8fe1fde56508423b +size 20068 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/interprocess_tester.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/interprocess_tester.hpp new file mode 100644 index 0000000..0725ba3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/interprocess_tester.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bf8ca1b3322e202fe051f87fdbb85390142f860ae79ecf1ac66c4b32ac097a0 +size 1028 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intersegment_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intersegment_ptr.hpp new file mode 100644 index 0000000..65b1ed9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/intersegment_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cac375e0246a918282dbba592ecc7365a4cfb0471446fca3250f5956e4ec1f0 +size 34301 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_global_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_global_memory.hpp new file mode 100644 index 0000000..351265d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_global_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcf7ad400e9acf5c70c5b220b024628e14f5bb6752876f395a194ed4af9d2603 +size 4072 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_memory_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_memory_impl.hpp new file mode 100644 index 0000000..e9e24fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_memory_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee7a703555aa2400248a31b9c1ac5e7be969f080a273a7145bd69405db12efde +size 29951 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_multi_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_multi_shared_memory.hpp new file mode 100644 index 0000000..92fff0d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_multi_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41727bedd1c02df230716020e845381cadf72b45e9ef534bf459e908f4363817 +size 14744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_open_or_create_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_open_or_create_impl.hpp new file mode 100644 index 0000000..8a2b8bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/managed_open_or_create_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef48c5d892596e70d3f8629ae698a1896a82d46476db5e8ce1c9e033a9ee91f8 +size 15421 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/math_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/math_functions.hpp new file mode 100644 index 0000000..303cd15 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/math_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c2a5f564f8a0da0409278e6dc7de4b58d4dde535e0e77a389b963d213bd5133 +size 2574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/min_max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/min_max.hpp new file mode 100644 index 0000000..4cb2e7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/min_max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:044dfd4b216ace68ba94084c42b91aeef1f48f83a621f1d36c0625b1ad8e34e8 +size 1147 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/move.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/move.hpp new file mode 100644 index 0000000..392f5f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/move.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ab0143959d0bc1bfb949b8dfbe4978d7e94bb82ac61afb2a9a247db9ac1f5a9 +size 879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/mpl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/mpl.hpp new file mode 100644 index 0000000..9d1d8a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/mpl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3876c02e53452c4470720e1c7f427de56e40a5cc6b6050bc45c8d80e8fb6350b +size 2259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/named_proxy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/named_proxy.hpp new file mode 100644 index 0000000..80157ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/named_proxy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8241945e92acdeec70fbcf821dfe8237a1e8a51c03201def51ed00788ab8234d +size 9950 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/nothrow.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/nothrow.hpp new file mode 100644 index 0000000..8ac0f69 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/nothrow.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4f413e3e43cea72bb78dffec1ef93f214ae5f17c6dd5eb1f401e5a8a729eaf7 +size 1199 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_file_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_file_functions.hpp new file mode 100644 index 0000000..10f177c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_file_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77660113d4221e396b06a096f57891ab6fdb653b5b74aca3eddc7816e339da4c +size 22440 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_thread_functions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_thread_functions.hpp new file mode 100644 index 0000000..69725a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/os_thread_functions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fa020630959af80afef177012d09f073cc9e6d8ccb43ddfb44ebb488b75e09e +size 17427 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/pointer_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/pointer_type.hpp new file mode 100644 index 0000000..d72a7ff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/pointer_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b03ecffc03ba2a319c101a8dd2b2702fc5c837360cb96362e33be5c594476b75 +size 1890 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/portable_intermodule_singleton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/portable_intermodule_singleton.hpp new file mode 100644 index 0000000..f3be0bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/portable_intermodule_singleton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84a02b69c59cff787781c1f660ac8b797be6b24302ecf92859607d4632db1b71 +size 11670 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/posix_time_types_wrk.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/posix_time_types_wrk.hpp new file mode 100644 index 0000000..929d981 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/posix_time_types_wrk.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66efb200e1a5a9cfb639413cfb01710f915ab267a6143222da886c1ab1aeece7 +size 1459 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/ptime_wrk.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/ptime_wrk.hpp new file mode 100644 index 0000000..5d9b158 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/ptime_wrk.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9df904543634638373609df637766b76d168802b3291268518e3fd1764ed115 +size 1195 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/robust_emulation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/robust_emulation.hpp new file mode 100644 index 0000000..61b7fec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/robust_emulation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e99e90dc7ef114ebcaae1a586296998b68de01475a9cb120302f71cd680674ed +size 13020 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/segment_manager_helper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/segment_manager_helper.hpp new file mode 100644 index 0000000..09be2d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/segment_manager_helper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45156dbb35d9d6d3f2d27e4e27b4b0cbb8d8b21a7e87bd8636a6268aea59d77b +size 15325 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/shared_dir_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/shared_dir_helpers.hpp new file mode 100644 index 0000000..5514186 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/shared_dir_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e892e34152e7622031fb1c4c909f4d645da2cefeb1c37ec9ede541dced9b6c25 +size 6908 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/simple_swap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/simple_swap.hpp new file mode 100644 index 0000000..1236896 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/simple_swap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3ce9ba52ffa61cbe906d3918b7d659d5cee2b2d98a324c30fd19fe9bc073400 +size 859 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/std_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/std_fwd.hpp new file mode 100644 index 0000000..fd3380a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/std_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d11b22c47e831393e71498a7c72c274e32e96059b773ef4bd59711273c962e0 +size 1708 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/transform_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/transform_iterator.hpp new file mode 100644 index 0000000..f49e85f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/transform_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8590dac3b9d0cd39a6fb3d7edeb59fbf1382785f7cbbf4fe80946bdaac47de7e +size 1283 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/type_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/type_traits.hpp new file mode 100644 index 0000000..98efdb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/type_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23eba3681b9586e887299d3b0db5c536d2498dd40ec5bd001b67897a6b1e51ab +size 2901 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/utilities.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/utilities.hpp new file mode 100644 index 0000000..3cc04f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/utilities.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02a681af9a10e574bf03f916bceeb288a2ae5f3761a158e318f9531fafeb9dec +size 5917 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/variadic_templates_tools.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/variadic_templates_tools.hpp new file mode 100644 index 0000000..dbbba2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/variadic_templates_tools.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeaf51755f544f638c4c7235a1bb3167c397d3bd10163b2c50ceae8733184762 +size 1115 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/win32_api.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/win32_api.hpp new file mode 100644 index 0000000..828def2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/win32_api.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5bc87d17c184386df002b43a7711186b317dbd4d51d2545bfc741cc956985cbd +size 87936 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/windows_intermodule_singleton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/windows_intermodule_singleton.hpp new file mode 100644 index 0000000..e27f018 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/windows_intermodule_singleton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:306afd896afda7b39c840248905ccaeae00db51e12c60dbf82146f905384cba2 +size 10745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/workaround.hpp new file mode 100644 index 0000000..bac625d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25fcbb2563fac68febe8df96ded136e99b451de2ec994843db17429aebd3256b +size 9271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp new file mode 100644 index 0000000..56066ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/detail/xsi_shared_memory_file_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1c9a8a59c210eb3d88401c0b5ba05c61622870ef88349456d2e554e7cf2b576 +size 3144 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/errors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/errors.hpp new file mode 100644 index 0000000..2e7633d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/errors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6025182f51d539c36a6eeac5d8f072f20fa5fdaa751297db1154b15b37c4f50b +size 7483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/exceptions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/exceptions.hpp new file mode 100644 index 0000000..6104662 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/exceptions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:404255525890e8eb13e2d740a80a0d769707bfcb38109b587ceb1c9153a6336e +size 3188 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/file_mapping.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/file_mapping.hpp new file mode 100644 index 0000000..532cf3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/file_mapping.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46e5117fd075d203ca13545705a48222b1fbd43ca21d584650773317e8e29404 +size 5894 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/flat_map_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/flat_map_index.hpp new file mode 100644 index 0000000..19f03da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/flat_map_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a07480f429c0c59a464128cbe9fc776f88f7b6fd18140a590011dfb5fde28fc +size 3250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iset_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iset_index.hpp new file mode 100644 index 0000000..22e79b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iset_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ae246829ef789cfb2b26314c7f8b743b4ee5fe20f83b45ceb7185bfc657132d +size 5611 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iunordered_set_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iunordered_set_index.hpp new file mode 100644 index 0000000..31d1486 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/iunordered_set_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a480a92ef4e5ce3946a1be078a2b5bb11184b108c069b4cb90c2b3861b3c11be +size 13306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/map_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/map_index.hpp new file mode 100644 index 0000000..d0b51ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/map_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:773999c980931f77e0a598e4ad165af94cfc9de38ddace35caf3467c881b43c7 +size 3640 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/null_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/null_index.hpp new file mode 100644 index 0000000..628b9b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/null_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5e0c3a09b2b25f1a2962e26ca7ebf7010eff188dd63f013c8990c706ebfc51d +size 2000 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/unordered_map_index.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/unordered_map_index.hpp new file mode 100644 index 0000000..caad24e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/indexes/unordered_map_index.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:607037b389b25bdbe5aff0bb9f134c8cf82cdd66ed35c410464f7c6660f4db47 +size 4239 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/interprocess_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/interprocess_fwd.hpp new file mode 100644 index 0000000..27ff156 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/interprocess_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4207e2e9b41219ca8d5e032988e4993247a9dc1821779a3485281bc66297aec7 +size 17418 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/ipc/message_queue.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/ipc/message_queue.hpp new file mode 100644 index 0000000..3abbcd5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/ipc/message_queue.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5d3b0632058dcace33891f7fb801d6b5214acac49311a9cb9ce2bb7cb1774d +size 39895 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_external_buffer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_external_buffer.hpp new file mode 100644 index 0000000..c56628f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_external_buffer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d4badc1affe41a8078fe51a3fd8ba1fbdc31e4291c91b54ccb41dc720a0be8c +size 4595 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_heap_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_heap_memory.hpp new file mode 100644 index 0000000..089449e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_heap_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc1267244286df205eefff17f99aba95fb82e50ceecd184aa55d82e7e143b5aa +size 5459 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_mapped_file.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_mapped_file.hpp new file mode 100644 index 0000000..9c0edfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_mapped_file.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f203b2eadba79d8dcf529858b134a8eaceab21cb215d0b1ed715227e5b2aa19c +size 8685 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_shared_memory.hpp new file mode 100644 index 0000000..5f3a5d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5c85fdbba76640cb21a354a9fff94868c5314325672dba71207620be78e87bd +size 9067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_windows_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_windows_shared_memory.hpp new file mode 100644 index 0000000..5ab86e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_windows_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cd4668d1b3bd4905da785d73129a26e5aac60c81477abdc2814dfef1da36a2a +size 8014 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_xsi_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_xsi_shared_memory.hpp new file mode 100644 index 0000000..f44ea53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/managed_xsi_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e15337a002e6b3532204baa48620b01f024d9d24af03746fd5e4cbbfba44fe8 +size 8022 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mapped_region.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mapped_region.hpp new file mode 100644 index 0000000..d1228d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mapped_region.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82fd98529b356baa9ae8dbbf843e38c67d3213d6853bb1f515299d26672e3303 +size 31773 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/mem_algo_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/mem_algo_common.hpp new file mode 100644 index 0000000..e541572 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/mem_algo_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2338b2fff47fb160e01a4d8deae9d385c7e99461e0684a42a4890ef9d38af8c6 +size 25012 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp new file mode 100644 index 0000000..f623f9e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/detail/simple_seq_fit_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0718abca9fd43ef35e9e74e18dd3b6833f30003186facef55e31410266d0e682 +size 41335 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/rbtree_best_fit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/rbtree_best_fit.hpp new file mode 100644 index 0000000..70444bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/rbtree_best_fit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:532482db8190365b3a233f27bcf00ecc87446c039c950c3e25911ffb7e5f983d +size 58181 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/simple_seq_fit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/simple_seq_fit.hpp new file mode 100644 index 0000000..fab7d08 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/mem_algo/simple_seq_fit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aca3202e6517287354cb2e9064ba2a0fc31b0a18979a94976e153956c7ea7d0 +size 2081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/offset_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/offset_ptr.hpp new file mode 100644 index 0000000..d8d218b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/offset_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1db603f00b77069dffa030f7ffae7c57ba4f78d934ae2d42dbf22239f6963d2 +size 30933 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/permissions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/permissions.hpp new file mode 100644 index 0000000..870b7d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/permissions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e145835880930f4ecf6a31daed286749e59ffbcab6914e019a6cd0959a424645 +size 3443 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/segment_manager.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/segment_manager.hpp new file mode 100644 index 0000000..59857ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/segment_manager.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f5be8e698ffd520cec030d74a265005437794f4b446ed80e744e5ed0dec6588 +size 50713 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/shared_memory_object.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/shared_memory_object.hpp new file mode 100644 index 0000000..2971248 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/shared_memory_object.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544eea3a4442b343f5a2157765c9f1f27e5632c45db8b1de7107abdff9aa6cef +size 13550 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/deleter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/deleter.hpp new file mode 100644 index 0000000..4e9c329 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/deleter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3e848808a77f845c7f37b12f351c58ef62e0132dd035fa632c237ebd41c590b +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp new file mode 100644 index 0000000..1f636ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/bad_weak_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:66c25e51f855bf759638f91f13ec9176fd43bf28fdd38f93e57020bf0dab7225 +size 1354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/shared_count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/shared_count.hpp new file mode 100644 index 0000000..33aca62 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/shared_count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2b0c1f92b8370390cd6a68283e38fff852fbea6ac4fb1f75e06d4775bdf2b78 +size 11546 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp new file mode 100644 index 0000000..3b7e986 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e29b710995ff1ce20b3643dab563a7150f95528548a55ce62e9066d000fc39e +size 833 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp new file mode 100644 index 0000000..fca1e61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_base_atomic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcc27846ab065f0040c0c894a76d81c8ce37d779fd7c6ee1c33b5868f25614f3 +size 2344 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp new file mode 100644 index 0000000..309b45d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/detail/sp_counted_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ac5e3338a951029c06b19ca2d39b2b84bbe10e983c29069cfda8f72963c91c9 +size 4922 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/enable_shared_from_this.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/enable_shared_from_this.hpp new file mode 100644 index 0000000..324b9a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/enable_shared_from_this.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c694115f3cc25a3ea531cef638ed07c3bf4fabc8ba9ac4dbe40e202577f5067 +size 2661 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/intrusive_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/intrusive_ptr.hpp new file mode 100644 index 0000000..7432ba7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/intrusive_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d93a9d2ebac83cc90128d44c2ede6e75759b78b7f66566f53c6cb31d2464b886 +size 10454 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/scoped_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/scoped_ptr.hpp new file mode 100644 index 0000000..014a70a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/scoped_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dfde0d002155cf857ec62be3d46fc3e7037171d59ef8d96f581cb834120ddb3 +size 5771 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/shared_ptr.hpp new file mode 100644 index 0000000..abbbde8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1fffc5a4e995c3f7e828cdf443e2038e2d3710ceb419605d64d96c61d9f6dab +size 16662 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/unique_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/unique_ptr.hpp new file mode 100644 index 0000000..ed86b1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/unique_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10071ebb809b7fccc0102b1041487d54a2b72e359f9fc5d3b1be8dd88c0376e4 +size 2009 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/weak_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/weak_ptr.hpp new file mode 100644 index 0000000..43a5ed8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/smart_ptr/weak_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be7850ac116baeebdf1c3fd351cf207cf1b1ec68773e99cf3e7af650e0c8e091 +size 9111 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/bufferstream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/bufferstream.hpp new file mode 100644 index 0000000..a7682c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/bufferstream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15bc75877551cee4f7c39d8b3befadcaa5dc5a854e25af6895327ba7f5a0ad81 +size 18980 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/vectorstream.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/vectorstream.hpp new file mode 100644 index 0000000..02c6a8f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/streams/vectorstream.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37aa5bad55f8ef9aab0d65af51724af0fc3a13ff633fdbeaa2cd5cb8274cfceb +size 25648 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/common_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/common_algorithms.hpp new file mode 100644 index 0000000..f2e094e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/common_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9e06335e765d9541084b6adde10aa6893a1cd0d063ef75795cc54600cf615f9 +size 3258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_algorithm_8a.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_algorithm_8a.hpp new file mode 100644 index 0000000..87dc0f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_algorithm_8a.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:048c4b85611053738669c1f44dd60bf629378715e9e2035aca6ab6ba2d69cfa6 +size 12723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_any_algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_any_algorithm.hpp new file mode 100644 index 0000000..283a4fa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/condition_any_algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:683f38416dcbcf491cce8caed799336e9806900070693fb164e22f55e61f5fb8 +size 6866 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/locks.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/locks.hpp new file mode 100644 index 0000000..fd5b060 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/detail/locks.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71642ca84797023597036e141d259b09d13273b75fe98266e7c5c612867bd5eb +size 2210 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/file_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/file_lock.hpp new file mode 100644 index 0000000..92aa9f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/file_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3915d890d6bc99177b1881a893e2579576f956ffac6252c1da47f37d8622dc53 +size 7962 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition.hpp new file mode 100644 index 0000000..8012540 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db43486d87b52214941e37e0b042c2f885faa00cacc311026ce9913976813c82 +size 5656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition_any.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition_any.hpp new file mode 100644 index 0000000..c50685f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_condition_any.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5727e387c131af5eb7bdec1c6e393d6b1d77f5242bde981e3a514e85f04c9ddf +size 4762 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_mutex.hpp new file mode 100644 index 0000000..cb7151a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:692e4a789d4f1e10e21ec2c74da8e6731f3d4060abc637fedbac74a9bbe4f50a +size 6359 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp new file mode 100644 index 0000000..3671eb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a43f4cc30cc92f6bc77e01001fc53a7e387f712f21ac7f749287304cc15858a7 +size 6821 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_semaphore.hpp new file mode 100644 index 0000000..bbbd6f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a374e33a861af91285aed20f217bb713264ed4848af792f77710f72c45b391ef +size 5681 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_sharable_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_sharable_mutex.hpp new file mode 100644 index 0000000..85edfc4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_sharable_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30abd0170b31f6ba3d890c0045dd997d35e069210c3e409efda0ec578ce98810 +size 10918 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_upgradable_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_upgradable_mutex.hpp new file mode 100644 index 0000000..87bd9db --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/interprocess_upgradable_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d645da3a1acc9fba741243b979b3d03698765ebd188f3e73c74f5443b6de696 +size 22851 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/lock_options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/lock_options.hpp new file mode 100644 index 0000000..26806b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/lock_options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b919be9698ac1a9386a57474f15589d5c25125e6988f2209ecd431e0dca76193 +size 1983 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/mutex_family.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/mutex_family.hpp new file mode 100644 index 0000000..9801d9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/mutex_family.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0247ad384ab02742d384e43930b10f4c673430f63cf2c6b8de4b4a9357f977fc +size 1887 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition.hpp new file mode 100644 index 0000000..d96fe1a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf1b565463dca2e103a6b2f2c146c72d6032300687de51be37bf5f053ea7b908 +size 7176 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition_any.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition_any.hpp new file mode 100644 index 0000000..1ef094b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_condition_any.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3595256123804bfa4d12a1d7001e92dbb1ba394b8df7842a1d3314120858e4e +size 6024 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_mutex.hpp new file mode 100644 index 0000000..4d00192 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7285e2a6d8e94381bc82bb20c5d5cd44783756ee72e1f0e55a4249848e5c12f +size 5991 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_recursive_mutex.hpp new file mode 100644 index 0000000..1596444 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4a8473873e66fa2c11a3c7b73013f44ff4b3574df7acebfa7fde86ccd16616c +size 5992 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_semaphore.hpp new file mode 100644 index 0000000..013f471 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50323be968432aa6f8861a0036a92c928b688e6816ec53e4baa8f4915de5db51 +size 6586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_sharable_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_sharable_mutex.hpp new file mode 100644 index 0000000..0d09c19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_sharable_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e98c1a9ec98747e7e22faaa26f78b46ce2dc6c7aa003743dd75f4e2abd01de2 +size 9235 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_upgradable_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_upgradable_mutex.hpp new file mode 100644 index 0000000..ffa02bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/named_upgradable_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfcb49c1f5e6fe073bbe9667ce4d99649eeff4058d8585896c57ae05c75449f3 +size 15994 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/null_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/null_mutex.hpp new file mode 100644 index 0000000..2c87a2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/null_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b122919ffb5320afbb19de76249c1fdf8710b1d3cbdaa31036efa24f12b7e96e +size 4197 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/condition.hpp new file mode 100644 index 0000000..50429fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d69810b6acfac3cc81d85a6841b78ac45a1211469496a5bda4d6a0544fe17c5b +size 5664 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/mutex.hpp new file mode 100644 index 0000000..38bf48f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c9f0777017d504bb29441ade625c1743a5c1a0afe08ae76f5b7d9a722b8727f +size 3965 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_mutex.hpp new file mode 100644 index 0000000..4715165 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70525db67bda5cdc6b143e04f4f789cf1f24f070c6bbc36b97c9af0ff016bad2 +size 3423 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_semaphore.hpp new file mode 100644 index 0000000..0ba25e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/named_semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9cc23ec534dc0762204d47f9ddc4cc0df68b76cbbf95a8fd58801eac090d74e +size 2622 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/pthread_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/pthread_helpers.hpp new file mode 100644 index 0000000..1da4a8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/pthread_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da3a2d969f2360fb5fd9aadde9b0d924ddf9ded4abb4ced47a5b5eeafa959987 +size 5321 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/ptime_to_timespec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/ptime_to_timespec.hpp new file mode 100644 index 0000000..7c3918d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/ptime_to_timespec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57bed057399b5b6d6ed5bf19e8aae11a584cd1cf641e8f4de9392a5b28b8132c +size 1482 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/recursive_mutex.hpp new file mode 100644 index 0000000..c68be93 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95e963cca4615b2a6ff7d6c9b2dc8c4cca0002bb4055e339bfece9fff28d94a1 +size 4044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore.hpp new file mode 100644 index 0000000..0f1264e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ac6ae356474d41c67ebef6bee3e13a666cdb51750f68d47abbfc77b48a5a08 +size 1762 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore_wrapper.hpp new file mode 100644 index 0000000..bb60256 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/posix/semaphore_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80b4bc71e0eab668e7c7e19c44b8bbc8a74883ae69e4d89009a29a0595761461 +size 6821 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/scoped_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/scoped_lock.hpp new file mode 100644 index 0000000..31ec03c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/scoped_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bc0f9ef2ad81d0dcbd92af0b2deb1c7c08400d43a781316e620b99c53b0d538 +size 16117 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/sharable_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/sharable_lock.hpp new file mode 100644 index 0000000..14a4936 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/sharable_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e3485a1ccd9f4c70a867d45ff6ace81b35e9b05134b588fbb718cf7ec1b1268 +size 12918 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition.hpp new file mode 100644 index 0000000..32fb89c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:340b90048d69e7df02107bdf90ecafcff87759e2eebf60c5858a7c84562c082f +size 9058 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition_any.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition_any.hpp new file mode 100644 index 0000000..62fec45 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_condition_any.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8d514d71ecb764b61b99d6cb2e95d37c67be80ff6fc2b53907c7ff73648c2f0 +size 7685 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_creation_functor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_creation_functor.hpp new file mode 100644 index 0000000..6fe8463 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_creation_functor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b4f92a850ea872bcc71ac96c7279962771054bdddc1522ced63bd459acae827 +size 2306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_mutex.hpp new file mode 100644 index 0000000..d33d173 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ede349de5ada01b971847a1a2e122ee115c0b42897aa414aa4d3a80fd6ffa708 +size 6561 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_recursive_mutex.hpp new file mode 100644 index 0000000..2106759 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f4fed06a5f58c5404b8fb8d5e125661c6873cbb53d7e638aaba6f07733fd719 +size 6597 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_semaphore.hpp new file mode 100644 index 0000000..6f5031a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:894ccfb1f57a015493f7c1fb3b04e3d7dd292f1946503b9d73b3d359bbbe6a64 +size 4624 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_upgradable_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_upgradable_mutex.hpp new file mode 100644 index 0000000..b2d7d71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/shm/named_upgradable_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69ac8e0306b2da71d3cc0d8b759c934186d7472fb83b70d1880204590a5de081 +size 15529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/condition.hpp new file mode 100644 index 0000000..06753a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:debad4e2223cdee0986c06267986d6cec3987aa4404d9491aaabe508589fc10c +size 9785 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/interprocess_barrier.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/interprocess_barrier.hpp new file mode 100644 index 0000000..cb32d4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/interprocess_barrier.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a40515d23ccace36c01248320ec11e02bc67d0253bf4df4329afb295639346 +size 1341 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/mutex.hpp new file mode 100644 index 0000000..c5c2bfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d74f841e69bb374c5ca0dbb5db9054087dec6b5a401de1199ccd1bce38931f78 +size 2380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/recursive_mutex.hpp new file mode 100644 index 0000000..f38161e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f7414e263243cda67137811fc7fed12ce511afd51a40669fe04309b2f82255 +size 5992 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/semaphore.hpp new file mode 100644 index 0000000..0486bf7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:649243cf578a82cd1bb5f01ce2289b35af2c295f61ea728caf93f7333cf4f6b3 +size 2581 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/wait.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/wait.hpp new file mode 100644 index 0000000..276f841 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/spin/wait.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23a757f1204afe2bc629ff31e0c24a85cdb85bcd1b2bcae5accfebb60f36d601 +size 5037 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/upgradable_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/upgradable_lock.hpp new file mode 100644 index 0000000..ec31c7d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/upgradable_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aecd3488ba6ec22a7bb7b6d5c55183ad93decd80d4706feb718a0e4be9c75676 +size 13082 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/condition.hpp new file mode 100644 index 0000000..c1a989f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3d4ab541008f73cd6a0575f523703b468d4142c20c3cbd71402cd12e45c9772d +size 3713 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/mutex.hpp new file mode 100644 index 0000000..42079b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ce2365a4f5ca3a5fb1959e9dec6053f52ba7dd7bff4d2affa8eaa1b800242ec +size 3357 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition.hpp new file mode 100644 index 0000000..2194a27 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54a41d11f944f106de00ad1b580b838c3554ef554d53f01b9264f7b814315972 +size 1156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition_any.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition_any.hpp new file mode 100644 index 0000000..0c832b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_condition_any.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e4a056394114eddad59a6cae971347caa41e1976df57bdfc8d0e8dd0a6e0b3b +size 7836 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_mutex.hpp new file mode 100644 index 0000000..7cbc47d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de56cb8463bb8741be24ed7b1941e4f2a3eaad677108969cbe74c9035123c4bd +size 4975 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_recursive_mutex.hpp new file mode 100644 index 0000000..cc474ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c1e796f2dd88a35694c99125ad636b8be381923884fca89cf4e7ad8bf0ccf8d +size 2025 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_semaphore.hpp new file mode 100644 index 0000000..db828f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07888e1b4a352d116226fc2dc298769ac8b8f007fab5f0b9adf3ebf5bd6a1bf0 +size 5386 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_sync.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_sync.hpp new file mode 100644 index 0000000..77c55e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/named_sync.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d589e8054fd3b1f5f4d012fbc2582ddebfcc2330f74780e11fe784d57954b82 +size 8317 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/recursive_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/recursive_mutex.hpp new file mode 100644 index 0000000..aff5ce4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/recursive_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e19c0468e384882586cf3488204662381a87ca95036096bd46650853f296ba7 +size 1394 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/semaphore.hpp new file mode 100644 index 0000000..160cf30 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22fc3918fd7018b041f60ce7ed81553ea6dccd0da075873eb49dac08f9524b2e +size 3571 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/sync_utils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/sync_utils.hpp new file mode 100644 index 0000000..116271b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/sync_utils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b415bd45826f1ca10b740f33783d4d2e28f9a21d96f2610da25ac1fe3953e694 +size 7107 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp new file mode 100644 index 0000000..6d69b73 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_mutex_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8087e7ccf759d20cd8571d1c21d2a65d56d410c9595b29fbdd86b564b231d203 +size 3717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp new file mode 100644 index 0000000..04d3585 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_semaphore_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcde9b9cb1bbd0173cc42717ca3489784e2d95982420c64a16aa7a282b7bf680 +size 4691 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp new file mode 100644 index 0000000..e30add6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/sync/windows/winapi_wrapper_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a37d03dc6089a9e76db3e3790007c32189cfbbaec275caace2de408fc3e12ddb +size 3050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/windows_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/windows_shared_memory.hpp new file mode 100644 index 0000000..2ce186c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/windows_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d7c490bb83a44bf81d8b237c2c1c3aa523e08064579cf1b0680fffe9cac31d2 +size 8666 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_key.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_key.hpp new file mode 100644 index 0000000..519e160 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_key.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f7b27f303903d59fedf41c2d4ed7b7b421d8be31c647b71d6f2ac26aff1a64b +size 2918 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_shared_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_shared_memory.hpp new file mode 100644 index 0000000..bf19db4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/interprocess/xsi_shared_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15a948da4bca6c0eaf04539ca04e428526d9a0d15d012e434312eb1255bcc1a2 +size 6978 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/any_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/any_hook.hpp new file mode 100644 index 0000000..f85096d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/any_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbc36e41c9097f9af2dbca14c2efda598e8cb72d7eb3081411d7700e8bef92b8 +size 10506 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set.hpp new file mode 100644 index 0000000..3b60dea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07eba1b780c6c0716da3652417f13ff20be4b6471a490abcc6a8e1811c388cb7 +size 44766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set_hook.hpp new file mode 100644 index 0000000..1cadac1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avl_set_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f978d14aa4a023f1fcde73519278ccf204b218657fb5815d46307c04d1bb0125 +size 10965 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree.hpp new file mode 100644 index 0000000..f37528e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a5d97bb2a9dd13d028733e7ce9ea4d651b81238adb30691c89812de930410fb +size 23816 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree_algorithms.hpp new file mode 100644 index 0000000..8bc60d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/avltree_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8e8327a828167f12fcbd6c2b72d35c85cf287f80ce66066ac11b7b36924ec77 +size 28978 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set.hpp new file mode 100644 index 0000000..e5d8623 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b843fabd099028800f32d4b2943ae9083ca6a501efb641406b9ff49063e26d5d +size 44282 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set_hook.hpp new file mode 100644 index 0000000..90031e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bs_set_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15795ff4cf9610544d8a21e18996889a7203767b8710343b1ed9656f3f239132 +size 10501 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree.hpp new file mode 100644 index 0000000..53ece5a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aa186ac2e8968c07b631f72705b5fdfd889097de02eb4e4f6a108d05677b1d7 +size 94900 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree_algorithms.hpp new file mode 100644 index 0000000..0d9d1d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/bstree_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a07e1cdba29e7a8e1f3601c205a7caf26158568c7e76292ae707c94ca4b6005 +size 80073 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_list_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_list_algorithms.hpp new file mode 100644 index 0000000..5f497a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_list_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e64210905d75e912d43a63bc5ec3cdcff8d906a952fd4498bae3d4a01b58704 +size 15376 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_slist_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_slist_algorithms.hpp new file mode 100644 index 0000000..2023a2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/circular_slist_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17abe7d42c3e93077cbb0c1ebf6583d274542650a2c65f2ece8f50fd79c5b534 +size 15029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/derivation_value_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/derivation_value_traits.hpp new file mode 100644 index 0000000..6e31006 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/derivation_value_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7392ce7e7e2e3808b1052243b6fd27b36bcd868f6c0add6feff1dc276e7253d1 +size 2749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algo_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algo_type.hpp new file mode 100644 index 0000000..2e74abf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algo_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:924e724f70b9f4acfb09e0968ab5aca4c3b81d0582723ddf74feec4788b43a28 +size 1303 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algorithm.hpp new file mode 100644 index 0000000..b50e775 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f03d12fae23e4fb81982cc9482f3eb47f2730056dab4b13039a1fe92d4f837d +size 2880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/any_node_and_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/any_node_and_algorithms.hpp new file mode 100644 index 0000000..e8708cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/any_node_and_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfb4fc629a7cdffe75b60d0c2aedb8a76378a2d6b0d940e1f8c2f707acef10bc +size 9467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/array_initializer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/array_initializer.hpp new file mode 100644 index 0000000..00c2c1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/array_initializer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5c4745c1e01c6b1e70fc5d103651fac50b35bc27ba907f7551ebfac89b6dae6 +size 2235 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/assert.hpp new file mode 100644 index 0000000..f5a2aa8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36311de238c3912eb630daa1ee1b18dbf5b5b7f867594258e28b5ae7383c4dff +size 1520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/avltree_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/avltree_node.hpp new file mode 100644 index 0000000..5e1925f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/avltree_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99f6d113429fb6d2c86c5530af083349c01467919f70e56c5fc4bd31aaec262b +size 6714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/bstree_algorithms_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/bstree_algorithms_base.hpp new file mode 100644 index 0000000..48a0588 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/bstree_algorithms_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7586cdaa5aaaa193ed794964d6b4770e0cfc70ea10a51036bfab4a1644d9db0 +size 5523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/common_slist_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/common_slist_algorithms.hpp new file mode 100644 index 0000000..d876553 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/common_slist_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42378ea1d7ecc2869115b13e9f1fabea72d81787c4a428ea08ce54e6814e0c4a +size 5974 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_begin.hpp new file mode 100644 index 0000000..817c83d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b1d9bf54b366a13c41a7af086a3e7db053d9d488eb7d5a1ba8c35f1c015a0ec +size 2456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_end.hpp new file mode 100644 index 0000000..51c77ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/config_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d2e15bca78377c31db968ed473249f5de96193ef7a165f81ca339f1aa33223c +size 496 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/default_header_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/default_header_holder.hpp new file mode 100644 index 0000000..167f5da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/default_header_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b5a2ceec55e63478d1ef9e0758aeb35e32a238c4ea75f5e0e7c0cba1cb0bd9 +size 2243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/ebo_functor_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/ebo_functor_holder.hpp new file mode 100644 index 0000000..68faf0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/ebo_functor_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:292fddb3a3cd5aa48bdc452e429a2ba0306bd70d3d07c02af6ddd9b41df463a1 +size 7965 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/empty_node_checker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/empty_node_checker.hpp new file mode 100644 index 0000000..ec8501f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/empty_node_checker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6159152c8ec9f1ac8e9f7ce685479dbdf378203933b7ac95a9f52c14cbb7a714 +size 1243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/equal_to_value.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/equal_to_value.hpp new file mode 100644 index 0000000..f9511f0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/equal_to_value.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09c664b005622f03497cecb3d4141c0793a264334abf4cbdedb37be1e79001ad +size 1217 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/exception_disposer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/exception_disposer.hpp new file mode 100644 index 0000000..adf2dcf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/exception_disposer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7473a5ad93d18b8b663fafadc06ea32fa356b556572b440a41845c854dee112e +size 2132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/function_detector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/function_detector.hpp new file mode 100644 index 0000000..45588ff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/function_detector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3c1f430d9e9612c22dc72346b24c969a3381c00b0e170bfa694c05a33eee261 +size 3456 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/generic_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/generic_hook.hpp new file mode 100644 index 0000000..15a310c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/generic_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:298f9e771414cf3e258fc074c8a49e2f25e09a4b6ac240e048a43c029d71d757 +size 6252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/get_value_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/get_value_traits.hpp new file mode 100644 index 0000000..3539b9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/get_value_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9fc7bdf8edc9933c958cfdd46cbba8c3ddc57ba5991d26dc3f5649388c7545 +size 7098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/has_member_function_callable_with.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/has_member_function_callable_with.hpp new file mode 100644 index 0000000..17308e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/has_member_function_callable_with.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2aa3b5fb03cef2a43273f15724ee14ac78fef5cee7d3b7bea3eaac3b14222a8 +size 18438 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hashtable_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hashtable_node.hpp new file mode 100644 index 0000000..d8bfc4e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hashtable_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:514c0a7f0b0b2fe8828bcdd4eddc66f8bcca3774ac18b42a28b5e0fbb6fb4416 +size 9688 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hook_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hook_traits.hpp new file mode 100644 index 0000000..8a34f5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/hook_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee060782ac3f919ffdf088e0aa6301d66b87252ff8f96a983057c8d087b68c43 +size 8240 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iiterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iiterator.hpp new file mode 100644 index 0000000..1e28a33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iiterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9c7904782390eb038b7490a6bcdbc3e7d6a8bb49bee8f9fc3f020cae2f0fef1 +size 4446 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/is_stateful_value_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/is_stateful_value_traits.hpp new file mode 100644 index 0000000..a7e4d4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/is_stateful_value_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20b930951a33734c9ab6bc1f270e363813a1900beaa612d6f659c4f0f0f7222b +size 2524 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iterator.hpp new file mode 100644 index 0000000..9dd53e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b6670b7ffcb494dca165e097d0a94a5c70c5542c377fec78e1557d5687f76a8 +size 7592 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/key_nodeptr_comp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/key_nodeptr_comp.hpp new file mode 100644 index 0000000..be7085b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/key_nodeptr_comp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b5af59071870021c0bdf9673121218877a00839911ac421247d24494cbaa7e0 +size 4854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_iterator.hpp new file mode 100644 index 0000000..5246a6c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3238f306f1f45dff2b096a78aeb4a28e04ecb03c180bc84a78562c5a59ac6103 +size 4751 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_node.hpp new file mode 100644 index 0000000..e6d362b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/list_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f50360c6199419e05b60e8c50ec0c5fd8033d2c33e169ab6fe7143b9c3dd5796 +size 2152 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/math.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/math.hpp new file mode 100644 index 0000000..331b30b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/math.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f668c404cc3465c8e3ef0473e2a7a7846a1d7813928de85fea8d18a89e624b68 +size 8044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_less_equal_header.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_less_equal_header.hpp new file mode 100644 index 0000000..aa11a07 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_less_equal_header.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:852205cff09e518acdf2fb999db38c8a412109d015381e0cbd08a6eb77e9eb22 +size 932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_pair_header.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_pair_header.hpp new file mode 100644 index 0000000..fd9ba1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/minimal_pair_header.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd1e38a2ddb283a47187ffbe2e0030d978d02610993ce0e23c7ed564481a6c2e +size 904 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/mpl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/mpl.hpp new file mode 100644 index 0000000..d28a8a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/mpl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02e3edeca56dc2654b1708b4149c53e457e10e6f40f46b59e429dd28454f0092 +size 8558 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_cloner_disposer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_cloner_disposer.hpp new file mode 100644 index 0000000..ceff8a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_cloner_disposer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:161d63bfba7b1ed25bce536adfa278f559ad951e440300ffd3cb5852dc8415fe +size 3973 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_holder.hpp new file mode 100644 index 0000000..1bda1c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92fdff27b36a354da849f90ca39a903252c3d76e5fad283ca908cd3c7b2b41bd +size 883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_to_value.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_to_value.hpp new file mode 100644 index 0000000..70ce251 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/node_to_value.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:697911c4d618b7a42f4804222bbbd2165edfd222f35413b0adc3c4b1e31ae2a9 +size 3994 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/parent_from_member.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/parent_from_member.hpp new file mode 100644 index 0000000..a8b545d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/parent_from_member.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97714b7e3bc5315211a5027d1b021efe33cd04263ec4d6277c930ad3b9724532 +size 4191 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/rbtree_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/rbtree_node.hpp new file mode 100644 index 0000000..49ec62d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/rbtree_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ab5cf4f565d36ed9d7a405565e9625b1964640e2a7336ec25ea3728c55bfc6d +size 6952 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/reverse_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/reverse_iterator.hpp new file mode 100644 index 0000000..6567691 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/reverse_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae9a56cd8b06a1239bfaceb0ae46e94541df7e6c83f1aa5b91692bab9a88316b +size 4644 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/simple_disposers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/simple_disposers.hpp new file mode 100644 index 0000000..7e157b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/simple_disposers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af034b446259ff7ef4b02f62d15dfd2878560a947311f80610e110736f0705ad +size 1177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/size_holder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/size_holder.hpp new file mode 100644 index 0000000..5786223 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/size_holder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3965e4b48911f6871bbbe382dd2e7c7a327acd05398e05e7b456bfd0c9743a +size 2261 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_iterator.hpp new file mode 100644 index 0000000..5be3b95 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb9f226444337d5da1ea97ed2e7579db94d9d021ab48c05a96ef327cded8ab9 +size 4484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_node.hpp new file mode 100644 index 0000000..095cf42 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/slist_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18622a7d9c61c3c698f0e80d532f46e38f791e25c7a594348d1065de8feb312e +size 1907 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/std_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/std_fwd.hpp new file mode 100644 index 0000000..c6e7546 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/std_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e70011af03350c4449d26ca6ad364ae6a845528ed6841cccb592cccc832e3d1 +size 1226 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/transform_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/transform_iterator.hpp new file mode 100644 index 0000000..b4fff82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/transform_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e173ca4e8e20339430394ab0482b95431fc162993fb5209fa1c3a71dd724d0e0 +size 5789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_iterator.hpp new file mode 100644 index 0000000..e3770cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d22c9780581dd7ecc3545dddd0287cf05c0cbf75a2c1755721921be3aa102880 +size 6252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_node.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_node.hpp new file mode 100644 index 0000000..aa2b6d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_node.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:839e8ab76440ce74507a3f5689fa31236bb72460fb287f61856c0a5152e71b2b +size 2307 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_value_compare.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_value_compare.hpp new file mode 100644 index 0000000..be02f46 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/tree_value_compare.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a486d57e73467c9ea52e729073a1cccee08c35db15fb7cda1bdef7ba2b4430 +size 7711 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/uncast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/uncast.hpp new file mode 100644 index 0000000..8be09b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/uncast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9244c77f070bee587fed9195f532eb76ec1a6f653036f996f983efeb81e3e59c +size 1646 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/workaround.hpp new file mode 100644 index 0000000..29a7ea6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/detail/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146ae3897ca90195125d0b0300f70cc2bf3c07b760d88e9cd3a7b7deb1d17603 +size 1853 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/hashtable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/hashtable.hpp new file mode 100644 index 0000000..69d31bc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/hashtable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:919cb236a1a8513dc9b2be6bcece7cd9f4c5bcc758c92a5274b48b5aa77913f1 +size 156279 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/intrusive_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/intrusive_fwd.hpp new file mode 100644 index 0000000..8a03e6c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/intrusive_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2d6074b46e83a12abd18ca9d2ab5ddfcfede0d6704fa145ce31b564367d0480 +size 16316 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/linear_slist_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/linear_slist_algorithms.hpp new file mode 100644 index 0000000..ea0f96e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/linear_slist_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd44a97a535f993f1108e2d99017f760b71b8218243151b6d22c28a2aeab4c97 +size 11968 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/link_mode.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/link_mode.hpp new file mode 100644 index 0000000..ba164c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/link_mode.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae4c5846fb093abb4fd51778cbaa84b7ad576352483efe86f806ca477a60cb32 +size 2091 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list.hpp new file mode 100644 index 0000000..cd0d182 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36855f5c1e68aefa239a3747442d7a1125288efe8136f879f6db6f466b1e4010 +size 57837 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list_hook.hpp new file mode 100644 index 0000000..dfcce7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/list_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a502925cbf414d777baf1d04a84ec6c30e009d78bb99c4462d1b3b72466d2eca +size 10171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/member_value_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/member_value_traits.hpp new file mode 100644 index 0000000..ccbf82b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/member_value_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32aa658c44bb06757f69a1c80a684d5c588b849f04856b6cb1838145704db008 +size 3481 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/options.hpp new file mode 100644 index 0000000..5096add --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ce4aca6b72e56661cf88533bd18511e0da995822d9fd8babb13eafc60d002bc +size 10556 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pack_options.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pack_options.hpp new file mode 100644 index 0000000..30dd125 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pack_options.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a04ca4824839ca7ba0417ac231a2174cf4320733a6f38c75fb74b7143aa0384c +size 10037 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/parent_from_member.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/parent_from_member.hpp new file mode 100644 index 0000000..cb71e14 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/parent_from_member.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e962a489355b7991ffb780b520272480f2be203cf9fe5fdc09d7f0fe2a4137ca +size 2005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_plus_bits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_plus_bits.hpp new file mode 100644 index 0000000..dd80fca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_plus_bits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03f1b537cc07eecccdd693deb435f7a44c77613aa2e9aa553b0ecc57b1947501 +size 3752 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_rebind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_rebind.hpp new file mode 100644 index 0000000..0c3ceca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_rebind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2475d55e53380d81ba28b534fb556a9735300511139388ee5481109a3f768e2e +size 6306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_traits.hpp new file mode 100644 index 0000000..3d69a22 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/pointer_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3cf3c4db57e3ce32009983923add7195d4c1bb081fcf9f7f611c9716ec55af3 +size 13506 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/priority_compare.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/priority_compare.hpp new file mode 100644 index 0000000..f75a2a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/priority_compare.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c0c8f35f72d37575344663ee7fd742e924b2abc49ce38a4061b9f39205592ec +size 1802 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree.hpp new file mode 100644 index 0000000..230eace --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:866732b530e823a779c9d981c062f8fd85c8b62308194586fc1740e60f236d06 +size 23937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree_algorithms.hpp new file mode 100644 index 0000000..03cacac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/rbtree_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95f4f149a2eb7666d0920f05a85377cfd7a423ee0e2a687a34e2dbeac1afad40 +size 25946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set.hpp new file mode 100644 index 0000000..53a7afa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:425a19dc17aaaa18a6f03a214df273a5456f55dac5b19e275daa7f09cdc29ff7 +size 44135 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set_hook.hpp new file mode 100644 index 0000000..8170cf6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/set_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6e89429c5dcc45515ae279e15fbe37a23588f33a4082f48b1a9f465ffd3aec +size 10812 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sg_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sg_set.hpp new file mode 100644 index 0000000..e070c1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sg_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af034d1a356c13b2f6cddf43c30326833e53d6f390a427c705b99b18973694ea +size 45113 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree.hpp new file mode 100644 index 0000000..2a6f7e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76811e66d7d0b9bdd60351d62ad3f199f0ccab89c9b3e62a7995c10855f0792f +size 41585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree_algorithms.hpp new file mode 100644 index 0000000..9d77d44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/sgtree_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac417f95d3d2b62bf1bed41bc9b8c50150d2bd6417f05552e51399fa7c936953 +size 17515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist.hpp new file mode 100644 index 0000000..00dc5de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e638536983a62914ee055c501e841a4eacda85911d4d68712d51721f1f609c4 +size 88224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist_hook.hpp new file mode 100644 index 0000000..61a02bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/slist_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:553149869396df951058b837a48290553e169441c526ccf2a16af02ea626f49c +size 10868 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splay_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splay_set.hpp new file mode 100644 index 0000000..7b1f85c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splay_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c37fe5ced987b44b12a2cc63c592358fd7eb6d98228dad9bed3ed51c596f69a +size 46919 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree.hpp new file mode 100644 index 0000000..9df49ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1a5a62fa067ec86d574f692fc514a4065dada63a5f0930154feb66bbbbe55c +size 28017 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree_algorithms.hpp new file mode 100644 index 0000000..be42510 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/splaytree_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0766ed3c3f8df28c5bbcab4d19d310ac0bd8bd0ea8e0d422276d69568ead6850 +size 29751 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap.hpp new file mode 100644 index 0000000..54b6d71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f45a19a8f12c74643e3e0f6d3946a55ff5962e5008f164f5c2f26c0dc6f6006d +size 57269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_algorithms.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_algorithms.hpp new file mode 100644 index 0000000..2488c88 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_algorithms.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db8fc49fdf5207ff14b03efdd60cdbe0c55711fee7699e548f41cbce5ddf639a +size 29213 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_set.hpp new file mode 100644 index 0000000..2569a63 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/treap_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ea2f91a45e0c81759ebc2cef9b674c912e31493f76946c9094653adcadb5a0e +size 45953 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/trivial_value_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/trivial_value_traits.hpp new file mode 100644 index 0000000..96bd5f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/trivial_value_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef3a843789481810294836555134af26fa7938345c34a3865d4fb99c39ce8c37 +size 2381 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set.hpp new file mode 100644 index 0000000..9652b8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdbe9712239d47adf6272955e1ead3b26a83e53fff95f7321b55d63604edf238 +size 45070 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set_hook.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set_hook.hpp new file mode 100644 index 0000000..b1af02f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/intrusive/unordered_set_hook.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80e3540b962fdfcdf633773b02d7f0b02e06fb9f810eda923f28a8d09601f7af +size 16518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/is_placeholder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/is_placeholder.hpp new file mode 100644 index 0000000..d99aac2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/is_placeholder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5732a33a6201c9377956813d6bb5826391a726c7093fe21991ac75c8977991d +size 634 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/limits.hpp new file mode 100644 index 0000000..118169c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a87ec55d61dcdc5d8cfd17820debce7928a88d3f62f99fce8aa456ba6f39b601 +size 6146 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mem_fn.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mem_fn.hpp new file mode 100644 index 0000000..bbe58c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mem_fn.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a534ea3dc1a654f1821cd494470f04f70d5d01e5f1f2e5c36cec8707e4ef15c +size 596 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/adl_move_swap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/adl_move_swap.hpp new file mode 100644 index 0000000..f7ac843 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/adl_move_swap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf18c5da46ad1c7e632f10b96a7330b335623f36594cc067194d9dbd74815c2f +size 8061 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_merge.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_merge.hpp new file mode 100644 index 0000000..0887aa6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_merge.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9cd47f940a724785b4cfa0034e4970c3de7ee040c61316eb7ab73a7a825705d +size 15696 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_sort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_sort.hpp new file mode 100644 index 0000000..c5eed0c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/adaptive_sort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2446a6b5551a3204e2c404c88b589cc3a2721b7e09aaa0d1eef96b125fa79082 +size 28466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/adaptive_sort_merge.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/adaptive_sort_merge.hpp new file mode 100644 index 0000000..1e5e9c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/adaptive_sort_merge.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e873dc080f04f4af218843acd1f8c4d7bd9972a674b43b003f4a1660b01e7147 +size 59949 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/basic_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/basic_op.hpp new file mode 100644 index 0000000..bb184d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/basic_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e57c7987a84c4d37e9600e247af4f12f1819f01e8427c025176e91c6423cd21 +size 4637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/heap_sort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/heap_sort.hpp new file mode 100644 index 0000000..80aebd6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/heap_sort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84e53dfa9f6df189ce4049cafa593160ef8ab0b65238c8939a172d2af18f8da9 +size 3655 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/insertion_sort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/insertion_sort.hpp new file mode 100644 index 0000000..5632dc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/insertion_sort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd979653033477ad7c8095fb9e9a16074f246bae10aa9a16d54da9672a148196 +size 4387 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/is_sorted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/is_sorted.hpp new file mode 100644 index 0000000..2bc194a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/is_sorted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4ffc671099e654236445f11715a63d365ce86c67d5b45f2793434dd7d7db315 +size 1383 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge.hpp new file mode 100644 index 0000000..0569724 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8444975136efa3142703349de778fc32d6399ba30c6bf4caf9e2379d405c791c +size 17190 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge_sort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge_sort.hpp new file mode 100644 index 0000000..0da2035 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/merge_sort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5782eb631bfbeb214aacb718da7f360f68ddc25cdc7ae1cb7539d63f576630a +size 4601 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/pdqsort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/pdqsort.hpp new file mode 100644 index 0000000..acfae17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/pdqsort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7426e68da19e942d3dd5aedf6e7d1b28a7d10d795daa72383e714a6883e2f18 +size 13910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/set_difference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/set_difference.hpp new file mode 100644 index 0000000..61d03df --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/detail/set_difference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9828ebe795c9c7120a7602d73d1de42e5bc0f0ebceece86b0e484a0b601e4a +size 7316 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/move.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/move.hpp new file mode 100644 index 0000000..1cd8ac7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/move.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b71d3cd47bf285ee53c19754eaf7a4eff521be3b49b9a0d8a6b0f8176c496f48 +size 4725 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/predicate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/predicate.hpp new file mode 100644 index 0000000..17598fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/predicate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a289368a42a0c2d7ff78b9576184a999252f4d700bd993658a5a13295b6fd6a +size 1722 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/unique.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/unique.hpp new file mode 100644 index 0000000..4e8d363 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algo/unique.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:689a8d5cf485fbf0ea19e329f6c8a343d96dc895ac062a54abe52b18106f3616 +size 1896 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algorithm.hpp new file mode 100644 index 0000000..605dcff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:157d4907cd5e3131a0f4a7efaf51c766f4480819ee0c12226b22a7b5a2e8b4bf +size 4934 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/core.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/core.hpp new file mode 100644 index 0000000..5981203 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/core.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f42d48959eb3d4caf80477509da4e4f9a9ff84bc4e2ad250cc6ce4d0479eef3 +size 15369 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/default_delete.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/default_delete.hpp new file mode 100644 index 0000000..fa60df4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/default_delete.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7554c40b6d48ea15b998cc256d278cd2a5fa634125dc2ee067fa4e3e96748ca8 +size 7544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_begin.hpp new file mode 100644 index 0000000..5cb300a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5da2f6f1dee2a4d128bbb3d3189c1861b34a979071dfaf2ded679f95715b7a26 +size 1008 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_end.hpp new file mode 100644 index 0000000..bec5b9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/config_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:448a5c06871396d7bc0f2d8ac4d846c4139da36d944e90c7a99283e936d45f0f +size 473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/destruct_n.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/destruct_n.hpp new file mode 100644 index 0000000..7242a19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/destruct_n.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8cd5d4e99d852780569df23397f0d830db2f91e6ea4f648efc05ec4ca3992fd +size 1233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/fwd_macros.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/fwd_macros.hpp new file mode 100644 index 0000000..0f2bc4d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/fwd_macros.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ed3578cbb31ba1cdf7cef76f6c3de1e37741abd50455c2c7b06b47054ee5c83 +size 42861 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_to_raw_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_to_raw_pointer.hpp new file mode 100644 index 0000000..240fdc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_to_raw_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3fa4d572c214ff41dee704e59f5b354a540939a2706e27170229308661b5103 +size 1758 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_traits.hpp new file mode 100644 index 0000000..c4cea1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/iterator_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88e48c8642adda3342b4d470f41932d3269a9101e5625c78900bfa9275d99ba5 +size 2462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils.hpp new file mode 100644 index 0000000..62982c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4578950892ec71f18ba81f1b8ff451c91b9e628bf21b8603d8ca290bcf4b21fa +size 15530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils_core.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils_core.hpp new file mode 100644 index 0000000..efa9ba2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/meta_utils_core.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e419c336b1b2d747601603064c1885b26bbddbddfb94bc8c284727b16fd7a63 +size 3225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/move_helpers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/move_helpers.hpp new file mode 100644 index 0000000..77d2ab4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/move_helpers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:870846ad2fb68a57168b80ea2d3e4d88689fe99710c069e2c0e68eecc1481771 +size 11990 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/placement_new.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/placement_new.hpp new file mode 100644 index 0000000..9a6c39a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/placement_new.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:711a959b81852bcf19a804bfed34f72ff2979442c05d558501c892c96799588a +size 884 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/pointer_element.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/pointer_element.hpp new file mode 100644 index 0000000..bdcca7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/pointer_element.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6049330bbae3883fab64d2fbf5286c5374328299be384edc3436afab3d8bfc1f +size 4948 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/reverse_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/reverse_iterator.hpp new file mode 100644 index 0000000..9065577 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/reverse_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b49aa3294554153c3f4379e05095750b11b617f1e7cd8fcade69c689bb46804 +size 4729 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_begin.hpp new file mode 100644 index 0000000..580aeb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1669ddc5d448ab22499fafffd471d1c64ad1744fe49f014e85fd841c176207d5 +size 1344 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_end.hpp new file mode 100644 index 0000000..b5b1a26 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/std_ns_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a663bf31551458a61b65c53631245373e940a0fc59f169a1003c8290428bcded +size 604 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/to_raw_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/to_raw_pointer.hpp new file mode 100644 index 0000000..d1507a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/to_raw_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9ed24fe7bba6ee62b95de96869096573e0356ea229d55d4dfe58dce9d7b1e14 +size 1245 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/type_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/type_traits.hpp new file mode 100644 index 0000000..8c61364 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/type_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:852b1d10805a39f4ca889eec914827d04017482bd93026cff586ab4f824c6a14 +size 39897 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/unique_ptr_meta_utils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/unique_ptr_meta_utils.hpp new file mode 100644 index 0000000..eeea9c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/unique_ptr_meta_utils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bf495a004563d10f67c7fef2eec2b69ffb3f3cbcb9525441d5a9e88d6990819 +size 13362 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/workaround.hpp new file mode 100644 index 0000000..751b14f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/detail/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae454f6b7851dc4c3e48811b8818493eab40fb7d68d3374ca3c7e52f0c4d7241 +size 2444 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/iterator.hpp new file mode 100644 index 0000000..95aaadb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dc1aa088cf334f672e7d8a7af9503d5222c9ac84d46b6a9229a3616ace55e73 +size 10385 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/make_unique.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/make_unique.hpp new file mode 100644 index 0000000..58be03d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/make_unique.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e332bf53c04692d7652868c8867e28ea3578b53c26314e6ba5b5f9e76355a7e +size 8588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/move.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/move.hpp new file mode 100644 index 0000000..c7a73d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/move.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:905bbbded7462abe236685b7579a16f213476fb3a1b9d59456236ca971781a37 +size 1010 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/traits.hpp new file mode 100644 index 0000000..8ecc27d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdb2cf2d368e6601d11c0a9e1b89406736442deb83b21318bfee84d7f734617c +size 2554 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/unique_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/unique_ptr.hpp new file mode 100644 index 0000000..49f2b36 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/unique_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9f7243f666025866a566f007fb692a47aae07bb0c1c8352f790819742b6096 +size 39216 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility.hpp new file mode 100644 index 0000000..d245496 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af7d8e4a4fbbbea7a20ae0c65428d0e8850fc89d27cd7f81b21cf1e0eaadee8e +size 5406 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility_core.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility_core.hpp new file mode 100644 index 0000000..14293b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/move/utility_core.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e49ed00398b570f264bea9f1b3c8b9b3a57362396c51a6c3ddc209a3b2daf54d +size 11145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size.hpp new file mode 100644 index 0000000..70f15ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40a06d4f749e0c1404a2a59583dddbd24226ef93471c15b767c730ef71fc67d6 +size 1003 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size_fwd.hpp new file mode 100644 index 0000000..d1f47bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/O1_size_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d127e33b43b9f87605b4bc9c940681af8e4bf76a3616dbf27a8579f412fc4bc1 +size 559 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/accumulate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/accumulate.hpp new file mode 100644 index 0000000..8b3ed41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/accumulate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80915142292fd93b330eed16505642c222b96014e40f590520fc13e8955b4d1e +size 946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance.hpp new file mode 100644 index 0000000..8ae24f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c466196f8ca4798a4c6354472e138f003bbe7ea6ae9237258fa1758b5fffc6c2 +size 1955 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance_fwd.hpp new file mode 100644 index 0000000..2d8ec71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/advance_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d6acc3e465cbb29e8e45dc7ce490e3b9d0109939d2807d751bba194ca375bf1 +size 660 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/alias.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/alias.hpp new file mode 100644 index 0000000..11f4a6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/alias.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfa2ff02983cb0fb30c3f16a60493599769b853d702e83b17db028225b93966 +size 452 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/always.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/always.hpp new file mode 100644 index 0000000..b2fed1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/always.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e18e07eedd427a41d8317dadd64d3658c063f494720b343d6a9c2782555737e +size 838 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/and.hpp new file mode 100644 index 0000000..c82a0b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab93bff72198182b820ee2cc113bc44a2d0af39545d5a02c106d782a2cc00aa5 +size 1593 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply.hpp new file mode 100644 index 0000000..46e422f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:587250723d6cea665a01bac6b28c0243b6a284fe02ec251298a4360675926e7b +size 6087 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_fwd.hpp new file mode 100644 index 0000000..8a32e09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5025b30bf1299fa05c599312c9d02c7b023c03bbe85edf305fe502bafbd71da +size 2663 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_wrap.hpp new file mode 100644 index 0000000..1d445b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30375a817bb6ebf062cd2858a76ec568347b22c9b86f6071ededee1b79562d10 +size 6177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg.hpp new file mode 100644 index 0000000..eb435ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02335a98117d161983fb9a30b0f77b1e3178e927fb9ae3abc173c15192159d3c +size 3216 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg_fwd.hpp new file mode 100644 index 0000000..6a904fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arg_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d4c5805d025a2e07b6bc03ebb520accdd31cfe41768cfca9829cbe1f4125d28 +size 711 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arithmetic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arithmetic.hpp new file mode 100644 index 0000000..9d74928 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/arithmetic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aba8c2ea7ef201c0a022292ee264ccca2890c2903b91fc3ca7ceb83b8abb6c8 +size 665 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/as_sequence.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/as_sequence.hpp new file mode 100644 index 0000000..02a16d3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/as_sequence.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e3461aa59d26aa12bfc17edea7785740d451203207995d72e03d9d7e78f5a9c +size 879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/assert.hpp new file mode 100644 index 0000000..21b5198 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f1162bb402a06e235c56049606ac866362faa591f254bc53f69f4c4df8dc66a +size 14739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at.hpp new file mode 100644 index 0000000..bb98ae8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8143c6adde38c7c0935ab4d15961877dd8b33174637b142228988d6b4938db4f +size 1201 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at_fwd.hpp new file mode 100644 index 0000000..29fa174 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/at_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc32acd79480d78e0980cef4b4e54176035335c0b25cb1f4d5f2f5c1335484e2 +size 546 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/O1_size_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/O1_size_impl.hpp new file mode 100644 index 0000000..8e7bdb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/O1_size_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4be7ed0a8cc3176af832acb6659728754c56945a4f01ea8ff68282e628b9027e +size 2104 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/adl_barrier.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/adl_barrier.hpp new file mode 100644 index 0000000..5a9b3c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/adl_barrier.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28814ccd677294dfb0fd2d9a89153206e40dead79a96319fdf9bf951d402bf9c +size 1559 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_backward.hpp new file mode 100644 index 0000000..c927a8f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34ce63a6d5d78f88c3e0b5cbbd54a543fed89a92b63b97c784ef50e0e4c1c102 +size 3419 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_forward.hpp new file mode 100644 index 0000000..e7d5727 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb3632ca65632df6b7a3c3a319ea3292552141701795acf3260ff54282f38e86 +size 3338 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/apply_1st.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/apply_1st.hpp new file mode 100644 index 0000000..da0d484 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/apply_1st.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a7d50a83dad8aa45f7331618fb198c86f6fe99483dccca9db6e759652b9696a +size 731 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arg_typedef.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arg_typedef.hpp new file mode 100644 index 0000000..5b392e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arg_typedef.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:271a886b775714e3fe472e36867eb8de511b844ef344677f0075d81d3e48bceb +size 776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arithmetic_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arithmetic_op.hpp new file mode 100644 index 0000000..6c3a6d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arithmetic_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df3905c6777bc27bcd55c42a65ab05075ecaa28e4727f9e850adb6931c3d9e5f +size 2441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity.hpp new file mode 100644 index 0000000..fa4ac0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:faa7d7ad0317c59096b66583e4e4f2dc5b03e41b452c6c4d55f887852e98b8ec +size 1095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity_spec.hpp new file mode 100644 index 0000000..9c35431 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/arity_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dcfb0143f18a92af5e7daf2900831f3470a31e40cb0727fb274dc86760aaa4c +size 1832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/at_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/at_impl.hpp new file mode 100644 index 0000000..233f171 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/at_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bec2e9c3422ea9e10e23041931ef75b6d5dcf51c13389f661a86251c48c7f00 +size 1091 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/back_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/back_impl.hpp new file mode 100644 index 0000000..9e13abc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/back_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3b1ff1036279d7865309b06cdc5603cc61f34bac896a760356fa1c936262ac9 +size 1121 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/basic_bind.hpp new file mode 100644 index 0000000..4159272 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2773857d56c28dfd791e45b6bcc41761ce8acf4e1aa425b56e6de41b6ffee9dd +size 550 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/begin_end_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/begin_end_impl.hpp new file mode 100644 index 0000000..85cc2cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/begin_end_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4822b6ae1e478f69fc2f1ce6d7b2eafa4e64b7ea573a998e6cf5c8a4e98996ba +size 2643 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/clear_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/clear_impl.hpp new file mode 100644 index 0000000..7fba918 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/clear_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f43aa6c6786a806b2fb1400d2ad83e32e678f8c1a9bffbff9687d90606c87cf6 +size 827 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/common_name_wknd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/common_name_wknd.hpp new file mode 100644 index 0000000..55abe29 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/common_name_wknd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b065568c976ed60cb043806b8a53d0393bebb5ec68a4eb27834c14457450632 +size 873 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/comparison_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/comparison_op.hpp new file mode 100644 index 0000000..b4d6f3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/comparison_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b34d2c80f52dded1b913a41a3d3eb9ffe6d9cd85e2084bc9a107e65376e23d9b +size 2153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/adl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/adl.hpp new file mode 100644 index 0000000..230f71c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/adl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9925bac775bb4f047a9bffe62ad78cb3e758f96a36944154b5908878c807b08c +size 1416 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/arrays.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/arrays.hpp new file mode 100644 index 0000000..8d1be7f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/arrays.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5606f2db867c019059c174a8fba732ebb380e3e03c35bf48eb1d2cf3f0366cb +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bcc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bcc.hpp new file mode 100644 index 0000000..341e4aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bcc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41d9e982226decb468ee6f06ced5095065806fba76c70733740249118e5bb572 +size 801 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bind.hpp new file mode 100644 index 0000000..4018aec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fc50506b59ea546ec7d871b81716710476a1cfe5dddb2565faa541466dc7041 +size 898 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/compiler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/compiler.hpp new file mode 100644 index 0000000..fe08aae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/compiler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8517de8c73498d197b6bcf0d00e5a38772b7bda20f32790451b70d1489832a8 +size 2134 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ctps.hpp new file mode 100644 index 0000000..5850ffb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:647db56e21aebe52eff988315453aff1bdc55c441b27f94e183636bf7c7dbe96 +size 823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dependent_nttp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dependent_nttp.hpp new file mode 100644 index 0000000..73235d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dependent_nttp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74357aa79278eba14434db8003bf9a72b19ca798d193e4ebf20dc0b229fe7228 +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp new file mode 100644 index 0000000..481f72b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dmc_ambiguous_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d977c60e0033701b04651a0c865ec27472db4ce9eb8b941d394ccb7c38b138bb +size 736 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dtp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dtp.hpp new file mode 100644 index 0000000..15b40c8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/dtp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3726a59fd1c71d3ea36a3c87269724ab0eba128f35c7bbb061416f0491733f2e +size 1571 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/eti.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/eti.hpp new file mode 100644 index 0000000..e5e295f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/eti.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cc8dd5b9009cd8af39c18ef8ae8d2bb210d69197b39f9bbe66cbc7e94e82f87 +size 1235 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/forwarding.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/forwarding.hpp new file mode 100644 index 0000000..937ef7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/forwarding.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:539163823886431eb657622930b4d0b93c3c5ac316e3823995fd0157e15c830c +size 721 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gcc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gcc.hpp new file mode 100644 index 0000000..a9e6778 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gcc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78f78e3e42144452a092c06969eed8723b081a9faf0c1860013d774c63f83179 +size 591 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gpu.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gpu.hpp new file mode 100644 index 0000000..c4ca991 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/gpu.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5502f35db9b0ec14c1ed38caa7efc2b7baa123600b5533d8e5f91ef99de11bb2 +size 666 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_apply.hpp new file mode 100644 index 0000000..899560b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57a0a58f43e03b4e7435db61ba0801dbcada1c522b8905da39b70edfa7df3299 +size 905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_xxx.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_xxx.hpp new file mode 100644 index 0000000..c04e90b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/has_xxx.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19e2087e31f5302aca7c9930f01963c414504a1fa2f416b7d9aa1a65ca36aac6 +size 973 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/integral.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/integral.hpp new file mode 100644 index 0000000..101d4b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/integral.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5490eafc60e0eca258a0767371fe76e85d4ee075261a55774653edbcc8fa80cc +size 1045 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/intel.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/intel.hpp new file mode 100644 index 0000000..0af7451 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/intel.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ce4ace676be390de349b31f000af18d49c953e12ffc91c882ee632f1bb4cc2a +size 511 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/lambda.hpp new file mode 100644 index 0000000..2c82444 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec9f4e943fb91987e5156a11ce26184d9fbaa426f79e5ad3b6aac148486a114e +size 910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc.hpp new file mode 100644 index 0000000..3f22288 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62eef1e28b4ce6ca35d07ece37b8bb455289f6ac4c774ef193a4e5741b0d06e5 +size 500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc_typename.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc_typename.hpp new file mode 100644 index 0000000..d0ab2bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/msvc_typename.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b5029e579609be6e766019d5d306e72bd1db06bcc616c3abc661f6bc8b737a5 +size 684 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/nttp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/nttp.hpp new file mode 100644 index 0000000..03e68ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/nttp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9073ecf730c3a0993cee681ad5a2cef4669cb13e0afd640de26861d38852715f +size 1009 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/operators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/operators.hpp new file mode 100644 index 0000000..4473452 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/operators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02874c1d4c566bf7fce46e554241b17c208528d40832741f2eeff799c41f4280 +size 1069 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/overload_resolution.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/overload_resolution.hpp new file mode 100644 index 0000000..3f58a28 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/overload_resolution.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4494fcb883f35349c2fd58cc04feb2d6fd354ec8368b8a4d84e5449253f231f +size 818 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/pp_counter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/pp_counter.hpp new file mode 100644 index 0000000..4ffe265 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/pp_counter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd7e219c68e112ead0278404c1a9dc507e8710cb7fd23195d61165c95638ab1 +size 713 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/preprocessor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/preprocessor.hpp new file mode 100644 index 0000000..21b2243 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/preprocessor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8050169b5c3d262396d537c4462d0cb4a7071a98309f121efc9a63e5c16caa4a +size 1109 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/static_constant.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/static_constant.hpp new file mode 100644 index 0000000..4fb82ef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/static_constant.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aca83823971e4b9e0db4deb81dd96e79b2851e00ded38e7a306bbf8f5d268ac2 +size 680 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ttp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ttp.hpp new file mode 100644 index 0000000..2ee283f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/ttp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b023d0b51d1ae092e5b5226f6558211ffc5258b5f55954a88f3ff3263d90240 +size 1168 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/typeof.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/typeof.hpp new file mode 100644 index 0000000..9a036fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/typeof.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bb385b553bc6481cc5fc4e5e2796e30db4358013f139d51ad1d3243409913fe +size 961 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/use_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/use_preprocessed.hpp new file mode 100644 index 0000000..9e53189 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/use_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ef95ff5065ffa6144d9c562d71f082ac8091b19ecf3670b7682b18fb9d921d6 +size 525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/workaround.hpp new file mode 100644 index 0000000..40f3a54 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/config/workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57b4a97e529b168efdeb908260c55002e2569c58c98ea23eff68448dca92a4fc +size 497 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/contains_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/contains_impl.hpp new file mode 100644 index 0000000..1a57c56 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/contains_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0273c6d51fcaa928bf01e7e157e03cff606a7bc9336402da8adf4e2ac5f72abf +size 1572 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_args.hpp new file mode 100644 index 0000000..79bb75b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9960bd368e3e6a4a58e63497a60d2ef3d93a404837521b4aaf1afa5cb90fd617 +size 2937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_impl.hpp new file mode 100644 index 0000000..6b74545 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/count_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0063a15ea2b5074972ad8b5248488f7b721f3968551002c0c9e8b4e413966c0a +size 1173 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/empty_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/empty_impl.hpp new file mode 100644 index 0000000..a275284 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/empty_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ba30f4f6da6aee65c5e27eca847c13fddd988e1e03edfe11ce0f5bd81780eca +size 1059 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_impl.hpp new file mode 100644 index 0000000..e443445 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b07906f60cfa1989444253d71253f5c559844bd4d8c1bc35398532a81445471e +size 1767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_key_impl.hpp new file mode 100644 index 0000000..05e6683 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/erase_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d241a158e9a860ca593d88f470b409a18b90df6c8d613184f7031fced440db1 +size 749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/filter_iter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/filter_iter.hpp new file mode 100644 index 0000000..c4ea598 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/filter_iter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5464e770eaf8291cfc1ab18afc0fff51c05536f23d1951b97cc665dc14d54c5a +size 3017 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/find_if_pred.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/find_if_pred.hpp new file mode 100644 index 0000000..da9a27a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/find_if_pred.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:605af1ac25a01a935e6d2c9e979b1ba86ca1776da6baaf8f12189905ba862770 +size 756 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl.hpp new file mode 100644 index 0000000..09ba669 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3769cbc4b6339d0c6c2c9864c2b7606770dfbc758ba093a58dfe9419735c20a +size 1271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl_body.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl_body.hpp new file mode 100644 index 0000000..b62d0fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_impl_body.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f66741413b2173ca02eaf6b7d03496fd69e1db4bdc9a1e54322e14f921b7ebe1 +size 8938 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_op.hpp new file mode 100644 index 0000000..8921084 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07440ffece526c64690a52e50fd47d5d101c54cb0dbb0c8e11d60d881c385c1a +size 822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_pred.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_pred.hpp new file mode 100644 index 0000000..8663da7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/fold_pred.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee570a6d5f1b9777455d16b7cb677088a8ebdce6ab8f3c41d0dae648d7ebc3f3 +size 764 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/front_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/front_impl.hpp new file mode 100644 index 0000000..f07409d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/front_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e979b5c38d8a720a0530dcbfaa14a1fea8f6e34d13f9c6a1dae8d2a9d8326f9 +size 1032 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/full_lambda.hpp new file mode 100644 index 0000000..3cf39dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc55ed5e16cc10217a6953b1cb90ac3c9fc254d82637122ba50089958f439651 +size 8796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_apply.hpp new file mode 100644 index 0000000..8af4e75 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c63998ae37b2a7922f66845fb6fae1fd7aa9658ec0855a3a99aa3d68d67bb8e +size 767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_begin.hpp new file mode 100644 index 0000000..a4cc0cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df7faf3ad4060d3ff0685cbe0de686187adf57b24e8960f35900bf3969221fef +size 580 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_key_impl.hpp new file mode 100644 index 0000000..53f14fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a2fb65038033de53a0f3fdef0f2090c3b643052fcc3518056a95d142de036e2 +size 856 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_rebind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_rebind.hpp new file mode 100644 index 0000000..cbbf8a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_rebind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f35d586a5864947c5cf01241578969cc7005f899e4c3059c035ab0f3e527e9b5 +size 2563 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_size.hpp new file mode 100644 index 0000000..fb61c53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c2e82715f4adb91dd433a659dda944410f520036929252680e1274c706a5a93 +size 553 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_tag.hpp new file mode 100644 index 0000000..8a03e73 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bc2cf30e239b7cd12311273d61747e44f7c730058a40c955f36fd8685bdc5ba +size 571 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_type.hpp new file mode 100644 index 0000000..548c7dc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/has_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:851cccbd90893edcbf92f1834c8a2bcfe1896c8a4639b4c4ffc54261656eb002 +size 575 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/include_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/include_preprocessed.hpp new file mode 100644 index 0000000..b55dcf2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/include_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:794b0971976e1b15dc6f55c236347d61e3eacf8f56334934797b184514767a86 +size 1333 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_impl.hpp new file mode 100644 index 0000000..ab3be22 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11f35bf597934768b2fd33bc0f28107e48479c8ffa7aa4571326c9f5c85750e8 +size 1714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_range_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_range_impl.hpp new file mode 100644 index 0000000..b101971 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/insert_range_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1a434bbfc8a310cedd1666c891e53024041282df5e987ac0c0e34dba8adeecd +size 2225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/inserter_algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/inserter_algorithm.hpp new file mode 100644 index 0000000..db4149f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/inserter_algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f557102c3628d7c1afff2b39541855ce6034a617cb050bbc678527951c57039 +size 4816 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/integral_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/integral_wrapper.hpp new file mode 100644 index 0000000..df070f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/integral_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11a7707ca0672ba04948e3c16439cf0dad5cf68466790053a299f3e0f14dfdae +size 3519 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/is_msvc_eti_arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/is_msvc_eti_arg.hpp new file mode 100644 index 0000000..f1b1082 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/is_msvc_eti_arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa6d5ff41d835623d1d6accdc5b43a0d367e4547a9a766eabf414d4319bcf49d +size 1318 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_apply.hpp new file mode 100644 index 0000000..bbb48f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac3ab1f8ccfcd608a47e81b03d83dfa59ce7edd74ee9e014e0365e2de3c3f8bb +size 902 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_if_impl.hpp new file mode 100644 index 0000000..fc967e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:504cc50396ab3fb279125964afae98e737f77788b2019557833c8e5d7e46753c +size 5848 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_impl.hpp new file mode 100644 index 0000000..6b593d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb1e3d1f19fc2970d7f9cd1eb3d7c487e8d19ad5bbdfb95223ffb89eae7c7109 +size 1240 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_push_front.hpp new file mode 100644 index 0000000..9c1e426 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/iter_push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fde88965168ff488013f9e09870a6c2d45830528fd265372e3066bd018db054a +size 771 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/joint_iter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/joint_iter.hpp new file mode 100644 index 0000000..6dd0e94 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/joint_iter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72af6017555d0bee6491ec4072cfe8a373dfb65539af85ff75ed2029829a0be3 +size 2877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_arity_param.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_arity_param.hpp new file mode 100644 index 0000000..c2f8008 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_arity_param.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82201ea0f099ce7e82f5d4c7927bfbde4622183ac2d0e464824ccbd10ffe83c5 +size 696 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_no_ctps.hpp new file mode 100644 index 0000000..1206f9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1e9d5db37494af834b2563056fffcdacd3adca41a8bb525a3d98b686b066df2 +size 4941 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_spec.hpp new file mode 100644 index 0000000..3e2722d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942995a26c98a6bcde38c44e2c2963b4337e5cb2f4df63f0e83c17e63e7f1b3f +size 1214 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_support.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_support.hpp new file mode 100644 index 0000000..6964c2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/lambda_support.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c3344a92747cc59a328ea5540dda6b3c438463450699973156ebd0e01b209d78 +size 5360 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/largest_int.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/largest_int.hpp new file mode 100644 index 0000000..f7f29a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/largest_int.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58937436c77e3ac4c8fd2e74adea3e5f63c964e8ae40f848e477dd897f745504 +size 1979 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/logical_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/logical_op.hpp new file mode 100644 index 0000000..c26fe7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/logical_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56e299e3830a2c7b3a51c1c05136fc7ba631f4717d82656a97296d8d4463eaef +size 4535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_dtw.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_dtw.hpp new file mode 100644 index 0000000..34c3f09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_dtw.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0608de0ab8b1c1427d5ac35c8f355f13f88c19011855b9bb1082477d0f127389 +size 1742 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_eti_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_eti_base.hpp new file mode 100644 index 0000000..7bb7c5b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_eti_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cae124f0900ed31baa4c4b101adfaaed0865826aefbcf15399e8a2aa75e74ca +size 1668 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_is_class.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_is_class.hpp new file mode 100644 index 0000000..1e3bf36 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_is_class.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62906f70658a2695fcfa56026eb43288ff6cffc8cbfb3be336e269478649cecd +size 1485 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_never_true.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_never_true.hpp new file mode 100644 index 0000000..69a43dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_never_true.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14d46cdb7de3df47a25462d2ae9174c2b029c74c4d3863099a834373672f54b3 +size 743 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_type.hpp new file mode 100644 index 0000000..1dd0656 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/msvc_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb544779c6e481f1c184ffdb77ea798177e87ab344fd8635713efe5122f8b1a3 +size 1207 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na.hpp new file mode 100644 index 0000000..938d383 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a47d9e372cb112a19823d8ddf5c94ee8b10138d28aa868239ed869ac34c0bf9 +size 1645 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_assert.hpp new file mode 100644 index 0000000..4e4ed04 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:459002c840d1c3a98bb7bf5d217d6da1295a2001742e9d515b63ffe054459bbc +size 958 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_fwd.hpp new file mode 100644 index 0000000..32929fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a632e53451b552d1abc6c9118f407a083f8f9ffdd093503de79024fd4b163a04 +size 673 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_spec.hpp new file mode 100644 index 0000000..9a615ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/na_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0d448d10de6efb7bad24e344ad386037eb667137c1eebf6c3f0b406cacde540 +size 4449 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nested_type_wknd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nested_type_wknd.hpp new file mode 100644 index 0000000..3fe3255 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nested_type_wknd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b91a2a88e5bbbe78da3a9f5447b31a9af46a07e9852d1ba8a722360d285f9422 +size 1264 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nttp_decl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nttp_decl.hpp new file mode 100644 index 0000000..fb0e4b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/nttp_decl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:809fb409f57a2a5f679758b8ceb5f31ab1c15789217c36c427a7e944cbf133e5 +size 844 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_cast_utils.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_cast_utils.hpp new file mode 100644 index 0000000..ad285fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_cast_utils.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1098c0dde9eb148c63f2e5aef52fa4f643601ccf8f19908bf95dd56ef7732a4e +size 1763 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_op.hpp new file mode 100644 index 0000000..e24c4b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/numeric_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41bb548b53aa7ca69201812481e19611081544cbacb56ffa9e660f8190fbbfe1 +size 8489 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/order_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/order_impl.hpp new file mode 100644 index 0000000..1a202e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/order_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b882f1f38e2db57d8a3a80d96584315285ad30cd119daefcafc06546ff6d6b79 +size 2044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/overload_names.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/overload_names.hpp new file mode 100644 index 0000000..e59d200 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/overload_names.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e64052d9c9e2410d0492e557b30e48e51744cbb1a07d6daa3e6d767e325799c +size 2029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/partition_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/partition_op.hpp new file mode 100644 index 0000000..6e34d7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/partition_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:293a725b401c050d50fe4b7395e0f01cc7dd189eae781fbbe572f2ab9d835e27 +size 1390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_back_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_back_impl.hpp new file mode 100644 index 0000000..b79dc08 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_back_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23640eae7f45aa13fee846d583171a0a3c885226801b1ac5e913ff4ce5ab0681 +size 804 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_front_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_front_impl.hpp new file mode 100644 index 0000000..d2c768b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/pop_front_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b302de66272875f92b1eea419dcce5ef52b94a8c6ac54c99f6599966bd5db00 +size 1078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp new file mode 100644 index 0000000..2d0dcab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1166597a0c2defd1765edb8eddb73642216deb0f6720825ca5670df037bd3d37 +size 2202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp new file mode 100644 index 0000000..85680a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:071bca20bda9543f3b7b1016466fcea88d2eb4a29d6fba55aef6ee2509c6d3cf +size 2182 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/and.hpp new file mode 100644 index 0000000..aadb819 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5556119a1511a8e280193107ca726435cfd290bd858201ed33ef883d2bd04b30 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply.hpp new file mode 100644 index 0000000..e536c24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a371bdc8561c9236d6b303c7dba2613de6b28e8f9cb6093314dd70d5b43feabd +size 2745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp new file mode 100644 index 0000000..fac5149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1a30be64abdd6ee27b3262e0221d33f2cb6ee2f70064eda2fe60aeebdf9cebd +size 973 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp new file mode 100644 index 0000000..60ff644 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c251cb230ac4f4beb69c531dba039ff4ada9366874bec42b028966ad7570702c +size 7078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/arg.hpp new file mode 100644 index 0000000..5fbf989 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a0bdff0b1c7dea9c06b1f39fe7d49356757fb05577565d988cbac828bbf6b6 +size 2690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp new file mode 100644 index 0000000..2755224 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66e83b8a67d3a59c8a4a88bce2e7b5d5dac5e76a01ad7363853d3a75ad3ace5 +size 7118 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp new file mode 100644 index 0000000..0547b99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cf1f1740bd1ed7343d4d86099219c3732e272023db4e99927224dca2889c852 +size 10420 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp new file mode 100644 index 0000000..11a0884 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:629bae6e8eb9b55aee5f759d1a03ba9642e361da50a097e616097b25c8d9f1c0 +size 823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitand.hpp new file mode 100644 index 0000000..aa1cd2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feadd14f26318a5371db4da3e16f1a851e020175a8c5667cd2ff95d79fa29f5b +size 3209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitor.hpp new file mode 100644 index 0000000..ad8db90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7ea8d47577361c3721a7e434e59c6b56a780ee50212043a4da3b9d1052338f5 +size 3179 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp new file mode 100644 index 0000000..a4a1362 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77c1e2c70776f51badbd56bb10ad5605e97d0f39fec748de90289757259a8639 +size 3209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/deque.hpp new file mode 100644 index 0000000..cb74ef1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcafec5930ca417afa6463e127f5ea5107f9be2e4a661929d5388936e78126dd +size 9724 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/divides.hpp new file mode 100644 index 0000000..56b317e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d54b58f0efdec9bf15adef8da236d73d5c86cbbd34de1f1d10f533a1b67b90cd +size 3192 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp new file mode 100644 index 0000000..bde352f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:438b625e58dac03bd60e4d6bf95c2d7f9cc14bc142638a46612af1bcceb22d34 +size 2098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp new file mode 100644 index 0000000..41742ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c548fdaf9b108337c82c0755f118c38a034a56cdf1237735bf921c664710081 +size 4350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp new file mode 100644 index 0000000..74be77a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07757c28215320f0330ed487d5a81fe8fac922107e5678b8eba13528cea1030e +size 11506 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater.hpp new file mode 100644 index 0000000..fab079e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d6192340167d3f4deee06f1b9e726bc7f3c13cfa825412ad0a26a0c9b174fc +size 2081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp new file mode 100644 index 0000000..db34154 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cbde03a953532a1a85cf85230d6fbec70a01d6b17640ef394ce391383efcf03 +size 2172 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/inherit.hpp new file mode 100644 index 0000000..6609811 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c5ae60cc2e05bf0a1c4d2394bf5630113a70cf90fd407f061f10c5e9950e558 +size 2750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp new file mode 100644 index 0000000..368bbbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11cd0305f5ffe0f40d03e75725673b1633158717b403b893655283a6e5a31773 +size 4270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp new file mode 100644 index 0000000..2c1f304 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a104eeae82e6362a7179ff7e93e6310a3502da16d333f800d7411abd3ecb13b7 +size 4154 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp new file mode 100644 index 0000000..6334fca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:483ec169cd5b1fa0ad58904197f94a6314556fb7a81e02f6c2778427c52684f9 +size 6473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less.hpp new file mode 100644 index 0000000..a90b27b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8c659e3c8ff5fda4bad8d241266e6bbbd7e0508b9703926bedebdc13fbc46bf +size 2036 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp new file mode 100644 index 0000000..5c4e4e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb5d9c6093f5dd829a52fc4708edd33e6fbd4169355e8bc5a7e1818a1740a617 +size 2127 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list.hpp new file mode 100644 index 0000000..6d1fd74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0019a35a151e4ca972999b4677b3c8b516e2b3eba4d877dbfdd1af857cabad8d +size 9617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list_c.hpp new file mode 100644 index 0000000..5cfbdae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb00b77a1c9e1703ffa7615acb145b0a1ece1a8d83186a073d384e4537c6761 +size 10718 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/map.hpp new file mode 100644 index 0000000..bddbcfb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fe413b5a0125dd27ace1a1ff21db30d66967b6f6b9ca94ded4bec0737c0a2f8 +size 9552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/minus.hpp new file mode 100644 index 0000000..a05335a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee365b2ca4ec003c3f052da32d6aa54835c459dbfd1ecba3609b1bd29f45a9d +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/modulus.hpp new file mode 100644 index 0000000..d79f28b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:079a3aa5d1d496998faeb0eab8ffda31719d899c8d80ce329d0ad90069d977e1 +size 2294 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp new file mode 100644 index 0000000..b38cf77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cbf3ee21aedbabf64b2891ee00c07c4cfbd28d928375a0810d1acd4602ffe5d +size 2157 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/or.hpp new file mode 100644 index 0000000..2a52cc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfe83ee0b8ac57ece2fe81825462696df4c0e77c067940b3dca2d2146bcd675 +size 1259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp new file mode 100644 index 0000000..f236edc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961f77c7b2b7170fed2aa1d947a579f25b4b24d1676da0bf2f926543610ebda1 +size 2212 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/plus.hpp new file mode 100644 index 0000000..96edbf6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:797978593b7742edbc86b23e875c05eb2df3eecbd66dfc6f1a040cd1032a5f29 +size 3102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/quote.hpp new file mode 100644 index 0000000..617e39c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43d4cb8e98d11f4c8f6bdfb7111c2deec9e112cff813877e660b17cb8641a93e +size 2346 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp new file mode 100644 index 0000000..f2985f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:400b591c140160c1dc04e3dddc7b858c05176b7b2e35e270ca08843025cf0cf9 +size 8866 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..1aa0975 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d0d8aa3172efec1a20cdb6d0ba1c707c1819da79df7cb1d6ce4aac96e1bd558 +size 8246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set.hpp new file mode 100644 index 0000000..6dcaef5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64343393f717fa150253fb96f04246bd424d2d158b3c44ee89ef65ad6a098189 +size 9552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set_c.hpp new file mode 100644 index 0000000..144e8cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96ed53cbd48bd217b40bac7e48d2a664a5b8335538638836159292d037c54251 +size 10653 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp new file mode 100644 index 0000000..7304e70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21ebb2f86fe31d3a09907e197fe777a683d3ea48111846862041d74a64202147 +size 2253 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp new file mode 100644 index 0000000..1617353 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d45cb6a9703d6fa3a3e9d15759cdb2428e431f52a76fc27430bbe795b0753dd +size 2268 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp new file mode 100644 index 0000000..e9fef38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f3bbe15c869d28bcd291c8965adf9e0d1dd4f616c54b631f264e8fc1cbfe4c0 +size 763 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/times.hpp new file mode 100644 index 0000000..cae42e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b95f3b35b2cd3f09b91d073297172cf5579d19eb5bdbee52ba2e4ed0c7c85a4 +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp new file mode 100644 index 0000000..795b92e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb386ff1d89fff88f38aafe045a0091e78518459eecf365af6df32c4f5ea5ce7 +size 1986 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector.hpp new file mode 100644 index 0000000..6398407 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:192cb1570ea17a5f871b550a9311010d4e615d5e1876718c4ebde2ce42917640 +size 9747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp new file mode 100644 index 0000000..f143b3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8071ea880d61813a0b4baf926ee675fcf31a3042f4e88c551664c746dda11e8a +size 12238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/and.hpp new file mode 100644 index 0000000..ea10ec7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f7e389aa4c3af94cf7a3fa8bb021335cf7c4c45f33251c5dce7b6d100fe1c4 +size 1257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply.hpp new file mode 100644 index 0000000..f779704 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dacbfb2158468c189ee73d0cb03664f0109008e6933976bf09a94852cae4f6 +size 2744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp new file mode 100644 index 0000000..12c6608 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ab2c4e5056a15108f72c4c0fc86495baa9b35fd8d51e6d572eb314667ccd4de +size 6956 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp new file mode 100644 index 0000000..e819ac1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82b529c11b3613997941aa301719081bbb2c337f3eaf5598ebd3a56c72a754ed +size 7326 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp new file mode 100644 index 0000000..03a1157 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5822be58ef4695b5f876df9c7ed5ffb29cf5eeac7f1e095100f2c0e74574a4f9 +size 10623 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp new file mode 100644 index 0000000..c3c2a2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e922cd7f3aa2dd146d2ee7c4a06205b02fefadbf27cbbb51c60b893e453d24ea +size 822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp new file mode 100644 index 0000000..754ad86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04361fb0c214fe0baea75dee7988b6f3a8390cbf1e0af2adceb4cf7831e6f8f4 +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp new file mode 100644 index 0000000..d5b8a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e331fc1e6f2feadd2799d3104d78e4aac09bf189a3785cff1cb2d858122c0535 +size 3178 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp new file mode 100644 index 0000000..d6c2516 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64fe515d7ab31f32469ca0c6bb3b1d5d801b048c2e9f592f1de596015dff4ac +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/divides.hpp new file mode 100644 index 0000000..16a2d9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8447006b0a3db43b6790fd4afccf07a0f1130db248807563096f1c86cd301444 +size 3191 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp new file mode 100644 index 0000000..7445868 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ce64be459ad25c1c36bd0839a3fef6fc405f7a7744f12ac0dc6ebd74e13b19 +size 2097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp new file mode 100644 index 0000000..756e946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eb8574dfb61185ce0bea8993ac31dccf12923593665c434584f7b72e5b5d0a8 +size 11510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater.hpp new file mode 100644 index 0000000..38840c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:045aa5d6bd8a3d800d4e88b3f059a31830583c77f1842638a4ac16e9be020502 +size 2080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp new file mode 100644 index 0000000..5bab029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10790da3ecc6537acf7907af6a0271e3109e350b7929c2da1cf3f3cad177c5e1 +size 2171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp new file mode 100644 index 0000000..9567f1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67eec86cd760d5d50464a5b916c6f0fcb70389b6afdf4b1dc1a01c3f29c67ccd +size 2832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less.hpp new file mode 100644 index 0000000..15bcc1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec24946d87d5a75ab09d7933c37918bf8a5486ad1954102e3e240def7e18585 +size 2035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp new file mode 100644 index 0000000..3304449 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d569aca0ec9bf6fd37393a9143f3c7e7dffea5d02ddaee311d69df027aee32 +size 2126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/minus.hpp new file mode 100644 index 0000000..adf3979 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e298cb9e3132ce14a2ec5ffda044ace342053395ffdb0fdc210671f25946992 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp new file mode 100644 index 0000000..14ea63c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942f0e6c8b73652c912f11456bc9eacd7f8c0f778e4e2bab8ec10763c9e1cb69 +size 2293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp new file mode 100644 index 0000000..eb85dfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fb0d2825097e4f8e452514b29d77ac13c9da3ef1860d5dbec1c915b61aaae9 +size 2156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/or.hpp new file mode 100644 index 0000000..61413b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ec4d3cb8cc4a9ee79b88a8e585065e67e8c4d86935262516eb7a7943f3820 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/plus.hpp new file mode 100644 index 0000000..e9704d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b612a0a8f0eeb3414644e5c028a242911ffa119a6460d9acc71497c8701372 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/quote.hpp new file mode 100644 index 0000000..ef000cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7881345c5b69527ec6fc972071155341def05719cae294c4ea8b56892032eb3 +size 292 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp new file mode 100644 index 0000000..1ee6d3c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35ab02a3f9c90712bb99fceecc74f34b675bbea2751aa00d735935bc790af20 +size 8870 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..a4d0254 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:159bc9d2c3b48d007b76dfe2f08274377c7a8a8b7e0b003f174eaaeecfa59c97 +size 8250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp new file mode 100644 index 0000000..d546fb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b91279f3a368dccec4a42dd1ee4b76925dc09a6e5a20ab04a5116fd048e2cf11 +size 2252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp new file mode 100644 index 0000000..cd9d0bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3552891d80d206bcad21c2c1b191ee3e0c63096448939e878ad74955c529c384 +size 2267 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp new file mode 100644 index 0000000..09be163 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c008c25aa90b8dc31d8d524dc31eac50e775f0c2955358d90a035beba74ca366 +size 767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/times.hpp new file mode 100644 index 0000000..2143388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f79649346ec889d18117680a67ac8f28082fe51abe91ac62eaa3c505fbb5065 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp new file mode 100644 index 0000000..c5047c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e151fc458a1fed3cf5bb6dfe4740d55638af7b381c88675f58362d28bf722cf3 +size 1985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc551/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp new file mode 100644 index 0000000..2d0dcab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1166597a0c2defd1765edb8eddb73642216deb0f6720825ca5670df037bd3d37 +size 2202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp new file mode 100644 index 0000000..85680a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:071bca20bda9543f3b7b1016466fcea88d2eb4a29d6fba55aef6ee2509c6d3cf +size 2182 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp new file mode 100644 index 0000000..aadb819 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5556119a1511a8e280193107ca726435cfd290bd858201ed33ef883d2bd04b30 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp new file mode 100644 index 0000000..e536c24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a371bdc8561c9236d6b303c7dba2613de6b28e8f9cb6093314dd70d5b43feabd +size 2745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp new file mode 100644 index 0000000..fac5149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1a30be64abdd6ee27b3262e0221d33f2cb6ee2f70064eda2fe60aeebdf9cebd +size 973 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp new file mode 100644 index 0000000..3e7cf91 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64f625fca0a23b587d22acb3cf02c7bfacd5296eb61e124c5eb6525e51d60808 +size 6957 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp new file mode 100644 index 0000000..5fbf989 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a0bdff0b1c7dea9c06b1f39fe7d49356757fb05577565d988cbac828bbf6b6 +size 2690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp new file mode 100644 index 0000000..2755224 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e66e83b8a67d3a59c8a4a88bce2e7b5d5dac5e76a01ad7363853d3a75ad3ace5 +size 7118 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp new file mode 100644 index 0000000..0547b99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0cf1f1740bd1ed7343d4d86099219c3732e272023db4e99927224dca2889c852 +size 10420 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp new file mode 100644 index 0000000..11a0884 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:629bae6e8eb9b55aee5f759d1a03ba9642e361da50a097e616097b25c8d9f1c0 +size 823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp new file mode 100644 index 0000000..aa1cd2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feadd14f26318a5371db4da3e16f1a851e020175a8c5667cd2ff95d79fa29f5b +size 3209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp new file mode 100644 index 0000000..ad8db90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7ea8d47577361c3721a7e434e59c6b56a780ee50212043a4da3b9d1052338f5 +size 3179 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp new file mode 100644 index 0000000..a4a1362 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77c1e2c70776f51badbd56bb10ad5605e97d0f39fec748de90289757259a8639 +size 3209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp new file mode 100644 index 0000000..cb74ef1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcafec5930ca417afa6463e127f5ea5107f9be2e4a661929d5388936e78126dd +size 9724 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp new file mode 100644 index 0000000..56b317e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d54b58f0efdec9bf15adef8da236d73d5c86cbbd34de1f1d10f533a1b67b90cd +size 3192 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp new file mode 100644 index 0000000..bde352f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:438b625e58dac03bd60e4d6bf95c2d7f9cc14bc142638a46612af1bcceb22d34 +size 2098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp new file mode 100644 index 0000000..41742ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c548fdaf9b108337c82c0755f118c38a034a56cdf1237735bf921c664710081 +size 4350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp new file mode 100644 index 0000000..74be77a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07757c28215320f0330ed487d5a81fe8fac922107e5678b8eba13528cea1030e +size 11506 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp new file mode 100644 index 0000000..fab079e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d6192340167d3f4deee06f1b9e726bc7f3c13cfa825412ad0a26a0c9b174fc +size 2081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp new file mode 100644 index 0000000..db34154 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cbde03a953532a1a85cf85230d6fbec70a01d6b17640ef394ce391383efcf03 +size 2172 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp new file mode 100644 index 0000000..6609811 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c5ae60cc2e05bf0a1c4d2394bf5630113a70cf90fd407f061f10c5e9950e558 +size 2750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp new file mode 100644 index 0000000..368bbbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11cd0305f5ffe0f40d03e75725673b1633158717b403b893655283a6e5a31773 +size 4270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp new file mode 100644 index 0000000..2c1f304 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a104eeae82e6362a7179ff7e93e6310a3502da16d333f800d7411abd3ecb13b7 +size 4154 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp new file mode 100644 index 0000000..6334fca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:483ec169cd5b1fa0ad58904197f94a6314556fb7a81e02f6c2778427c52684f9 +size 6473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp new file mode 100644 index 0000000..a90b27b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8c659e3c8ff5fda4bad8d241266e6bbbd7e0508b9703926bedebdc13fbc46bf +size 2036 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp new file mode 100644 index 0000000..5c4e4e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb5d9c6093f5dd829a52fc4708edd33e6fbd4169355e8bc5a7e1818a1740a617 +size 2127 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp new file mode 100644 index 0000000..6d1fd74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0019a35a151e4ca972999b4677b3c8b516e2b3eba4d877dbfdd1af857cabad8d +size 9617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp new file mode 100644 index 0000000..5cfbdae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8eb00b77a1c9e1703ffa7615acb145b0a1ece1a8d83186a073d384e4537c6761 +size 10718 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp new file mode 100644 index 0000000..bddbcfb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fe413b5a0125dd27ace1a1ff21db30d66967b6f6b9ca94ded4bec0737c0a2f8 +size 9552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp new file mode 100644 index 0000000..a05335a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee365b2ca4ec003c3f052da32d6aa54835c459dbfd1ecba3609b1bd29f45a9d +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp new file mode 100644 index 0000000..d79f28b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:079a3aa5d1d496998faeb0eab8ffda31719d899c8d80ce329d0ad90069d977e1 +size 2294 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp new file mode 100644 index 0000000..b38cf77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cbf3ee21aedbabf64b2891ee00c07c4cfbd28d928375a0810d1acd4602ffe5d +size 2157 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp new file mode 100644 index 0000000..2a52cc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdfe83ee0b8ac57ece2fe81825462696df4c0e77c067940b3dca2d2146bcd675 +size 1259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp new file mode 100644 index 0000000..f236edc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961f77c7b2b7170fed2aa1d947a579f25b4b24d1676da0bf2f926543610ebda1 +size 2212 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp new file mode 100644 index 0000000..96edbf6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:797978593b7742edbc86b23e875c05eb2df3eecbd66dfc6f1a040cd1032a5f29 +size 3102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp new file mode 100644 index 0000000..5db9102 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce4724d8b80c5b10086c4f07e370191d6cae56bea2906e668913e3c2a7eb8bdb +size 293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp new file mode 100644 index 0000000..f2985f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:400b591c140160c1dc04e3dddc7b858c05176b7b2e35e270ca08843025cf0cf9 +size 8866 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..1aa0975 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d0d8aa3172efec1a20cdb6d0ba1c707c1819da79df7cb1d6ce4aac96e1bd558 +size 8246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp new file mode 100644 index 0000000..6dcaef5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64343393f717fa150253fb96f04246bd424d2d158b3c44ee89ef65ad6a098189 +size 9552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp new file mode 100644 index 0000000..144e8cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96ed53cbd48bd217b40bac7e48d2a664a5b8335538638836159292d037c54251 +size 10653 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp new file mode 100644 index 0000000..7304e70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21ebb2f86fe31d3a09907e197fe777a683d3ea48111846862041d74a64202147 +size 2253 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp new file mode 100644 index 0000000..1617353 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d45cb6a9703d6fa3a3e9d15759cdb2428e431f52a76fc27430bbe795b0753dd +size 2268 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp new file mode 100644 index 0000000..e9fef38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f3bbe15c869d28bcd291c8965adf9e0d1dd4f616c54b631f264e8fc1cbfe4c0 +size 763 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp new file mode 100644 index 0000000..cae42e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b95f3b35b2cd3f09b91d073297172cf5579d19eb5bdbee52ba2e4ed0c7c85a4 +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp new file mode 100644 index 0000000..795b92e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb386ff1d89fff88f38aafe045a0091e78518459eecf365af6df32c4f5ea5ce7 +size 1986 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp new file mode 100644 index 0000000..6398407 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:192cb1570ea17a5f871b550a9311010d4e615d5e1876718c4ebde2ce42917640 +size 9747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp new file mode 100644 index 0000000..f143b3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/bcc_pre590/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8071ea880d61813a0b4baf926ee675fcf31a3042f4e88c551664c746dda11e8a +size 12238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/and.hpp new file mode 100644 index 0000000..ea10ec7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f7e389aa4c3af94cf7a3fa8bb021335cf7c4c45f33251c5dce7b6d100fe1c4 +size 1257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply.hpp new file mode 100644 index 0000000..f779704 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dacbfb2158468c189ee73d0cb03664f0109008e6933976bf09a94852cae4f6 +size 2744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp new file mode 100644 index 0000000..9ab4d99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af7a500dc1f73b2175dd31d748c42ee2044fe95fe2e3a7e875c2f494aa68219 +size 1238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp new file mode 100644 index 0000000..dd4d46f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3460f34d3f4ac8da72b7df2f0e889c7258c77ec790536ee8eec9fd10042fa53b +size 9530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind.hpp new file mode 100644 index 0000000..67e85c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb0e7549ad3bb27733c8c2f0b08435ab6f2c0108064676bd28394d445d1856fd +size 13253 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp new file mode 100644 index 0000000..0509d79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b59863423d85fa3b93b81788bd19dfc46944287fcd3321819a78710c578dc1f5 +size 1081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitand.hpp new file mode 100644 index 0000000..754ad86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04361fb0c214fe0baea75dee7988b6f3a8390cbf1e0af2adceb4cf7831e6f8f4 +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitor.hpp new file mode 100644 index 0000000..d5b8a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e331fc1e6f2feadd2799d3104d78e4aac09bf189a3785cff1cb2d858122c0535 +size 3178 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp new file mode 100644 index 0000000..d6c2516 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64fe515d7ab31f32469ca0c6bb3b1d5d801b048c2e9f592f1de596015dff4ac +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/divides.hpp new file mode 100644 index 0000000..16a2d9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8447006b0a3db43b6790fd4afccf07a0f1130db248807563096f1c86cd301444 +size 3191 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp new file mode 100644 index 0000000..7445868 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ce64be459ad25c1c36bd0839a3fef6fc405f7a7744f12ac0dc6ebd74e13b19 +size 2097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp new file mode 100644 index 0000000..90a5768 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4edbd14474c1d7eccbf047a58e012c6efc89af3094cac518f074090cce1dfb47 +size 10728 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater.hpp new file mode 100644 index 0000000..38840c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:045aa5d6bd8a3d800d4e88b3f059a31830583c77f1842638a4ac16e9be020502 +size 2080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp new file mode 100644 index 0000000..5bab029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10790da3ecc6537acf7907af6a0271e3109e350b7929c2da1cf3f3cad177c5e1 +size 2171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/inherit.hpp new file mode 100644 index 0000000..9567f1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67eec86cd760d5d50464a5b916c6f0fcb70389b6afdf4b1dc1a01c3f29c67ccd +size 2832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less.hpp new file mode 100644 index 0000000..15bcc1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec24946d87d5a75ab09d7933c37918bf8a5486ad1954102e3e240def7e18585 +size 2035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp new file mode 100644 index 0000000..3304449 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d569aca0ec9bf6fd37393a9143f3c7e7dffea5d02ddaee311d69df027aee32 +size 2126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/minus.hpp new file mode 100644 index 0000000..adf3979 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e298cb9e3132ce14a2ec5ffda044ace342053395ffdb0fdc210671f25946992 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/modulus.hpp new file mode 100644 index 0000000..14ea63c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942f0e6c8b73652c912f11456bc9eacd7f8c0f778e4e2bab8ec10763c9e1cb69 +size 2293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp new file mode 100644 index 0000000..eb85dfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fb0d2825097e4f8e452514b29d77ac13c9da3ef1860d5dbec1c915b61aaae9 +size 2156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/or.hpp new file mode 100644 index 0000000..61413b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ec4d3cb8cc4a9ee79b88a8e585065e67e8c4d86935262516eb7a7943f3820 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/plus.hpp new file mode 100644 index 0000000..e9704d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b612a0a8f0eeb3414644e5c028a242911ffa119a6460d9acc71497c8701372 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/quote.hpp new file mode 100644 index 0000000..af5c665 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cf2f4f8b21bb706886b2adb76fa1c1eca3ea06c9fd43e1889b0e5dcf4825bc3 +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp new file mode 100644 index 0000000..8bd7744 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16293df37c25ff8a277b36af2a1184d3883d5aa73faae01768c027ba8c88802f +size 7372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..223d946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3bcf3f96dbae8d9cc54d8df52417c2df1346aeb6c3a3d3f4ddf0d5aa874847 +size 6717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp new file mode 100644 index 0000000..d546fb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b91279f3a368dccec4a42dd1ee4b76925dc09a6e5a20ab04a5116fd048e2cf11 +size 2252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp new file mode 100644 index 0000000..cd9d0bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3552891d80d206bcad21c2c1b191ee3e0c63096448939e878ad74955c529c384 +size 2267 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp new file mode 100644 index 0000000..e29c8bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f7f402db7af2a929cd4eea606d870506e73ab076f073cd5b0d08322cb718d9 +size 306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/times.hpp new file mode 100644 index 0000000..2143388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f79649346ec889d18117680a67ac8f28082fe51abe91ac62eaa3c505fbb5065 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp new file mode 100644 index 0000000..3d93ce2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d1e3057b2731938c0e74eede0338fbe7f2c7d578d1d888bcbc8d3a50bde152 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/dmc/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/and.hpp new file mode 100644 index 0000000..ea10ec7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f7e389aa4c3af94cf7a3fa8bb021335cf7c4c45f33251c5dce7b6d100fe1c4 +size 1257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp new file mode 100644 index 0000000..f779704 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dacbfb2158468c189ee73d0cb03664f0109008e6933976bf09a94852cae4f6 +size 2744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp new file mode 100644 index 0000000..9ab4d99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af7a500dc1f73b2175dd31d748c42ee2044fe95fe2e3a7e875c2f494aa68219 +size 1238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp new file mode 100644 index 0000000..9bc5fc2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f0c1779e43d8f709ce7e9d08888c621c23fe724cc63b7ee9edf5f4e4ed7324f +size 10260 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp new file mode 100644 index 0000000..66d4be9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c17e1a8b7279f7db31cdf284a82788ba473eb36e02b607beecc2ba369b28d3 +size 14409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp new file mode 100644 index 0000000..1a9018e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f020aaafed9bcbdc23b541798663f5609176b9b1b0a6611b8ed48a8cecffe0 +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitand.hpp new file mode 100644 index 0000000..754ad86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04361fb0c214fe0baea75dee7988b6f3a8390cbf1e0af2adceb4cf7831e6f8f4 +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitor.hpp new file mode 100644 index 0000000..d5b8a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e331fc1e6f2feadd2799d3104d78e4aac09bf189a3785cff1cb2d858122c0535 +size 3178 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp new file mode 100644 index 0000000..d6c2516 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64fe515d7ab31f32469ca0c6bb3b1d5d801b048c2e9f592f1de596015dff4ac +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/divides.hpp new file mode 100644 index 0000000..16a2d9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8447006b0a3db43b6790fd4afccf07a0f1130db248807563096f1c86cd301444 +size 3191 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp new file mode 100644 index 0000000..7445868 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ce64be459ad25c1c36bd0839a3fef6fc405f7a7744f12ac0dc6ebd74e13b19 +size 2097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp new file mode 100644 index 0000000..756e946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5eb8574dfb61185ce0bea8993ac31dccf12923593665c434584f7b72e5b5d0a8 +size 11510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp new file mode 100644 index 0000000..38840c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:045aa5d6bd8a3d800d4e88b3f059a31830583c77f1842638a4ac16e9be020502 +size 2080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp new file mode 100644 index 0000000..5bab029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10790da3ecc6537acf7907af6a0271e3109e350b7929c2da1cf3f3cad177c5e1 +size 2171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/inherit.hpp new file mode 100644 index 0000000..9567f1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67eec86cd760d5d50464a5b916c6f0fcb70389b6afdf4b1dc1a01c3f29c67ccd +size 2832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less.hpp new file mode 100644 index 0000000..15bcc1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec24946d87d5a75ab09d7933c37918bf8a5486ad1954102e3e240def7e18585 +size 2035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp new file mode 100644 index 0000000..3304449 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d569aca0ec9bf6fd37393a9143f3c7e7dffea5d02ddaee311d69df027aee32 +size 2126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp new file mode 100644 index 0000000..adf3979 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e298cb9e3132ce14a2ec5ffda044ace342053395ffdb0fdc210671f25946992 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/modulus.hpp new file mode 100644 index 0000000..14ea63c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942f0e6c8b73652c912f11456bc9eacd7f8c0f778e4e2bab8ec10763c9e1cb69 +size 2293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp new file mode 100644 index 0000000..eb85dfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fb0d2825097e4f8e452514b29d77ac13c9da3ef1860d5dbec1c915b61aaae9 +size 2156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/or.hpp new file mode 100644 index 0000000..61413b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ec4d3cb8cc4a9ee79b88a8e585065e67e8c4d86935262516eb7a7943f3820 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp new file mode 100644 index 0000000..e9704d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b612a0a8f0eeb3414644e5c028a242911ffa119a6460d9acc71497c8701372 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp new file mode 100644 index 0000000..2961fee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb0610e131486e432f922aff55d17b0ceceb410becbc4a1f7de7c688a3299ca +size 2214 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp new file mode 100644 index 0000000..8bd7744 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16293df37c25ff8a277b36af2a1184d3883d5aa73faae01768c027ba8c88802f +size 7372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..223d946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3bcf3f96dbae8d9cc54d8df52417c2df1346aeb6c3a3d3f4ddf0d5aa874847 +size 6717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp new file mode 100644 index 0000000..d546fb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b91279f3a368dccec4a42dd1ee4b76925dc09a6e5a20ab04a5116fd048e2cf11 +size 2252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp new file mode 100644 index 0000000..cd9d0bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3552891d80d206bcad21c2c1b191ee3e0c63096448939e878ad74955c529c384 +size 2267 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp new file mode 100644 index 0000000..52e786c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe95d6339096ac5d92c216124164dfe12c925108140a36f3d1aad96d3997c754 +size 2740 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/times.hpp new file mode 100644 index 0000000..2143388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f79649346ec889d18117680a67ac8f28082fe51abe91ac62eaa3c505fbb5065 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp new file mode 100644 index 0000000..3d93ce2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d1e3057b2731938c0e74eede0338fbe7f2c7d578d1d888bcbc8d3a50bde152 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/gcc/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp new file mode 100644 index 0000000..0ee553e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74006bfb438fe0f91ba1be44e28b62896d25af4aefbf7409c3dfd0215646221e +size 2691 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp new file mode 100644 index 0000000..65528ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07ff033d768dac7a47c16f1365768f7766266479486aca3f8a92f3f2387356cd +size 2671 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/and.hpp new file mode 100644 index 0000000..e0038e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:626bc53a4ac1b8b27a6c3dba518a7572a36329dc6aa708c8314f854e1d97bde6 +size 1383 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp new file mode 100644 index 0000000..3a3f507 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74392fc7d8c4b99e54b13f5a2ba9a43934a3b27ffcd5d9d1d2ec01bdab0b62b3 +size 2683 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp new file mode 100644 index 0000000..2708f56 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c560cb1faf80770bab1a5716c61566a3863d242ecf71e585d2b017d9c8cbf86 +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp new file mode 100644 index 0000000..12fa4c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69e9637ca2c1b9882ff818e310f1e6e38e16ad1febf209918165c7d5dbfaa029 +size 4692 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp new file mode 100644 index 0000000..7b163da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e4028082921f5bed438e7feafcb743a9376aa3f54d789538fb844aa784f9e00 +size 7357 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind.hpp new file mode 100644 index 0000000..e4c2e61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:add03e5ab486db0b3c75dfc725f0d033964aeab87678154d5580309152143045 +size 10869 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp new file mode 100644 index 0000000..c3c2a2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e922cd7f3aa2dd146d2ee7c4a06205b02fefadbf27cbbb51c60b893e453d24ea +size 822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp new file mode 100644 index 0000000..c100e6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21d44542dd87974cad9317cd0705bd545d7bbaee46e6e0c8ae29bd1ea652dad0 +size 3119 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp new file mode 100644 index 0000000..a1d72f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6b0019a4010d987e409ad9ec88a245e192e8cbb2d7447fedf1dfd971594a44f +size 3096 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp new file mode 100644 index 0000000..6686cc5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df878de2984f1b365cbe5eccb4bcea9da443a93f561d4180924b2d812df84862 +size 3119 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/deque.hpp new file mode 100644 index 0000000..bf2cb6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe19d5ffbbd006c2451b60340782751d7c3dd9cc750234d3bbced631c32e696 +size 14714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/divides.hpp new file mode 100644 index 0000000..257e1f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98a0f4ff55f237aab4deaefe9c89cdc22c61113e600102e7250edd41bc79636d +size 3104 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp new file mode 100644 index 0000000..9caf793 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02a6fb4811e0d71f2df531c791c6d4d67d7e86081da3e27c97ba69c930ab39c9 +size 2350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp new file mode 100644 index 0000000..3d74b35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:982fd5495e28a7f8e73fdaec1288a03745179ac2c065f1e626eb1844c39c6fad +size 6622 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater.hpp new file mode 100644 index 0000000..20931d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e192e3ba7ec2b132208a5686e49ce509e6fefa57e774839b969d18d52079cbf1 +size 2334 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp new file mode 100644 index 0000000..7454b21 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3188b71fab56a945412696409ed0d25f15bc13fc3b8ffc424ab4b92b951509e4 +size 2425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp new file mode 100644 index 0000000..7666a0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80903ee2104e741d24b3c693698a5f8a33bd7a35714dd5468c9d12ed2bbe7f2a +size 3265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp new file mode 100644 index 0000000..f8074e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:330d54d9d42ca7c62c5ca6f961a2d81765907456485482d4928725a7c3461284 +size 6461 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less.hpp new file mode 100644 index 0000000..5b83176 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:358f543967dbe4af676cf3bed19b80ffe5e90bdbeed3a7079ea20d9b1b2e95c8 +size 2289 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp new file mode 100644 index 0000000..bda02be --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05280a36353a5cfaa5b8e83915e4993e382ca496da997cba9a8ccdb517178cf4 +size 2380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list.hpp new file mode 100644 index 0000000..1384cff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00a452e40b988a1a25e004e4e49248704f2750fd7010810f8bff49ad56afe7b2 +size 14620 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp new file mode 100644 index 0000000..1d30800 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2beb061c6a2630d4bcfd38d186608537ff7e1e32932ff0e4c91e3777657e15aa +size 13129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/map.hpp new file mode 100644 index 0000000..317d8ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:193080ade16f2bfa0b096b6d67191bf7bfed3da2db0651ef3c043d3f0444610d +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/minus.hpp new file mode 100644 index 0000000..0d0595d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bb1c0d7b87dc733cd219689a7aa814b6d9e08ede884a331210e6ffb92f2a457 +size 3058 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp new file mode 100644 index 0000000..3f522a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4666eeae7e9ac1def8b320bfebe971cf96bfccf337c959d5c111b2173a18fd8 +size 2552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp new file mode 100644 index 0000000..469ec8c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5fb115dcd98f925238be387148b0506073e6d9d7f076ec2313a47523823e4cc +size 2410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/or.hpp new file mode 100644 index 0000000..74e9869 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bdb93ca20a0836db578101deef4eff29f57337ba38a1c449f695d3ef638a0 +size 1384 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/plus.hpp new file mode 100644 index 0000000..fe63bbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:503788f5d2d053f93c04e135d6a568fac773383d9413375f7e61585f2e818725 +size 3035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/quote.hpp new file mode 100644 index 0000000..ef000cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7881345c5b69527ec6fc972071155341def05719cae294c4ea8b56892032eb3 +size 292 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp new file mode 100644 index 0000000..44a8100 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79505de6fd04df160b8177c82b8f8caed195387bf48f8adb307b7ffb68d6024a +size 9758 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..3d85503 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2a6266fdb4b7c12812dd9dca576eb2506d1177b8eccc66f1d89c6a048149c1c +size 9138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set.hpp new file mode 100644 index 0000000..a6abcdc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d18a2f67529ace4533087c2966eabf00444d75fcd0ecda9ebdd8672307d02c0 +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp new file mode 100644 index 0000000..4ca2ccd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:311d65179abf1db1872e4cfe5cbf9df0cd11259cb11a36888cd81104f4663257 +size 13056 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp new file mode 100644 index 0000000..2a69b0f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d25d214690d87cc5ac5ee15173fa933ab570293dff245be8df33a606a43b5f2e +size 2570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp new file mode 100644 index 0000000..f3ac67b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0539c283227179578848857ed9416cd6cd7a4d57e9accb89e42e35c1c75b37ae +size 2587 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp new file mode 100644 index 0000000..1d25e19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cbcb3b2451ac6a6c643e2ffa2538d8e2262ea4de7fc29a5503184989f4bc1c9 +size 833 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/times.hpp new file mode 100644 index 0000000..9ad3274 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d02a737bc43005cc7dbc5c2d0e9311791534780a67d2a61a1bc22af368c1d7d6 +size 3058 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp new file mode 100644 index 0000000..aa9deb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:280ab64981ecb9acf9bb4f17ea8c803a7e79ded65e30ead506a0104a76e7ad4b +size 2296 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector.hpp new file mode 100644 index 0000000..3a5b8a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e85b42966bd78b28f0c863cb0bb0acf7adeca1c70ed0e576a0da18d89acd48cf +size 14766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp new file mode 100644 index 0000000..1f8fcfb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc60/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eb75141c5083226384a062d286ed589226545f1f9bb140f81c1f7ae6ef716d7 +size 13905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/and.hpp new file mode 100644 index 0000000..914b945 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e022a01294d586476190960b4155f0e0bf45f3832d1539190e3c01c77f6973c +size 1374 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply.hpp new file mode 100644 index 0000000..ae24bb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5937ad19ebba092c24ef64e7d004972de9d08435b47a497511138eebb9358bde +size 2515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp new file mode 100644 index 0000000..2708f56 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c560cb1faf80770bab1a5716c61566a3863d242ecf71e585d2b017d9c8cbf86 +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp new file mode 100644 index 0000000..6861367 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fbcc4a587492c3474c60d2e9564e24a16a78776afdcecb6960d24df0e17b851 +size 2055 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp new file mode 100644 index 0000000..7b163da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e4028082921f5bed438e7feafcb743a9376aa3f54d789538fb844aa784f9e00 +size 7357 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind.hpp new file mode 100644 index 0000000..e4c2e61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:add03e5ab486db0b3c75dfc725f0d033964aeab87678154d5580309152143045 +size 10869 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp new file mode 100644 index 0000000..c3c2a2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e922cd7f3aa2dd146d2ee7c4a06205b02fefadbf27cbbb51c60b893e453d24ea +size 822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp new file mode 100644 index 0000000..939ac73 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a9110766ed9ba7e3781f18b883536e8783f459b669f704d42610fef0e4760a5 +size 3139 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp new file mode 100644 index 0000000..270f8d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d1e31648147c74a1839eb63e808fcd77b0692680cf4cc029457159dabb99433 +size 3116 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp new file mode 100644 index 0000000..910f828 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a75da53ae095275e503dff1b5258eb91453711c8ce6279ba06240ab9ba68e6e7 +size 3139 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/deque.hpp new file mode 100644 index 0000000..bf2cb6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe19d5ffbbd006c2451b60340782751d7c3dd9cc750234d3bbced631c32e696 +size 14714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/divides.hpp new file mode 100644 index 0000000..0b7c04d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17bbe20780afd4e6b08e688d1433a93d410c42558fee8b4b7921b084a8dbf26f +size 3124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp new file mode 100644 index 0000000..ee244fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d8feabfebf9bb500296ae6fd98acc3437f69576c62c6bfb62e7b79d461fe9fe +size 2334 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp new file mode 100644 index 0000000..c6bc795 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06860ea1510a11a9c9a9e95208dbde1ec2dedccd5cb2d82a8de93a3c307cb35f +size 5758 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater.hpp new file mode 100644 index 0000000..eb1c36f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a552a40a32e158d9774dae4ce9cec3545c1b9794034f2e395783171d7147064 +size 2318 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp new file mode 100644 index 0000000..c4dbb6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18c750d86dd4ea13d6b97e0fc07186fd6fc664edb2d8243fbe85cd41b095fc40 +size 2409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp new file mode 100644 index 0000000..7666a0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80903ee2104e741d24b3c693698a5f8a33bd7a35714dd5468c9d12ed2bbe7f2a +size 3265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp new file mode 100644 index 0000000..5e0e8ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6899060d4c524736d22aef1f81fb222007058a5001e6549c8bcce1432973b9ea +size 5597 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less.hpp new file mode 100644 index 0000000..df821f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cdd023290a901c5b2e4eaad0650c6666a85af8a0b153d32fd3c561aef2c935be +size 2273 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp new file mode 100644 index 0000000..49a97b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85155e73522f906f0ea2c8d228c5915c00dd81fc8ba3c961aca7fe671252af06 +size 2364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list.hpp new file mode 100644 index 0000000..1384cff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00a452e40b988a1a25e004e4e49248704f2750fd7010810f8bff49ad56afe7b2 +size 14620 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp new file mode 100644 index 0000000..1d30800 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2beb061c6a2630d4bcfd38d186608537ff7e1e32932ff0e4c91e3777657e15aa +size 13129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/map.hpp new file mode 100644 index 0000000..317d8ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:193080ade16f2bfa0b096b6d67191bf7bfed3da2db0651ef3c043d3f0444610d +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/minus.hpp new file mode 100644 index 0000000..9471cbe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb24a03e18e5684a86cb5c6f0bfd40d1f7da8067047d78cf2b9d140e441fe962 +size 3078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp new file mode 100644 index 0000000..533cb77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fef96edfc8fb060733a024d56108e0e56c4ccc86bf00dce3232c36b80c0620d7 +size 2536 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp new file mode 100644 index 0000000..7f7fb0b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51b66db91e7a6b901f2a4c92cd41a0537f9e1a49b8a56af7faf63b141fca4fa0 +size 2394 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/or.hpp new file mode 100644 index 0000000..84a33cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89486f95fda0b7d0fcd29f6d0b441adf602e3fc3156e18d5992a5debf8682e3e +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/plus.hpp new file mode 100644 index 0000000..6c1e2a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b1a74da0f1608f664c97b6d718463c7898f70d0510af40a1abef47767ed6186 +size 3055 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/quote.hpp new file mode 100644 index 0000000..fe5e7a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9bb597547c1fc8fd076c12dd5f34e4047b90e984544029396990b1bdb9e6fdb +size 2236 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp new file mode 100644 index 0000000..1ee6d3c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35ab02a3f9c90712bb99fceecc74f34b675bbea2751aa00d735935bc790af20 +size 8870 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..a4d0254 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:159bc9d2c3b48d007b76dfe2f08274377c7a8a8b7e0b003f174eaaeecfa59c97 +size 8250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set.hpp new file mode 100644 index 0000000..a6abcdc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d18a2f67529ace4533087c2966eabf00444d75fcd0ecda9ebdd8672307d02c0 +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp new file mode 100644 index 0000000..4ca2ccd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:311d65179abf1db1872e4cfe5cbf9df0cd11259cb11a36888cd81104f4663257 +size 13056 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp new file mode 100644 index 0000000..7abd556 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fafe9168d432e15459680ed280091c3156fcd5b03fe49c51952db075b3ea5a8 +size 2554 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp new file mode 100644 index 0000000..5994fa8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2334be3ff1f8ad40d04cf8fd5ddd664bad1b9ddecd86da2736c2b9034a9b674d +size 2571 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp new file mode 100644 index 0000000..1d25e19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cbcb3b2451ac6a6c643e2ffa2538d8e2262ea4de7fc29a5503184989f4bc1c9 +size 833 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/times.hpp new file mode 100644 index 0000000..ae0e3cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fda2098cd33f86052ef1880498169b1def4e672399e5cf422a8135459a18b303 +size 3078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp new file mode 100644 index 0000000..aa9deb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:280ab64981ecb9acf9bb4f17ea8c803a7e79ded65e30ead506a0104a76e7ad4b +size 2296 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector.hpp new file mode 100644 index 0000000..3a5b8a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e85b42966bd78b28f0c863cb0bb0acf7adeca1c70ed0e576a0da18d89acd48cf +size 14766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp new file mode 100644 index 0000000..1f8fcfb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/msvc70/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eb75141c5083226384a062d286ed589226545f1f9bb140f81c1f7ae6ef716d7 +size 13905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/and.hpp new file mode 100644 index 0000000..ea10ec7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f7e389aa4c3af94cf7a3fa8bb021335cf7c4c45f33251c5dce7b6d100fe1c4 +size 1257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply.hpp new file mode 100644 index 0000000..f779704 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dacbfb2158468c189ee73d0cb03664f0109008e6933976bf09a94852cae4f6 +size 2744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp new file mode 100644 index 0000000..12c6608 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ab2c4e5056a15108f72c4c0fc86495baa9b35fd8d51e6d572eb314667ccd4de +size 6956 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp new file mode 100644 index 0000000..9bc5fc2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f0c1779e43d8f709ce7e9d08888c621c23fe724cc63b7ee9edf5f4e4ed7324f +size 10260 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind.hpp new file mode 100644 index 0000000..66d4be9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c17e1a8b7279f7db31cdf284a82788ba473eb36e02b607beecc2ba369b28d3 +size 14409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp new file mode 100644 index 0000000..1a9018e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f020aaafed9bcbdc23b541798663f5609176b9b1b0a6611b8ed48a8cecffe0 +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp new file mode 100644 index 0000000..754ad86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04361fb0c214fe0baea75dee7988b6f3a8390cbf1e0af2adceb4cf7831e6f8f4 +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp new file mode 100644 index 0000000..d5b8a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e331fc1e6f2feadd2799d3104d78e4aac09bf189a3785cff1cb2d858122c0535 +size 3178 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp new file mode 100644 index 0000000..d6c2516 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d64fe515d7ab31f32469ca0c6bb3b1d5d801b048c2e9f592f1de596015dff4ac +size 3208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/divides.hpp new file mode 100644 index 0000000..16a2d9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8447006b0a3db43b6790fd4afccf07a0f1130db248807563096f1c86cd301444 +size 3191 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp new file mode 100644 index 0000000..7445868 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ce64be459ad25c1c36bd0839a3fef6fc405f7a7744f12ac0dc6ebd74e13b19 +size 2097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater.hpp new file mode 100644 index 0000000..38840c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:045aa5d6bd8a3d800d4e88b3f059a31830583c77f1842638a4ac16e9be020502 +size 2080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp new file mode 100644 index 0000000..5bab029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10790da3ecc6537acf7907af6a0271e3109e350b7929c2da1cf3f3cad177c5e1 +size 2171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp new file mode 100644 index 0000000..9567f1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67eec86cd760d5d50464a5b916c6f0fcb70389b6afdf4b1dc1a01c3f29c67ccd +size 2832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less.hpp new file mode 100644 index 0000000..15bcc1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ec24946d87d5a75ab09d7933c37918bf8a5486ad1954102e3e240def7e18585 +size 2035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp new file mode 100644 index 0000000..3304449 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5d569aca0ec9bf6fd37393a9143f3c7e7dffea5d02ddaee311d69df027aee32 +size 2126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/minus.hpp new file mode 100644 index 0000000..adf3979 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e298cb9e3132ce14a2ec5ffda044ace342053395ffdb0fdc210671f25946992 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp new file mode 100644 index 0000000..14ea63c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942f0e6c8b73652c912f11456bc9eacd7f8c0f778e4e2bab8ec10763c9e1cb69 +size 2293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp new file mode 100644 index 0000000..eb85dfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4fb0d2825097e4f8e452514b29d77ac13c9da3ef1860d5dbec1c915b61aaae9 +size 2156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/or.hpp new file mode 100644 index 0000000..61413b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ec4d3cb8cc4a9ee79b88a8e585065e67e8c4d86935262516eb7a7943f3820 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/plus.hpp new file mode 100644 index 0000000..e9704d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b612a0a8f0eeb3414644e5c028a242911ffa119a6460d9acc71497c8701372 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/quote.hpp new file mode 100644 index 0000000..af5c665 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cf2f4f8b21bb706886b2adb76fa1c1eca3ea06c9fd43e1889b0e5dcf4825bc3 +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp new file mode 100644 index 0000000..8bd7744 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16293df37c25ff8a277b36af2a1184d3883d5aa73faae01768c027ba8c88802f +size 7372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..223d946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3bcf3f96dbae8d9cc54d8df52417c2df1346aeb6c3a3d3f4ddf0d5aa874847 +size 6717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp new file mode 100644 index 0000000..d546fb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b91279f3a368dccec4a42dd1ee4b76925dc09a6e5a20ab04a5116fd048e2cf11 +size 2252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp new file mode 100644 index 0000000..cd9d0bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3552891d80d206bcad21c2c1b191ee3e0c63096448939e878ad74955c529c384 +size 2267 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp new file mode 100644 index 0000000..e29c8bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f7f402db7af2a929cd4eea606d870506e73ab076f073cd5b0d08322cb718d9 +size 306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/times.hpp new file mode 100644 index 0000000..2143388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f79649346ec889d18117680a67ac8f28082fe51abe91ac62eaa3c505fbb5065 +size 3131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp new file mode 100644 index 0000000..3d93ce2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d1e3057b2731938c0e74eede0338fbe7f2c7d578d1d888bcbc8d3a50bde152 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/mwcw/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/and.hpp new file mode 100644 index 0000000..e0038e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:626bc53a4ac1b8b27a6c3dba518a7572a36329dc6aa708c8314f854e1d97bde6 +size 1383 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp new file mode 100644 index 0000000..414d444 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17875a0c7163cdf64a3c138338c4e4dba5c1bc5b56360a814b15dc052722b15c +size 4474 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp new file mode 100644 index 0000000..10b67e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9370ae2f082ee75482ad769ab861250d5e7e565fe2d4f823111ec61d99281629 +size 915 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp new file mode 100644 index 0000000..605b3ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b27736f5cc1b340b64d7317faca4ee84c424e708b64c01290bf87a8897caf83 +size 1164 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp new file mode 100644 index 0000000..24fe240 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d58e38670650cb718b4ca909f1d78b9b50bc2633e0ed6b75079c8fbb2a1064f5 +size 10017 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp new file mode 100644 index 0000000..ab26598 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92ca444c7bcb6893399a7908c7b9b660ef25d4dff786457f4bf000dc3eb68ef7 +size 13529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp new file mode 100644 index 0000000..1a9018e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f020aaafed9bcbdc23b541798663f5609176b9b1b0a6611b8ed48a8cecffe0 +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp new file mode 100644 index 0000000..0911931 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e552044a1929bbe5574bed8d13c4596da7a068a4e3a25a6735d26b64a958e67a +size 2855 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp new file mode 100644 index 0000000..b00e528 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ba6d20374c28253126c365336c059fffbeaf842ffe09c4f100b13db9199047a +size 2834 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp new file mode 100644 index 0000000..8b073b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e635fc547ee9adb1aa176ce25e94bc941332f25478809ff62ce5eab6a4881876 +size 2855 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp new file mode 100644 index 0000000..bf2cb6e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afe19d5ffbbd006c2451b60340782751d7c3dd9cc750234d3bbced631c32e696 +size 14714 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp new file mode 100644 index 0000000..e9eff7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:934e537bd3615db7b8dd02df5757997b82f31d4232446e02d2edf54d2cab4ebe +size 2838 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp new file mode 100644 index 0000000..7beddf8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:285931eb5709f16bb9e6622d1de8a24de0ad4a2330ca053a1cfe0e1982c26f67 +size 2091 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp new file mode 100644 index 0000000..c6bc795 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06860ea1510a11a9c9a9e95208dbde1ec2dedccd5cb2d82a8de93a3c307cb35f +size 5758 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp new file mode 100644 index 0000000..e137a2f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a131e96e06838378abb55eda8f3a197903bce070b4ce3f82cb028e835760bdc4 +size 2074 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp new file mode 100644 index 0000000..9b46ae0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2b73fa5e056f4268b830d99be86c5a1961c9bc30293ed08d0e5e931117f2b09 +size 2165 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp new file mode 100644 index 0000000..7666a0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80903ee2104e741d24b3c693698a5f8a33bd7a35714dd5468c9d12ed2bbe7f2a +size 3265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp new file mode 100644 index 0000000..5e0e8ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6899060d4c524736d22aef1f81fb222007058a5001e6549c8bcce1432973b9ea +size 5597 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less.hpp new file mode 100644 index 0000000..eebb92a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1961ca877009444fa02a629ffe81b4de3090ec5520e0341e3706fa5dc9f90baf +size 2029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp new file mode 100644 index 0000000..20a3388 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d57256bc06b20648028cfd8205c4b1bb4a830d272b0bb2d4719c53478a4448 +size 2120 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list.hpp new file mode 100644 index 0000000..1384cff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00a452e40b988a1a25e004e4e49248704f2750fd7010810f8bff49ad56afe7b2 +size 14620 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp new file mode 100644 index 0000000..1d30800 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2beb061c6a2630d4bcfd38d186608537ff7e1e32932ff0e4c91e3777657e15aa +size 13129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/map.hpp new file mode 100644 index 0000000..317d8ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:193080ade16f2bfa0b096b6d67191bf7bfed3da2db0651ef3c043d3f0444610d +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp new file mode 100644 index 0000000..5d4132e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47bcb8ddf66f16b01026ac8f7ffddf6938110af91868492147990a09e49fc05d +size 2796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp new file mode 100644 index 0000000..c72923f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a13855e3190a8eb4d79ee67dd791f8d36fd13102af425af6b65f0bf88fe81e9c +size 2287 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp new file mode 100644 index 0000000..35ad47e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29af8019eeae5b3513f4bc8824714dec3c0106d6851fce6e0edef0b83c3b1614 +size 2150 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/or.hpp new file mode 100644 index 0000000..74e9869 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bdb93ca20a0836db578101deef4eff29f57337ba38a1c449f695d3ef638a0 +size 1384 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp new file mode 100644 index 0000000..c0b9de4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92736597f3a65aedc540e859099c6d8682de595278b11c47cd919e9d635cba40 +size 2775 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp new file mode 100644 index 0000000..fe5e7a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9bb597547c1fc8fd076c12dd5f34e4047b90e984544029396990b1bdb9e6fdb +size 2236 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp new file mode 100644 index 0000000..1ee6d3c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35ab02a3f9c90712bb99fceecc74f34b675bbea2751aa00d735935bc790af20 +size 8870 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..a4d0254 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:159bc9d2c3b48d007b76dfe2f08274377c7a8a8b7e0b003f174eaaeecfa59c97 +size 8250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set.hpp new file mode 100644 index 0000000..a6abcdc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d18a2f67529ace4533087c2966eabf00444d75fcd0ecda9ebdd8672307d02c0 +size 14547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp new file mode 100644 index 0000000..4ca2ccd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:311d65179abf1db1872e4cfe5cbf9df0cd11259cb11a36888cd81104f4663257 +size 13056 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp new file mode 100644 index 0000000..9f3b485 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f66c9222adb66c3082c95168b27670ae2b4fd3e73e50d0bf1a3c14d00d0e0ea +size 2246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp new file mode 100644 index 0000000..5473b0d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec42899eafaf37a26eb0472c13f6e43e2b187fdb347bb342f9789ba100499fb4 +size 2261 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp new file mode 100644 index 0000000..09be163 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c008c25aa90b8dc31d8d524dc31eac50e775f0c2955358d90a035beba74ca366 +size 767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/times.hpp new file mode 100644 index 0000000..17060fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f42cae699ee9220fad203abbd028e0faa263da736be643ce56421ceb7d453b +size 2796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp new file mode 100644 index 0000000..aa9deb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:280ab64981ecb9acf9bb4f17ea8c803a7e79ded65e30ead506a0104a76e7ad4b +size 2296 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp new file mode 100644 index 0000000..3a5b8a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e85b42966bd78b28f0c863cb0bb0acf7adeca1c70ed0e576a0da18d89acd48cf +size 14766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp new file mode 100644 index 0000000..1f8fcfb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ctps/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4eb75141c5083226384a062d286ed589226545f1f9bb140f81c1f7ae6ef716d7 +size 13905 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/and.hpp new file mode 100644 index 0000000..ea10ec7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48f7e389aa4c3af94cf7a3fa8bb021335cf7c4c45f33251c5dce7b6d100fe1c4 +size 1257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp new file mode 100644 index 0000000..f779704 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42dacbfb2158468c189ee73d0cb03664f0109008e6933976bf09a94852cae4f6 +size 2744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp new file mode 100644 index 0000000..9ab4d99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af7a500dc1f73b2175dd31d748c42ee2044fe95fe2e3a7e875c2f494aa68219 +size 1238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp new file mode 100644 index 0000000..8a0f66f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:250c73542ddbef5a838fb96b1aa9f9a89a87ddab4e89e7c3b94dcba523c46014 +size 8482 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp new file mode 100644 index 0000000..bd2e371 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d3884aa5d62ca2f07a8c136a50ba24b6593143dd79dc52d4641fe8f21de84c1 +size 11779 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp new file mode 100644 index 0000000..1a9018e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f020aaafed9bcbdc23b541798663f5609176b9b1b0a6611b8ed48a8cecffe0 +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp new file mode 100644 index 0000000..6547ec0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55f47c165028941ba60213f71d9c1c8260cd852f5aa9037be09c18b219e82d8a +size 3312 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp new file mode 100644 index 0000000..ace6169 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:365d440a60565f083fb57ac488f7f9d12a4592b2bf2f1eb43a9caa4ba9c20bea +size 3280 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp new file mode 100644 index 0000000..a6467e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7bd18e679129947faf674791612902486e51455e8af81dd96c24a824de3660b +size 3312 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp new file mode 100644 index 0000000..a1bf2a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:841806855f1ecb1d5364ee7a5832c1895266dbcf389960c3209a3fa164779cb1 +size 3297 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp new file mode 100644 index 0000000..56a4b98 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03f7aab4fae511295fbed6aa13fc82efd7cd3c909a23d59e1f98187f644b9ff1 +size 2197 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp new file mode 100644 index 0000000..e96a398 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4e6594b8a654f07df3b8a2248f49dcecc75456c85077dd4966c79c4889d86b1 +size 2181 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp new file mode 100644 index 0000000..1dceb70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b26d3b382ff6b7b5fb2a3b69ccb2e70c4847ee7550cbd22a644e9d16015d492 +size 2272 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp new file mode 100644 index 0000000..9567f1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67eec86cd760d5d50464a5b916c6f0fcb70389b6afdf4b1dc1a01c3f29c67ccd +size 2832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp new file mode 100644 index 0000000..e1b521b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3387b7806a1e6c0a6109cc323509d8dd10e15b7f8c2cff882013c07168231433 +size 6477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less.hpp new file mode 100644 index 0000000..f15cec2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca34a61e735f290760d041d9dd7f5d37b6a22a9a95d809c7191ce5c0b3c9a8b8 +size 2136 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp new file mode 100644 index 0000000..94ad4b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:752d75a57b6adb2c93121f6f92ec78035488cddc7919cb21ca2bfe61de893b95 +size 2227 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp new file mode 100644 index 0000000..abb48fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e23455510e76a32fcbd57c788e49350eb28a23dd6491eb4b006a0de540ebf44 +size 3233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp new file mode 100644 index 0000000..f50c1d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6618b3af1a69d94e8fb0db3779cc59afe79643742b08be80d83acdeff71aa083 +size 2399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp new file mode 100644 index 0000000..dae38af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c6c600bedf8ca42ac86fab32f32dddd1b103e79519742f15a8d28db1a12e48f +size 2257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/or.hpp new file mode 100644 index 0000000..61413b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:112ec4d3cb8cc4a9ee79b88a8e585065e67e8c4d86935262516eb7a7943f3820 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp new file mode 100644 index 0000000..e6dcc13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4fb69be800763cc55b387b54f763621a8f9b1f817838f2515f50251552fbc0ae +size 3201 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp new file mode 100644 index 0000000..ef000cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7881345c5b69527ec6fc972071155341def05719cae294c4ea8b56892032eb3 +size 292 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp new file mode 100644 index 0000000..8bd7744 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16293df37c25ff8a277b36af2a1184d3883d5aa73faae01768c027ba8c88802f +size 7372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..223d946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3bcf3f96dbae8d9cc54d8df52417c2df1346aeb6c3a3d3f4ddf0d5aa874847 +size 6717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp new file mode 100644 index 0000000..af79738 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7f16a43266d7ae88913f5a4b560216f63d83ba000ab8eb8301f5b1aeabf1afe +size 2417 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp new file mode 100644 index 0000000..9cdf6aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46a2992c613a563f0a0380775411a5249e468c9745780232c615ca0365728792 +size 2434 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp new file mode 100644 index 0000000..09be163 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c008c25aa90b8dc31d8d524dc31eac50e775f0c2955358d90a035beba74ca366 +size 767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/times.hpp new file mode 100644 index 0000000..8f10dbd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7706a9885b40de50fdade2fa440f90b99b770f665d74834f25d149fdd4035e7d +size 3233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp new file mode 100644 index 0000000..3d93ce2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d1e3057b2731938c0e74eede0338fbe7f2c7d578d1d888bcbc8d3a50bde152 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/no_ttp/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp new file mode 100644 index 0000000..7c8960e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_backward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4c03c83e9e3950e42ee825cb10d94c3e54af988a8bf5517a44265e8e56b4be3 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp new file mode 100644 index 0000000..913b5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/advance_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50d41920b3f3d73804897c16f790f269609c2684db7bb21f6bb94fd461a5aa78 +size 2186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/and.hpp new file mode 100644 index 0000000..5eaac44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad7d1282dcc8e799fac2d1b01c52bfb0d5dcdcfc4086496326f251138e28ff7a +size 1154 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply.hpp new file mode 100644 index 0000000..d934f86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c539730f88cb1c341d31397ea10a36df45e8af3026535adacfea259ca0f36b +size 2161 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp new file mode 100644 index 0000000..a9455bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e5bd2d53e79be26d178acc39a2629864f6fb00a6641b60d811df49d0abe9e79 +size 972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp new file mode 100644 index 0000000..9ab4d99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/apply_wrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af7a500dc1f73b2175dd31d748c42ee2044fe95fe2e3a7e875c2f494aa68219 +size 1238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/arg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/arg.hpp new file mode 100644 index 0000000..2cc570d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/arg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dd55033624e38bf06e1c3c2a808b2c052b47403968a151ed349dd66928ad251 +size 2893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp new file mode 100644 index 0000000..9bc5fc2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/basic_bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f0c1779e43d8f709ce7e9d08888c621c23fe724cc63b7ee9edf5f4e4ed7324f +size 10260 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind.hpp new file mode 100644 index 0000000..66d4be9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10c17e1a8b7279f7db31cdf284a82788ba473eb36e02b607beecc2ba369b28d3 +size 14409 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp new file mode 100644 index 0000000..1a9018e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f020aaafed9bcbdc23b541798663f5609176b9b1b0a6611b8ed48a8cecffe0 +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitand.hpp new file mode 100644 index 0000000..bd00b2f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4bd9d5d090a6671970c39b3d4e4fc9ad1faadb0d01b9e7fa6b959a435bfa508 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitor.hpp new file mode 100644 index 0000000..88e6b43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9fa235711dc5c34be22b688b9c776989b5dd8bca09bd1957ef2c8b45eb040b2 +size 3072 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitxor.hpp new file mode 100644 index 0000000..f1dfdb5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87f8d30e7c197645d7187ff700b607c8de7418dda70b98eec57ad7fa936b4256 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/deque.hpp new file mode 100644 index 0000000..1cd3ad3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52440eb38f109bbd3bb99542042d25575ce8c9c6e301c4a404e88d57ae3c8de9 +size 9723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/divides.hpp new file mode 100644 index 0000000..081d69c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:80020a6f74086bcb21f9f078404d7ae229183e8d2eb5124e0c1bb4a710b37ed2 +size 3084 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/equal_to.hpp new file mode 100644 index 0000000..a928a32 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:622f2aff9d41cf1d36d29cef2a6ab7b6d807afa135cbd3181c83353176fa756f +size 2040 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp new file mode 100644 index 0000000..88fb149 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f74d7a7520ecc7324a6fe40fae8bf9de3fc881bc6ced30ac1ec3389d2bc9581d +size 4354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp new file mode 100644 index 0000000..8eddd50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/full_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8ad8fb76d22414f34292b139533c89db4c70270f84e40db13884239e6c3d60 +size 11215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater.hpp new file mode 100644 index 0000000..c1fd22f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:594ea57b6dda4888da5a4a113a59f950ca11d024d2039025ae9704613a288301 +size 2024 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp new file mode 100644 index 0000000..c7e7359 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8923f7199187d645b83e671197915317071b5f46a19a8e7dadfb8b2eb55f5afe +size 2109 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/inherit.hpp new file mode 100644 index 0000000..70be044 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4f16f5181481038c98e1d14bdae1a8dab3acd1f0952499a969fe3093d61813d +size 2467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp new file mode 100644 index 0000000..c1acc01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_if_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:acc097fe7a8a705d537a17859f2f6ff2f7ce7e687261e1f4235f794fdb4688f8 +size 4274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp new file mode 100644 index 0000000..cca419a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56eee865128b7608c098510ad708a849907a80c9f9f8314e5c6cf416992079e5 +size 4158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp new file mode 100644 index 0000000..d6e1fb8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/lambda_no_ctps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7687e5715126913c0f29f61ba86eef94d7fdaa705c47d08587285adc1b9e790f +size 6414 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less.hpp new file mode 100644 index 0000000..4df5dae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67641601043e466b350f94941c1d3e02a18d8b0ff68281458f9956ee951f1b08 +size 1982 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less_equal.hpp new file mode 100644 index 0000000..d689930 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07ae54b1fb81d7afa70f08367d9c0cef03b26b9af8fcf21b83ec15b63874962b +size 2067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list.hpp new file mode 100644 index 0000000..763186d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e73c15b7e2fb9c62158af870a854a335fec2490a0f74100a706baad058a4d158 +size 9616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list_c.hpp new file mode 100644 index 0000000..2032686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ee008389f1cca2faf27ed1da73c939ce2ff78296416feb06958c2466bb93345 +size 10717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/map.hpp new file mode 100644 index 0000000..4625f58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a002cc4fbd7bf1a8fc5e286ae3b19d9708c0036dc2832babbca4d1a872adb183 +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/minus.hpp new file mode 100644 index 0000000..aa59930 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c7e258a04b367a488facbb089266c416dd221826513b39988d10d004231d6b2 +size 3026 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/modulus.hpp new file mode 100644 index 0000000..d09343a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6d4e1fd64c52dbdbd40c976218d98aeb3e9974f03937d8c7b9de6223f199e51 +size 2237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp new file mode 100644 index 0000000..dbbfba7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e891eb2effc6feb6890ba54bc66b8417a402b8bad6b4fc18860e8ce7a70b876 +size 2095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/or.hpp new file mode 100644 index 0000000..3273c78 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7645364581e874da099ebbfbb4fe0ad416f23276474c698814e26ec9644bec14 +size 1156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/placeholders.hpp new file mode 100644 index 0000000..b8ef78d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3d080d1d6bdd3d373c1fa5f19cad988430dfc29a626f7ed5f1e7abaa4381fa8 +size 2211 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/plus.hpp new file mode 100644 index 0000000..e8423b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43498ca5ededf2531ce0b4cae79c82d57082b779ab90371842f93d5b5415f70a +size 2997 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/quote.hpp new file mode 100644 index 0000000..af5c665 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cf2f4f8b21bb706886b2adb76fa1c1eca3ea06c9fd43e1889b0e5dcf4825bc3 +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp new file mode 100644 index 0000000..8bd7744 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16293df37c25ff8a277b36af2a1184d3883d5aa73faae01768c027ba8c88802f +size 7372 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..223d946 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba3bcf3f96dbae8d9cc54d8df52417c2df1346aeb6c3a3d3f4ddf0d5aa874847 +size 6717 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set.hpp new file mode 100644 index 0000000..3eb75d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4e7071dad95512f5828c2ac50f842f169d093297cdb2ba903085d0691af03cd +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set_c.hpp new file mode 100644 index 0000000..5f8a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608eb89b22961ab2a5b1ba5cdfc115bc58be754a108d1038bf498de563e1eefc +size 10652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_left.hpp new file mode 100644 index 0000000..f63bc1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb4861e3e4721b71e4dc519af02e9fad59b8175c28fe490a8031111fca17b28a +size 2193 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_right.hpp new file mode 100644 index 0000000..c6b3ff8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f59b49a8785292bbaa9f9d078974e674eb43862436be2f74b21bb488f26a9f9 +size 2207 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/template_arity.hpp new file mode 100644 index 0000000..e29c8bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7f7f402db7af2a929cd4eea606d870506e73ab076f073cd5b0d08322cb718d9 +size 306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/times.hpp new file mode 100644 index 0000000..34d1232 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cce2da1dc586e84d510cec378a45b3232bf74f3580751c05e91d1d07a432b89 +size 3026 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp new file mode 100644 index 0000000..3d93ce2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91d1e3057b2731938c0e74eede0338fbe7f2c7d578d1d888bcbc8d3a50bde152 +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector.hpp new file mode 100644 index 0000000..96bdf70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e22c161ecfd115c7f9154b25cf8e6835e2e30a6d49dbeddf4d98b012fd018c7 +size 9746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector_c.hpp new file mode 100644 index 0000000..01100ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessed/plain/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:630a3139e05016e8afd31fbedd1190ec07f6d31c8ddb5a2ce4399e551f07ac64 +size 12237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/add.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/add.hpp new file mode 100644 index 0000000..c2e26e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/add.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:142dcf0b8b8d30b72d92c932b4353b15ad7b8c487837464721644f0e28c27da0 +size 1854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp new file mode 100644 index 0000000..16ba733 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/def_params_tail.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54274b3bb920f4a7199ce344151990668a74f0a8e73483f8034910e1280d728e +size 4473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/default_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/default_params.hpp new file mode 100644 index 0000000..427628b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/default_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6af730994a52590c6cf07779d2b6e2bd7ceff1856823b7e094fbd5aa0fd047b +size 2395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/enum.hpp new file mode 100644 index 0000000..1288483 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc3581adf5d053d47ad28b8cb6257853a89dffc56269b498fd614fdd70be41f5 +size 1656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/ext_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/ext_params.hpp new file mode 100644 index 0000000..22f236b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/ext_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:834dd20dc86e338f0a382ef24cf13abcfa1f6aab52e53e45066c1610843d64ff +size 2917 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/filter_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/filter_params.hpp new file mode 100644 index 0000000..51ae764 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/filter_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b217235df47e7251345b416b4977fa31f2c91bde1083aae1b966d1dedff389fe +size 1271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/is_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/is_seq.hpp new file mode 100644 index 0000000..db29b9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/is_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd4796e1d3b0e24a369a58ff74c43f76b5fb32414a82c36e903414773201d014 +size 2074 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/params.hpp new file mode 100644 index 0000000..a0dbdaf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49ad39c4d3b81363d8c01cdf9a90e299a830a76c6a9c0f915e867591d770efd7 +size 1926 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/partial_spec_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/partial_spec_params.hpp new file mode 100644 index 0000000..e22d9ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/partial_spec_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98f480c010f1b3f5573c3bc8dc292669fa9ddc2fe10e566e5d561b2295287976 +size 1005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/range.hpp new file mode 100644 index 0000000..a6081d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2e467746e05ba33e260af651f80840ed4f74ad3560425f84a428fce525e595b +size 843 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/repeat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/repeat.hpp new file mode 100644 index 0000000..2991f92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/repeat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a1e44e66f09002829ae8656c1d898473f0c2d7b0f806d889218ff7a1ebd2f4d +size 1846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/sub.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/sub.hpp new file mode 100644 index 0000000..b37d774 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/sub.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7ba4fbf672be58570346fc9e41516470f8aab3aa850ad28c75223329e310f4e +size 1843 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/token_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/token_equal.hpp new file mode 100644 index 0000000..f9bbffb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/token_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc7de69970a4409546857a2cb661a95f62228b75cdb0d71c40a4a8e69adff718 +size 1897 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/tuple.hpp new file mode 100644 index 0000000..17a19a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/preprocessor/tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9a81a1c9c68ad22f9deb17f40deab930deaf1f18814a68c77d4980f738cf227 +size 1288 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/ptr_to_ref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/ptr_to_ref.hpp new file mode 100644 index 0000000..6dbc46e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/ptr_to_ref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4edf9744de591f5319c47307abc8777688b12c52ada8648ad279d897d0b36d5 +size 1095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_back_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_back_impl.hpp new file mode 100644 index 0000000..b6ab936 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_back_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d2270ad96a22228249079313c63074adf226b798c124d99cc2fcbc3abb1de17 +size 2071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_front_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_front_impl.hpp new file mode 100644 index 0000000..26c69fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/push_front_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6122b367c417b0cd2af9a8d5bfe264557233e5f6160e964a3fc0d915a65d1ce5 +size 2092 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/O1_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/O1_size.hpp new file mode 100644 index 0000000..9f5759a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/O1_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76940057dcee7a4e9b9c7bf444fb6bbf15d2cc38417d7d21937391ad84a61553 +size 722 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/back.hpp new file mode 100644 index 0000000..cfa9f39 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bd0cebc1aed4310a5f87a44d1a296a5c6d9ff94d1a9d8e727835820b8910b0d +size 777 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/empty.hpp new file mode 100644 index 0000000..674bd85 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a25cbded637e4beada32c8d22ed614670e8afee8021ddde3f599854301d3782 +size 823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/front.hpp new file mode 100644 index 0000000..112dc67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91421373f13aa522643121f631a5fe18806aa9e11e93f4ab80b6d63f12e196e3 +size 726 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/iterator.hpp new file mode 100644 index 0000000..7c32738 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5cf861e7c684fc52c0e69fbd07f56c249632668fc9eda0fdb896e4944f0ab07d +size 2654 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/size.hpp new file mode 100644 index 0000000..d66aeaf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:080d7314afec38fd92f7728f51875cd282c4a8c2976cb9a9cf67eb036924006b +size 812 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/tag.hpp new file mode 100644 index 0000000..e9ed7a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/range_c/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3e6d3e3d9608cce1fadac4d5766823a266150d5c72fc2c53981acceef371b08 +size 543 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl.hpp new file mode 100644 index 0000000..8a1fa1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76d4c331e35e62e72f0f5663c269da3e1c20746b79eafb8e8c75ed7736195edb +size 1384 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl_body.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl_body.hpp new file mode 100644 index 0000000..e94d8c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_fold_impl_body.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad84e878c93d0342abcdb5f116c293faee45c4d3949b044db373b49de9c5317a +size 10599 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_iter_fold_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_iter_fold_impl.hpp new file mode 100644 index 0000000..d697cad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/reverse_iter_fold_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bcaf337993e4b037a064fad1ac43124793b19ef1505d3e338055e6ab5946ce8 +size 1356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sequence_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sequence_wrapper.hpp new file mode 100644 index 0000000..7d36fdb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sequence_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72b191fa3ac6c8828ab8c7f849e10eac56df238fe24691df214ad9568ccdfddd +size 8170 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/shift_op.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/shift_op.hpp new file mode 100644 index 0000000..b9d8bd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/shift_op.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9fe3aa6464e97d023bfa82efcf00656e061db51290baaac6545d1164b3e05d4 +size 2246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/single_element_iter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/single_element_iter.hpp new file mode 100644 index 0000000..015e88c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/single_element_iter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8dccbdedf3f411ddfd9f59e3b217f2bd00d188e6747f5134a5b1aab0e2eff21 +size 2789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/size_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/size_impl.hpp new file mode 100644 index 0000000..5c60cd2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/size_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b79342c64ba805e79214b4ed053a546aef4698950579ff97967bf49b0667b37 +size 1322 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sort_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sort_impl.hpp new file mode 100644 index 0000000..922f204 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/sort_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30305b44d22c3ff7c78779f667416e00d590fb5a01bd3e0dff8edbc243a8a086 +size 2877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/static_cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/static_cast.hpp new file mode 100644 index 0000000..21bbaca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/static_cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c47fb69b45b1ab486e2921caeb899019f874764df12c1937119741c2c590072 +size 768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity.hpp new file mode 100644 index 0000000..c70793c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5f7fa518eff15dccd658f4d73bae3faa96765513e25dde4d1d38eaec73763fc +size 4735 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity_fwd.hpp new file mode 100644 index 0000000..9bad335 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/template_arity_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf95228a7010cfaf32d7c214b20000e09c26afdf4739d698d29238098147c80f +size 563 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test.hpp new file mode 100644 index 0000000..e55fbc4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ed164d512a109de82fcaab4ff243a47377c345f11ea006e98f58861bb1e6e09 +size 729 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/assert.hpp new file mode 100644 index 0000000..cadbf8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e40bdc56cae244c1ed927d54e62ce551d9d67136feb53a01b9e58c19386e7475 +size 910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/data.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/data.hpp new file mode 100644 index 0000000..8749c1b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/data.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25112c8e566a345f4154da6bc8eb3040f70ec4ae3f0fbd021435d0571e92eb92 +size 596 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/test_case.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/test_case.hpp new file mode 100644 index 0000000..d06a26c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/test/test_case.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0669b85dd2a392dae20d0118adadd10f6761415e224fddd297b3e68db4ee699e +size 547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/traits_lambda_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/traits_lambda_spec.hpp new file mode 100644 index 0000000..7fe4910 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/traits_lambda_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cccf5d2089695f55d733209245b6614ec5740d061b306174bc808cda424ce0c8 +size 1569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/transform_iter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/transform_iter.hpp new file mode 100644 index 0000000..d975e2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/transform_iter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:352348f0dc9262fa7f0da40665cf82769b5d36ede84bf4184d0d54108fbb0af5 +size 2636 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/type_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/type_wrapper.hpp new file mode 100644 index 0000000..2629471 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/type_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5699ac051ca130e263ed8889deea522e9e7ca167a8c1f99f4c01cc4da210c15d +size 1181 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/unwrap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/unwrap.hpp new file mode 100644 index 0000000..36a98b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/unwrap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9494178ee595a0ff3e16197fb15d13c6d50fc1979ff954120d193c43b0c613c5 +size 929 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/value_wknd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/value_wknd.hpp new file mode 100644 index 0000000..1341a90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/value_wknd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c84c8e72c3bef461dae2b4f1f905f546bbe05fbec3109193eaa259fbee6efa6 +size 2029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/yes_no.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/yes_no.hpp new file mode 100644 index 0000000..d0eeed6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/aux_/yes_no.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:980dbf5b1bd243891caeeaec32a63b7819c18cdac6db0b0413a813bad36ac873 +size 1180 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back.hpp new file mode 100644 index 0000000..2851148 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5532e15090e00f74d8d2f568c107db66cb7afc126eca6f54e98f1b6318f5e648 +size 901 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_fwd.hpp new file mode 100644 index 0000000..61512fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41fad83b18de9aee4ecb2737d8217bb6edb98658a94e98167fe199515ffc8fd6 +size 544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_inserter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_inserter.hpp new file mode 100644 index 0000000..7bd3f6b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/back_inserter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6a008191c12e8d94a39e57648785e704093aa11ac4b7545910b1bb287152d28 +size 686 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/base.hpp new file mode 100644 index 0000000..ad5f8fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65d8c570aee85912038ad328879377fa606128103919d69944fbd1b9b48707ae +size 716 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin.hpp new file mode 100644 index 0000000..b3f41dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a375f18358f453b319fab748d1e12ec7e1cb85a0c9434b2253a69cfea13713e5 +size 440 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end.hpp new file mode 100644 index 0000000..02b5b33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0bb43a74752087b6298c9b54cf719c045f256c635e65d98248dfa122b011d167 +size 1444 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end_fwd.hpp new file mode 100644 index 0000000..d2f7998 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/begin_end_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c386498474bd3bdbb291f1fe95e9ec99324f4cc75f3894664e58b4cf34b7196d +size 646 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind.hpp new file mode 100644 index 0000000..2e4fe5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e171638f418e5d0e8b53186b6068830d74c44c5a901ad5c13887edad27c7d018 +size 14951 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind_fwd.hpp new file mode 100644 index 0000000..7d849ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bind_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d88766b0b16801785b270bdf1b80c5c4b4aad0c0836e74b649e71bdbd7ad2eb8 +size 2493 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitand.hpp new file mode 100644 index 0000000..a03b58c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0cc372da1c89e7f7155eda2e50d5ce3f15b2e73319aaef7f1bb4183628e5f9c +size 1146 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitor.hpp new file mode 100644 index 0000000..28aaede --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f280c8661254f6e99cf5112466049459a3e5b3131d060e9d81623accc1a7462 +size 1133 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitwise.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitwise.hpp new file mode 100644 index 0000000..0384029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitwise.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:185e6479c9c0262c992fc687bd375e050e2f14a184c7f019d12aef76542c63af +size 613 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitxor.hpp new file mode 100644 index 0000000..59733c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf3903eae8b1155f617d7b56b5759c49f13fec9c44e1ea68d03dcae7100a589c +size 587 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool.hpp new file mode 100644 index 0000000..a1a7cb7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2dbc31841313aab6fe3468199c6b15ce12eea0a8bb4b073f8caf10b2a6389b +size 964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool_fwd.hpp new file mode 100644 index 0000000..b76e23b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/bool_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2bda031dcee52f1bea6015e5ad2af309e0a0ecce882de63b4d39c9f2c04ed4f +size 766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char.hpp new file mode 100644 index 0000000..c46ffb8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0045205642a23207558ec3809456d066fab7ea7b82f0b1db20509da2978c0b61 +size 575 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char_fwd.hpp new file mode 100644 index 0000000..06900ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/char_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2e04164606e82597ec3662dc59f3bb1c1c536b5e58a656498ba64e75739a2c5 +size 734 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear.hpp new file mode 100644 index 0000000..d71e33f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a67b46819809b86bdb7fa26c2488561ee6bcc9c8ab70d85ad8e3d9a4bd9a75b5 +size 910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear_fwd.hpp new file mode 100644 index 0000000..3a359ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/clear_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a298da13e96589319d5a75065f623d93afaf4d345a4a0e5879bc8299153c235 +size 549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/comparison.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/comparison.hpp new file mode 100644 index 0000000..98f97c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/comparison.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e061241bb23f20d48e3cd91021f9299d2516d6a439aa8e46e499848f00322f0e +size 635 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains.hpp new file mode 100644 index 0000000..cd36ada --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e87122453394ce0538bf97f75ed496fced290276ae284c3c6cd26d47454ade2 +size 1009 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains_fwd.hpp new file mode 100644 index 0000000..9e08285 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/contains_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f86e6a8c6fbde1e29dcf1d66c5c6495f1ec59709677452d80ce5afe59ef31dea +size 603 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy.hpp new file mode 100644 index 0000000..ed1c658 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1553ebcf2e8163096c0a9c5bed99031fdb9aa9e5689094c0ebe6cc0958fd97b +size 1106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy_if.hpp new file mode 100644 index 0000000..1a9121a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/copy_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e88a8602a03dd109826835a55e2c96634c7631ae82c7a66216e29ed75486f723 +size 2085 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count.hpp new file mode 100644 index 0000000..593f690 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4350b4ce8f1aa0a7ce8bd21a4ba62f9c8c723069e1f01deff20add937b518936 +size 953 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_fwd.hpp new file mode 100644 index 0000000..4292f98 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57f3454d3c28e3bef957b87bdc7d942c985b0c1d0317f25263e5a91be2c4b548 +size 561 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_if.hpp new file mode 100644 index 0000000..bb8aaad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/count_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aace25ca89c47b36dc424ea97aa03771e9e185c4cfa06ebbb54c84b90b66f3cf +size 1766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deque.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deque.hpp new file mode 100644 index 0000000..3e750cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deque.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c1176b5c2d49c7d837d4539d86b288589b41a468f3ff7f6417b04e41b0ac937 +size 1682 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deref.hpp new file mode 100644 index 0000000..900e705 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/deref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1d8706088282dad91168203a105c4670ef03275f8716f91735fe957954ece7a +size 939 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance.hpp new file mode 100644 index 0000000..21ad6d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de2db4eb792b7645c8bf8ff8edbbfd69988db7cd29852e017802f2e50b442e5f +size 2028 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance_fwd.hpp new file mode 100644 index 0000000..0ff85d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/distance_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aacedd79495484e7ae28a5a108d6618ce6ba7e3850ad55524fc9cd68ab0c9cb +size 666 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/divides.hpp new file mode 100644 index 0000000..5d8438b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53ca3251d266947d51f8d365e15dacfbb5ffe7f5ab866526d7c34c9201bde248 +size 523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty.hpp new file mode 100644 index 0000000..5106f9b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f5df664afc9c845a624cffc9ec4ef01e6f8624079cc458f192e879a2b47e54e +size 910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_base.hpp new file mode 100644 index 0000000..44326af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb8b82192f91af9b13d00197d5568c52fe64df3478ffd4b750222ca89a934097 +size 1399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_fwd.hpp new file mode 100644 index 0000000..974265c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aec2468473451a7833a6502ddbd0d53a7b2e34d8b283ca7da6b954e7504a28a6 +size 549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_sequence.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_sequence.hpp new file mode 100644 index 0000000..50410a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/empty_sequence.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5862e01fcde3cd58ce1c7af33052f7d7b8a7813347774134d20877089020a62d +size 921 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/end.hpp new file mode 100644 index 0000000..6654c38 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91fed9a32d03ad8235e8152c88c2ec0743f2ebc747d69a875c9b89cf6eb798cd +size 434 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal.hpp new file mode 100644 index 0000000..f235b90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d3e08d0f19d70e875137251952514bf39cab9482c7ec9627df95409b56ea179 +size 2668 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal_to.hpp new file mode 100644 index 0000000..d6a0afd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989a43e4ffd1b27c34be6a81c1a0dbae02f5748816d8090ed8f0e226f17c6a2e +size 528 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase.hpp new file mode 100644 index 0000000..e09f153 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05e261c5691e133f47ee480d82bbc2ad508a48dadfbf9c54103848b5c05da1e7 +size 1071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_fwd.hpp new file mode 100644 index 0000000..ce97662 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae81e26230bffbe114595f4ff5601fe5034f949ec2da488d7bbe0be14d764609 +size 580 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key.hpp new file mode 100644 index 0000000..d2f497b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27005e79cdd2edf4b41b152f17e3f838b541f2095f4482b75da7a25924044af1 +size 1047 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key_fwd.hpp new file mode 100644 index 0000000..3f691b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/erase_key_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cb83ad674bd0a0710656b3cfe62b41cade9ec4571b4f2ecfdfbc34bd9b46520 +size 583 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/eval_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/eval_if.hpp new file mode 100644 index 0000000..ea2d6e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/eval_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdfad47fe1e2b98d4ffc3cf9c61da48e7aa274713e33233ea01379f8ec13717b +size 1754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/filter_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/filter_view.hpp new file mode 100644 index 0000000..46bb339 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/filter_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c07330e83bb964552c9566e515a7560dae6538c57e2b5a7cdf21511caa45a5e +size 1145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find.hpp new file mode 100644 index 0000000..8d20b33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26078484a57dce1c6cac3c7cc86c520a1db295763f2049fcf95125eb1beec0dd +size 841 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find_if.hpp new file mode 100644 index 0000000..6d6e690 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/find_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc185d56a4044c14e230782c3f44bd9d8decac52e90016964f8cc1b0bcfaf981 +size 1196 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/fold.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/fold.hpp new file mode 100644 index 0000000..f2f9867 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/fold.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b9962b1844b7cf7f9277a1db9241ee5525364d9ae80bb1ff06a4712b5600de5 +size 1177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/for_each.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/for_each.hpp new file mode 100644 index 0000000..d63358d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/for_each.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:146ccd64155dc2f715fbdc10f7b932fce2ef1abbdd7d57bc8e27b933dd6cb708 +size 3077 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front.hpp new file mode 100644 index 0000000..3414564 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00aa047e2529ed40ccc16a1e4e870a42eec70bc9c2869d40c5a8d0f5e5b622f4 +size 910 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_fwd.hpp new file mode 100644 index 0000000..e5a0a7d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c716fa5a6a6c845b4f0f2660f5cb725f484d7a2565aa2dc01e3b0d574beb8ba5 +size 549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_inserter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_inserter.hpp new file mode 100644 index 0000000..b4ee1d3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/front_inserter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:135ac08604b23b3f3db0a80b778ec662e24d9d400e3063a81d4d84bdfceac9a0 +size 692 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/get_tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/get_tag.hpp new file mode 100644 index 0000000..b98866b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/get_tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68f397ef0a3fcce76b4d80df7b8c6f85311bca57da9c0fc7bc25690e1e2869db +size 576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater.hpp new file mode 100644 index 0000000..c9ba31c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52a3c9828fc06efd64eb1bb9ecdb360bfcf7e6ef81b3efbf210a61e537748bd1 +size 523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater_equal.hpp new file mode 100644 index 0000000..a3537be --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c2135302525c67960bd64f9eb8694998a0650c5639e39732c8bb9dd6a635236 +size 548 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key.hpp new file mode 100644 index 0000000..04875e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8772ea6c3ca40b56ec319ee52dad216c644700ecb174a19665b363ed0088ada8 +size 1059 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key_fwd.hpp new file mode 100644 index 0000000..22ae8f0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_key_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34ecf39c063d1f9d813fbe7062e72699ac67252653cb99342aab54f28394bc98 +size 622 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_xxx.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_xxx.hpp new file mode 100644 index 0000000..530f7ef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/has_xxx.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6f2cbd32bf95c1fdaf10943f1c0c13cd03f06de75002b9d02a029ece6392d3f +size 22052 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/identity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/identity.hpp new file mode 100644 index 0000000..5cb6d13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/identity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7758b3b5b174259e1044abe427fba646c06a151807a0c77c0581eab7cf83ec8b +size 951 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/if.hpp new file mode 100644 index 0000000..09d72f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06dd08c2df80b8b7c99f6a544b1e9fd82d6848e90e64574d0ac49577dae2a49d +size 2912 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_if.hpp new file mode 100644 index 0000000..d20c5f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9079eebf0f9540be8fe4aa27d37b670dd22a0e92b3193e75bf9a9ec3c965812 +size 1508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_of.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_of.hpp new file mode 100644 index 0000000..c051eec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/index_of.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57fb062e1ef612afa759545196e68f12a5d30252fe576a45ed2da57cfb109924 +size 899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit.hpp new file mode 100644 index 0000000..5e410b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:328aaef7ed46f7b0253e4963c7b0665e382c0589af6583d7f7d8b1c317aaaa3c +size 5670 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit_linearly.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit_linearly.hpp new file mode 100644 index 0000000..85425a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inherit_linearly.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b51a792cb111856a8d9f6fa91e84bc6da8fe087e4fa9b06376bbc29d8a304ad +size 966 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert.hpp new file mode 100644 index 0000000..5cf06b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d808a47d516f5aa72963791f1cd12534085a3d03987e9caf0907a59d6b567bc +size 1030 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_fwd.hpp new file mode 100644 index 0000000..48184dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:169199ad6dd38b7fd75b4dc3325955c7997492ae40a9b20a3106dcdf46ea85c5 +size 585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range.hpp new file mode 100644 index 0000000..7ff72ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef2dfd67e47765809ceb6550522013a4ec104a807e39bcce1439640381abced5 +size 1081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range_fwd.hpp new file mode 100644 index 0000000..2e23d4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/insert_range_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b88a84dac9280fa968bae345a29dc0b3dabd0e29079f4c04263d0805984107cc +size 614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inserter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inserter.hpp new file mode 100644 index 0000000..76fef27 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/inserter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0e13043d9c474bdba2595ceb54b0fe7a3c0e6a9ee6b2c8ae176edb1fd723681 +size 648 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int.hpp new file mode 100644 index 0000000..53edd37 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:688205b1725a34a4df16cceef3509db8a786731f3b45d6fa1f908ff550654292 +size 520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int_fwd.hpp new file mode 100644 index 0000000..28108c8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/int_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a609ceed046808f5d3b26893d45d2f55eb5ce6d15243ea770837e4ebfa4c31e +size 678 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c.hpp new file mode 100644 index 0000000..9adb6ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d60b28ac065c4ac0ed4cf4c0ee5366de6c273a22602830980068de7e4f1ca1cb +size 1507 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_fwd.hpp new file mode 100644 index 0000000..490b523 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5e1a0e49eeb4e6b3f0d6f026981cf89408093dd52000a39340213da85cb5177 +size 887 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_tag.hpp new file mode 100644 index 0000000..576d117 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/integral_c_tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6fb4fbb74c0630652c670677c672c577a0a6e1b6902cc45181c9e00b51b3145 +size 725 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_placeholder.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_placeholder.hpp new file mode 100644 index 0000000..aba0a7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_placeholder.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77117902ce08acd1a594f5d5376cd4abd958f5a9bb7c53dc39904fb906e17352 +size 1483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_sequence.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_sequence.hpp new file mode 100644 index 0000000..5041f85 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/is_sequence.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbf467b9a203145eb042c784be7ba5b79c77e74d8255cc73d508660cf8125f3f +size 2644 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold.hpp new file mode 100644 index 0000000..354d07f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:651891801347e54c6e826eab4fc3a7fd09a209eccf60d3906e0bec4dbaf54031 +size 1272 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold_if.hpp new file mode 100644 index 0000000..cff1f93 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iter_fold_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24d7596ac1506624a9449a6a701970d434ea7345b000681da69e5a7a5394fac8 +size 3072 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_category.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_category.hpp new file mode 100644 index 0000000..506d997 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_category.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad3ffccb3737453fac4dc2c71202658064550c4d6737e0af52d50ace57debcbf +size 820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_range.hpp new file mode 100644 index 0000000..47a04f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cec11dbb36cdb016674d63570d071b066d9c5b6a3ba310eee900dd97f96032a +size 943 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_tags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_tags.hpp new file mode 100644 index 0000000..a2c538a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/iterator_tags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a3ef7e27c16c38ea5600a18cfa65cd8ede360a9e78ba879ec2be85cc23ccda0 +size 764 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/joint_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/joint_view.hpp new file mode 100644 index 0000000..5d3cf37 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/joint_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc4207894fc486c0117297e733849825dc46d33cc5e77cdbe8ef457635be4e3 +size 1656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type.hpp new file mode 100644 index 0000000..65b7f75 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe092b18be26253571cf8f7cc676349badb08dc65cac9fd4e429fefb77ff759a +size 1064 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type_fwd.hpp new file mode 100644 index 0000000..431a51a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/key_type_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04793c0a03a5747fd3eef842fe9560689f7999a018be63c86a77604ab1feebbe +size 625 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda.hpp new file mode 100644 index 0000000..8d36abb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d18e65e60be7085e5c1c680e9b6e507142807cda534db6bdb3fa9fd1034c395b +size 780 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda_fwd.hpp new file mode 100644 index 0000000..1607b57 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lambda_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47fbe349690d24ee254e27c87829efbd01234708fae5bca2d016445d2f1a340e +size 1201 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less.hpp new file mode 100644 index 0000000..d7114c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:766fd3ef7a1f934d525025577ea9649af1b53cc2401add2062982b1176c12a12 +size 511 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less_equal.hpp new file mode 100644 index 0000000..df6f097 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:829c9d8a1a3d8e0295f0a06272b1c1e0c8fcfdc5afc49e3e2d775accbe7757bf +size 536 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/arity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/arity.hpp new file mode 100644 index 0000000..c042b9c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/arity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5c11b556382551c904c7e6d1542bb30afc976097bc5350959bffc1cc5bcebf3 +size 535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/list.hpp new file mode 100644 index 0000000..0fcbb2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c4f6563e9a64f7f76c6f1dd9269cd53898634887b5906b96988ee101712b0ed +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/map.hpp new file mode 100644 index 0000000..8da612a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b2ff8304f328cd2b42dd5c0e9e59029ed011c69d776989d49e9eac2bf710328 +size 510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/set.hpp new file mode 100644 index 0000000..bf3c8a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3772c2e36e5c9ee6ecd6990d936b470f372a30bd46dc46037134a9a5e16f8de +size 510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/string.hpp new file mode 100644 index 0000000..9b235bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef312ddd22dc9e90d9cbf974e572ec96533d36801d42cf5d27276345821dae48 +size 623 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/unrolling.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/unrolling.hpp new file mode 100644 index 0000000..b5d9869 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/unrolling.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e3e89cc65efd3675b344b9e6b225e0feb8268d0a2309bdaa0735c14d81e4236 +size 529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/vector.hpp new file mode 100644 index 0000000..ab872eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/limits/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86064edf12142ce5aa7e21c3a978ffdea88c5dfecb00f34e12d5d9fb99688873 +size 525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list.hpp new file mode 100644 index 0000000..83c36bc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bb66f497c04a95a3ae1460dbd62bcdcac4ab6a4ad42256d47bad148f75a4a4b +size 1608 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/O1_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/O1_size.hpp new file mode 100644 index 0000000..ddffefc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/O1_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56a4438c61d5ff928f22120fb6c0e705f3226fabac309b1639ebe6f4bbb7cc8b +size 689 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/begin_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/begin_end.hpp new file mode 100644 index 0000000..bf710a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/begin_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3978fbebb460737c00bd567e9d4f9d2a5f45136354d8f7b0f6e736152aa5f59c +size 945 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/clear.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/clear.hpp new file mode 100644 index 0000000..8bbda1a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/clear.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6c61c02b5ce42af3072b82e3099b901fa25679ceb61c30cd9866e58ca05079c +size 726 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/empty.hpp new file mode 100644 index 0000000..6dc1d9d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce6e6b3a9be51a4acb82c6f4a73298f3d5cde9234fbe562e9c893283787ede03 +size 723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/front.hpp new file mode 100644 index 0000000..4696f1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfab90462a9ff855e4811b21afe20b40c3baa4508adc117c41d4c21d98466a06 +size 700 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/include_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/include_preprocessed.hpp new file mode 100644 index 0000000..cac41e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/include_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e101776e1c68bef67983764e1a0c319a972fa7038ceba8c4ee2bd7f505dc8be +size 951 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/item.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/item.hpp new file mode 100644 index 0000000..e4c4a34 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/item.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4414c22c494e22563f6fa4cb1db10fbb9ffe74865e34314d8718d5ad86e02af6 +size 1172 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/iterator.hpp new file mode 100644 index 0000000..2a9d393 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c357d127ac45d8856444a163954f817bea08ab97859f998be188129eb798360c +size 1684 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered.hpp new file mode 100644 index 0000000..54de4f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5ea09c8b3d70113610f2aabb2630e222ebbc5dcd49621364df2aef78f8ed0e2 +size 1307 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered_c.hpp new file mode 100644 index 0000000..89ff686 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/numbered_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926e5cef3901ba3f707a9d856cfcf9352a359b3a76cbbd9d8cadf870321b29e4 +size 1435 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/pop_front.hpp new file mode 100644 index 0000000..020c667 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c2c6f6b18228f8bfb9fcb4cbacb570256962efa4d42d571ba2141c92d7a6e7d +size 767 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp new file mode 100644 index 0000000..1573738 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14a28891a3ef987bafdc7c13ceae19c683fd7802d5782ec9632ca6aa6f9bbb6d +size 2599 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp new file mode 100644 index 0000000..b283620 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4baf44e972808978597359f8f17853f3fc1a1ca2e435ec633b3ae7da0110006 +size 2859 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp new file mode 100644 index 0000000..06f3caf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4426b2e12cf4bb37529706f3889d3ab5766df6fa65c3382309e39be024f90a77 +size 4451 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp new file mode 100644 index 0000000..650415a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7e5d3b8ba5011e02d06eabacf98541e84f24208f1dae34903c232c0ff4ab22c +size 3958 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30.hpp new file mode 100644 index 0000000..2eac718 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963201f09919c81f15d9036b796f57749f3131be25168515735d351472f24b85 +size 6351 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp new file mode 100644 index 0000000..a29dc3a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99b5dd7d89834f00a60e71dd36219ce6237d906fb814779557483b4a027c2f15 +size 5108 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40.hpp new file mode 100644 index 0000000..8aff911 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3335cbbff592a32ac0f6f9ced50dbff88811674505b472201c764f8c9d45b27e +size 8251 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp new file mode 100644 index 0000000..a5a3d17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b527e643550486766029f51cd33a2745a5d1d73efd2b178009b10bd64774c3a3 +size 6258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50.hpp new file mode 100644 index 0000000..0698e20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:feccaf83d9c636e6a0b53a3c71db6c34c234aa08297f8e4e074cc7a770817ebe +size 10151 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp new file mode 100644 index 0000000..64e55b4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/preprocessed/plain/list50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17789610fd2365d94c39018181c0b5c2d10ea0e8711ee1b9f6dab1f16eca0065 +size 7408 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_back.hpp new file mode 100644 index 0000000..6ae06f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:971b31e07b5a1a739c0dae95ef94a6649e7b17cbd8a691c4827149eececc132a +size 781 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_front.hpp new file mode 100644 index 0000000..b2e9c7d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1eef3c5de7cff42f5ba477e627bcfad8e3d73e7f0a3a4cab690d094f03a1069d +size 914 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/size.hpp new file mode 100644 index 0000000..97f2325 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e565a60bcaf9f145a5c08889b85b8e10cd4fa4dd972251e55d36c05cec086ab +size 674 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/tag.hpp new file mode 100644 index 0000000..f1e05f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/aux_/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcfca2428cdd25043e655dc923e4c13bb7dc686f17c45679c5ee0cb888efc1f4 +size 523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0.hpp new file mode 100644 index 0000000..5018948 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff3a2f2d19273a1f35d57a12a48734eb5cba4b9c260bcc42e0999cfb1efbcf5f +size 1071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0_c.hpp new file mode 100644 index 0000000..951d9c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list0_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:584bf909871f217891b78b881b6c6d5410c88e2a810c1b715eaf975f49f2998f +size 648 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10.hpp new file mode 100644 index 0000000..44dc3af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27486c18a436f5f7bf2f48ce5f783d3e8f0ba6b8d7b435ce42e38ed560bf2908 +size 1051 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10_c.hpp new file mode 100644 index 0000000..d5f201c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aeca00503b02932f417e8bac940d673b3de1c7caad0a63b6008b6f95d53a80d7 +size 1060 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20.hpp new file mode 100644 index 0000000..630cce4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a7c55ad977b59782f3c2a9cc7ef77af8c048b41c623f63f622bc80fe45b6037 +size 1050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20_c.hpp new file mode 100644 index 0000000..2427610 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d625e9b9f14365a217b1fccd30d598abc3e2573207ed237473414816d258c14 +size 1062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30.hpp new file mode 100644 index 0000000..5af4959 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dc0b3d2e74c9ecfef658925c56e21e2c86f9746168d41ed893cf2c4bda1ebaa +size 1050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30_c.hpp new file mode 100644 index 0000000..b3bf99a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67b7fc0109e7bee291524e6c3b83f95f5b8405fb30470b3c48d2bef9457f8322 +size 1062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40.hpp new file mode 100644 index 0000000..47098c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d707698615d0b044b60cfb54da15796abcf8292b7dd54bdf51899958bde41612 +size 1050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40_c.hpp new file mode 100644 index 0000000..a308755 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4778dd036a6e035cd901499c48a1c06fe6be8669f94d4fa610c7b981bf2a75a +size 1062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50.hpp new file mode 100644 index 0000000..a7fa709 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:532fb1535b8435f8029358491d1dbbc1befd0cd80c74ca0cdc0e5fdd5f325bf0 +size 1050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50_c.hpp new file mode 100644 index 0000000..0ec7d71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list/list50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff4a688df4122beb40a157a8e648e5838469bfa7efdb888291f3789db5052913 +size 1062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list_c.hpp new file mode 100644 index 0000000..64ed5f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/list_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68648b7dbe516176d4f310a21061021f1781fe82f6e4dcd09b6006c7d8d40f66 +size 1814 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/logical.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/logical.hpp new file mode 100644 index 0000000..7b2ba03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/logical.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07b1c3926dc70fe644ff150099eaa167f4dafbb383dd763682fa7118632c860a +size 502 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long.hpp new file mode 100644 index 0000000..3776f5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84c92ce736ec42f067dd102b92fd6ef71676906f534c4f37cadd1511280e17a1 +size 525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long_fwd.hpp new file mode 100644 index 0000000..55a2d76 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/long_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7e3e6dfbaffd41bdbd5183c91d6e878dda858b936175fa639eb7f02802ce6717 +size 684 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lower_bound.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lower_bound.hpp new file mode 100644 index 0000000..3196066 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/lower_bound.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b50410a890c297aad96008a5f448a68717fefb1bdaa7a1ad7b65ce29fe9b5044 +size 3603 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map.hpp new file mode 100644 index 0000000..1d13133 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6670fdac98a15d3845f2336140126726f15278ea9f9401d6e49ab0b54965ea03 +size 1593 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/at_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/at_impl.hpp new file mode 100644 index 0000000..b5dc1a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/at_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1ab571911e2be8c55fa2341669a76d58342b26d3c9761b43161a032c673f2f1 +size 3391 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/begin_end_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/begin_end_impl.hpp new file mode 100644 index 0000000..4ca8392 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/begin_end_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42338399cf4cf21156304437fadfbe038cd227507b36ed13bd45cbc481e225da +size 1231 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/clear_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/clear_impl.hpp new file mode 100644 index 0000000..abd8f86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/clear_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c50a685f00d73cf55f65401c0bc782c9d95a0e68272594d0e92a3c65407f32d8 +size 773 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/contains_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/contains_impl.hpp new file mode 100644 index 0000000..14c988b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/contains_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:843a7b6274588cf91a597518d6289b85f9e5f1287312c85b5e12844efeb87d7f +size 1017 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/empty_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/empty_impl.hpp new file mode 100644 index 0000000..0f9be00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/empty_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1f954c743cb83a3f041b54582e15d333b6195983ff51dfda3851c7e28d7ed61 +size 733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_impl.hpp new file mode 100644 index 0000000..3c19bae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a21c43126086bdec46dd7bf5b3038b9749c564f3ec470d750f3f29fdd1c9f31 +size 918 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_key_impl.hpp new file mode 100644 index 0000000..2ca65e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/erase_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1c5244c83ab34e6b64f2752c5b3365e0bc97db5aec3712665078ab2580d2de6 +size 1285 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/has_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/has_key_impl.hpp new file mode 100644 index 0000000..3f97c82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/has_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ecd0045fd2e278695ef37f86ff900a416e2a0af5d6dddd6b5a1b030931ff92d6 +size 1087 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/include_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/include_preprocessed.hpp new file mode 100644 index 0000000..5b8b306 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/include_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e77bf82ce516230b1cd029402c6719b1be3ca0710487ffe0764bb00333c4222f +size 1586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_impl.hpp new file mode 100644 index 0000000..c834404 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:684bfc7aa5c45de46b89442fb8a3f5f5db9f2bbaf578c5aed2572c3403829503 +size 1622 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_range_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_range_impl.hpp new file mode 100644 index 0000000..ffbdf50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/insert_range_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18d58f2fca25995d426179792c9227f6bce6bbc0d8fad6be5431d75a7cae4d4f +size 920 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/item.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/item.hpp new file mode 100644 index 0000000..045e2d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/item.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db0fdf7d2d0f2773f2d5048b9558a385b4cf077879181a399c32861db22e7577 +size 3932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/iterator.hpp new file mode 100644 index 0000000..1b31693 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f00c8445202f46c413a146cce4b6dc0b43c865dd97e3a0cb332b6bbb5bfd357 +size 3604 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/key_type_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/key_type_impl.hpp new file mode 100644 index 0000000..d8dd16a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/key_type_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fb210fdda75b871770d4096764134281f96d6cd6c85fccf49bec8852f9b9248 +size 781 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/map0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/map0.hpp new file mode 100644 index 0000000..1e1513e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/map0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ae44da83a268b682c2acfeb75e6ab6ac8fe5893f29b2ddb6e55c6bfdfc1bcf4 +size 2155 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/numbered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/numbered.hpp new file mode 100644 index 0000000..2a28a05 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/numbered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:269ebc4da6d8b3ec917b84cc2e091e222368e285761244201d7eddd34104f767 +size 2458 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp new file mode 100644 index 0000000..0d06bce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5c09518875afc70ad46614ae506d7217b9d3f8dd75e9ec90cea4e1bdf70a2e5 +size 6280 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp new file mode 100644 index 0000000..3ad213f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da1955d698aa8f8ddbd2aa7d0ee06eb638749fce7ee1329fd6b9a5d3fcabe189 +size 8177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp new file mode 100644 index 0000000..00513e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fede46aa3f7a7958e565de653844c3125357116e14bc042718e731cf41f68f45 +size 10077 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp new file mode 100644 index 0000000..bce4976 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa82ee830ea25996227d8cf6d3ee241be7658650f1c3afd76d3e5d220e19b431 +size 11977 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp new file mode 100644 index 0000000..39e566a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/no_ctps/map50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a496040019cde20adc9229101441005272fca173e65bade661a9258dded8ac26 +size 13877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map10.hpp new file mode 100644 index 0000000..b838113 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eda4a71d4a25493a296c98267186077b8894c09f23eee5062b8c9fc1f43074a4 +size 5380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map20.hpp new file mode 100644 index 0000000..42be91a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae85510f49e84398e11e5a21238049103d4f355e42d4339694a682cbf9de3b2 +size 7277 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map30.hpp new file mode 100644 index 0000000..d48d68f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ec1946f659702d2660d50e8dd03643bed759dec9b0a347b08d5c177459c410f +size 9177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map40.hpp new file mode 100644 index 0000000..a9ae4e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5df8cd987dae577ebdf2c658464c11311a25a725e4f15f911cf0243a838ea22 +size 11077 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map50.hpp new file mode 100644 index 0000000..3977237 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/plain/map50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7e26d6b2614e1a968be215168793b8b3b8334962181c656588f48c5099e6521 +size 12977 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp new file mode 100644 index 0000000..ed9a492 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab83819e5fa1c4de954fa27b3b37d694ed07ffd5dafb9b152d8d061d7fd7640d +size 2878 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp new file mode 100644 index 0000000..68467d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22f920ea1cbad2bee0f4efe66faf582198b3daa652bf13d13d5204a9d287ad08 +size 4727 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp new file mode 100644 index 0000000..0fd2928 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d449a5f740c5bf906a0f4db2fb3edad96945b36c68e0a8f70eaf2d51528fcd69 +size 6627 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp new file mode 100644 index 0000000..181c39d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5389fe52c7d3c8256f8d6bf18834ffb09f7174f9a95c757bc4b690ee3cd785c3 +size 8527 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp new file mode 100644 index 0000000..fdeeb33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/preprocessed/typeof_based/map50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a43f696f4fb23f8a1a4138ffbff050cf78e21d4f0c2cc92a81b1007a5a1396c6 +size 10427 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/size_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/size_impl.hpp new file mode 100644 index 0000000..a86b5cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/size_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72bf75ca440247125980c318b388f775a80c1d601a6f1d44bd199aa9626b6cd3 +size 682 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/tag.hpp new file mode 100644 index 0000000..e670190 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b206c88079890e437f3413b2c196b8b38a00f2c1b71b53c2a5f7000307dae5b +size 538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/value_type_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/value_type_impl.hpp new file mode 100644 index 0000000..8e1296c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/aux_/value_type_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e351ac43e30e6c5491948b6131f992ae7a7b34938e5c9b931832e12f1691e29a +size 792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map0.hpp new file mode 100644 index 0000000..94038ef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1b97891dd14845ea5217a61f6081ee5ea2d6e4f73b6bf0ea22c0d51d2d5cd22 +size 1270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map10.hpp new file mode 100644 index 0000000..c24a5b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f913af4b7e5b46c19742b1fc9bb8fd9c4360ccdc50a8c131b852c317aa5df235 +size 1078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map20.hpp new file mode 100644 index 0000000..9984b2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb5150b89abf7fc56dba45fad750eaac9f4b723f28bd69ad4502924492697bfb +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map30.hpp new file mode 100644 index 0000000..2f1bc9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f71b98da90ed14dc20bc5708c268d1096d002e6233ea36f81314e830eaaeff6 +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map40.hpp new file mode 100644 index 0000000..88ec718 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:991cf0561b9c895113e332ae435b69dd76d1678d7fdd0a27e56cb7de7dadfe4f +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map50.hpp new file mode 100644 index 0000000..b1afb13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/map/map50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:396f2c6c95c07a8891e3a75045e4820f0bbccf5ba8d25fb50996ceacb07a4de2 +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/fixed_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/fixed_c.hpp new file mode 100644 index 0000000..89d3e52 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/fixed_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99782fd719c1f532426de346f125dc69cfb0d99e6088c060dd1850a5df80a6ae +size 809 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/is_even.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/is_even.hpp new file mode 100644 index 0000000..baa48c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/is_even.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a4faafb414525104192fc32a4628e7804a091fcbd8ab35c503826cabbd12e7 +size 1152 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/rational_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/rational_c.hpp new file mode 100644 index 0000000..e1ca72b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/math/rational_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:024b47ff9bc5cd5fd9684e5ffecf2dbd7a837d61f0b4bd07fb49e5e734fed1c5 +size 811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max.hpp new file mode 100644 index 0000000..bcbe289 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24620432eeb8b13db89295020a346e139da9c9897967bf9b9444084b2f3076b4 +size 432 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max_element.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max_element.hpp new file mode 100644 index 0000000..83c06ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/max_element.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:942acb7cb0e248f8c98ecffcd685e62c5bb234a8483d7e283460998f042cc36a +size 1580 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min.hpp new file mode 100644 index 0000000..440645a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb43bac84231624f42a4e70796526b67d3af45523451dc17e54be899e6dd1dbd +size 432 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_element.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_element.hpp new file mode 100644 index 0000000..949f738 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_element.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cde3926059d73b7f3cc0b67411fbc2f4f4918b64c6e6fe8c796a580822271fbd +size 815 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_max.hpp new file mode 100644 index 0000000..220bd60 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/min_max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ae1dadaf6ceed37b7a1c1baa6f6d6a15c0667bb3f7e271ba6dc538e01efacbf +size 908 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/minus.hpp new file mode 100644 index 0000000..38bfd7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:366b618998c4b90750a22717311c8dcb93d0b95130498c7c1f9941cf5a122a1c +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/modulus.hpp new file mode 100644 index 0000000..dc14ae3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb8b5daa599dfc39fe08800d330e1c504bcbe000d7534eaaa2818aa93abaaf59 +size 552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiplies.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiplies.hpp new file mode 100644 index 0000000..c8c7973 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiplies.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e285d96bd07939cff098d2299c54efef2e16754b21fb12c6b96496f7007f17da +size 1341 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/count_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/count_impl.hpp new file mode 100644 index 0000000..c770533 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/count_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcc282e5e0300985e156d80be50a8243fc21317e2ae7e71762170d52b56fd133 +size 2121 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/insert_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/insert_impl.hpp new file mode 100644 index 0000000..2678a98 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/insert_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f13fdec966e119bd274da60dc479e3d4bd968a0a919b78d33444beba4e25b7a +size 812 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/item.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/item.hpp new file mode 100644 index 0000000..a3a829d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/item.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8f13dacb96f2782e04bc4b565e7ef28ee4c40fab257a1e1ea2250ad5b1925e7 +size 3553 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/multiset0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/multiset0.hpp new file mode 100644 index 0000000..6578532 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/multiset0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cd41684f0a34e1501e2614accd1af8b028c14d8e535d3eb8590cb13f266f7d2 +size 794 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/tag.hpp new file mode 100644 index 0000000..c901d24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/aux_/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f75aa46e3f8b3e860f3cf22ad4e21b2c95782d11351c81d0a2436f6029fd168 +size 520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/multiset0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/multiset0.hpp new file mode 100644 index 0000000..3ed8bb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/multiset/multiset0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b974e85cf527f6bf6acc8914bc0a824ee35ae08422827e092f54c83db8b09b84 +size 1322 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/negate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/negate.hpp new file mode 100644 index 0000000..ec30eda --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/negate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb1f155c4639c1dfc2603c7552a5397949c826a9b5d2382e7af94c79ced4f2ba +size 1879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next.hpp new file mode 100644 index 0000000..d4dbcbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db8c72758017419b5012abc162cf632cbb4bc608e7c9444e8e7b955bb2a21096 +size 438 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next_prior.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next_prior.hpp new file mode 100644 index 0000000..85fbfbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/next_prior.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9215bab0c43bd36129b706c7750c5a38bba4dd29ab8e75bfb126e2068ec3e982 +size 1047 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not.hpp new file mode 100644 index 0000000..8990b49 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:554499a67dc788704abef318787f0ba26045186cc1f9b8620fa8fa84a570a3a5 +size 1029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not_equal_to.hpp new file mode 100644 index 0000000..f7a300d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3feb028d5ef946121cb9176d927ea5e52e24238f123de13b755a4af481fa1ad +size 544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/numeric_cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/numeric_cast.hpp new file mode 100644 index 0000000..052e0ef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/numeric_cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efae0441fe1ccd0a1e27160d2155706a4c02b3be92ad83b7221e18a8ecf927a7 +size 1219 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/or.hpp new file mode 100644 index 0000000..4615fb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8be6b8cfb713cd176685caf65f3cbf39856bb50a6295670fbf276d4574c3fb8c +size 1623 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order.hpp new file mode 100644 index 0000000..afeaec3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:655aadb57445b5d2d04ccd23313405da0bf1d87918525b562e627ea0288f6535 +size 1041 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order_fwd.hpp new file mode 100644 index 0000000..422e003 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/order_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:16f3dd96014c91b6eb8c83a9eea365fe79a71aeae3fe5b3166bf37c5a0ff461a +size 612 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair.hpp new file mode 100644 index 0000000..090e540 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90a4e3bae007707a422084b2bdc3dad34bb6ccf62ac950a45ac890636864e98e +size 1501 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair_view.hpp new file mode 100644 index 0000000..876d440 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pair_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10fb1f4cb19825c5996f9a520a7cdc18a5c7e23371e1fbcdfa43ea9233ecf86f +size 4355 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/partition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/partition.hpp new file mode 100644 index 0000000..3b18281 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/partition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41cd5ff4b21ed558e17e3e45977652fb2b3ca4c72e6365359f21476824238f85 +size 1046 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/placeholders.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/placeholders.hpp new file mode 100644 index 0000000..f6c39f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/placeholders.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a72651ec976974622a93731a1c6d6675af0d5365a24d8573752e40a288c6679 +size 2450 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/plus.hpp new file mode 100644 index 0000000..2c3cbf7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:420d03c24bafc45f41d42ce2cb029fa5b58fcde9fb196a8fa0d8fb9778ba3b34 +size 511 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back.hpp new file mode 100644 index 0000000..b011c51 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62b1f6b1db2dd952394dd94bfc59aec685e471e8ea258151dfcbb6552204efa0 +size 937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back_fwd.hpp new file mode 100644 index 0000000..56d896f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_back_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42767b6ddbf4d78b11eb57067ba3a1d20453927ffe65ccc95a6bdc52bba2a80b +size 564 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front.hpp new file mode 100644 index 0000000..9173239 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48acc68382549fd28cd6eab8654f0b1fd6138e1f77a8eee5b97dd8f89ec8521c +size 946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front_fwd.hpp new file mode 100644 index 0000000..39357b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/pop_front_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b0d41d826b3bbad6978b52018c5f682c5d12ebadf1538ecfcc81a4b13cf44aa +size 569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/print.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/print.hpp new file mode 100644 index 0000000..a1db3e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/print.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1937474674cd3071a410575d8387b694cd19b58cd6d494e50cfe97575ccf5e9c +size 1669 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/prior.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/prior.hpp new file mode 100644 index 0000000..9ed689e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/prior.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d8bb4bc5d56f15f1829338925dc233d36af3da7ae958e7074b095353f87665c +size 441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/protect.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/protect.hpp new file mode 100644 index 0000000..39d62b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/protect.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0f08cc513a245a7498017755dfe74dadc591be2820fd9ac3449c8faa5a73886 +size 1237 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back.hpp new file mode 100644 index 0000000..babadf0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:709c800058488d9b32f9798aae12ccaf8e10bf6ae1d1b74da6b6da297c068620 +size 1289 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back_fwd.hpp new file mode 100644 index 0000000..55c9c68 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_back_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18a3af3de643c04c01efc2db3ee6c11931578638bb151cf3d006cf120cfacadb +size 581 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front.hpp new file mode 100644 index 0000000..84cfd1d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31c3ef744324bfa29201e82e78ff402be0529b8543e5ca82edbf698dc248fd2c +size 1301 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front_fwd.hpp new file mode 100644 index 0000000..157aa97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/push_front_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f05de27ad94821fee096f90f9977b25248c5aaf2f02974cb339418818b8b68bf +size 586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/quote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/quote.hpp new file mode 100644 index 0000000..f3fe454 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/quote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcb0df9da8d23be7d25db56d5479060a77f585f3a885cdc39a71fa128e4abe28 +size 3634 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/range_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/range_c.hpp new file mode 100644 index 0000000..413dffa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/range_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:560ada46c52188c45ceee98c5092d5f55a5ba1151c5e149f7edbd5d631e1584f +size 1124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove.hpp new file mode 100644 index 0000000..04f7294 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ae59e3d4656c20d0669ba396f13112e81be2b4121d3649c7f1227958136d24a +size 1033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove_if.hpp new file mode 100644 index 0000000..d6223cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/remove_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3824f44dd6c175186d35ad5b50b4e7ff200edb9b5898af9c0b6df30a29d64daf +size 1892 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace.hpp new file mode 100644 index 0000000..aca227b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33dde266a07c35f01e166671e4a06e1ced9f0401413a24f79d5f644d4df25a8e +size 1169 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace_if.hpp new file mode 100644 index 0000000..cfec3e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/replace_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81132146d317e3ee26dcebee4c6e9319d1a13e3dc122e5a15af1296ef73e515b +size 1795 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse.hpp new file mode 100644 index 0000000..71fbc7c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ade13f15a7584236d4201e39dcc4d1ba9d009e0b8562fd8ed8b331f0c39e2519 +size 759 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_fold.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_fold.hpp new file mode 100644 index 0000000..0cd913b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_fold.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46ba1d4bed094f24051acb4a51709b33c3610b5cb37464a39b1e90ad49c87b7c +size 1282 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_iter_fold.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_iter_fold.hpp new file mode 100644 index 0000000..6901881 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/reverse_iter_fold.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40b9efab4a923f5729f7c21e70c699df7e55f9799f493a75a69d8e1a6ca06dab +size 1497 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/same_as.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/same_as.hpp new file mode 100644 index 0000000..cc55e05 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/same_as.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0be317738941c6ddee3822051c0f78ab9abf4a8c17b032b4563981f462c6641d +size 1124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag.hpp new file mode 100644 index 0000000..345e570 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eba6c10ea3345b75379f2209e8c1b8aa0e52c1bc2e3714866a95cb57113631b7 +size 2989 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag_fwd.hpp new file mode 100644 index 0000000..cd34aed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sequence_tag_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:026ad6db1cbefeaead66b087de30406949be26887b27d2822b79d5cc03d74a63 +size 588 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set.hpp new file mode 100644 index 0000000..61ed25a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6cd87ee79bf484523e15710cf646dc102698f8031a67042cb6b44d18a4cd0f7 +size 1593 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/at_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/at_impl.hpp new file mode 100644 index 0000000..3740510 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/at_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3edba3c1566dd5390589b0927a6a79c3cc388c185e0a2f7a6cb20bd1aff196a7 +size 929 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/begin_end_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/begin_end_impl.hpp new file mode 100644 index 0000000..04e5356 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/begin_end_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c6901e76dd9685b7d4a7f6c7a4b8e6723a52d49989c58120151c0d316e20046 +size 919 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/clear_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/clear_impl.hpp new file mode 100644 index 0000000..235839a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/clear_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfc736d7f598de06f4e7d1e84ffa27641de046cb7d9b77c17d6944b92abdd5f3 +size 773 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/empty_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/empty_impl.hpp new file mode 100644 index 0000000..7d8ca8c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/empty_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4323938a994fb1f8cae9bf05d6b272e4449f6bd8e0ca5af1d20e584a3bcef820 +size 733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_impl.hpp new file mode 100644 index 0000000..2b9e27a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c519269342048c0b58534b5567f975b241ae47a45b110da29a8f134a5fa99432 +size 911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_key_impl.hpp new file mode 100644 index 0000000..b83d8bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/erase_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1ea17a4e372834edbebfae720e9d66a4184217fd8600c369a047e8e28fa6244 +size 1299 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/has_key_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/has_key_impl.hpp new file mode 100644 index 0000000..c61153e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/has_key_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7034e62fcf5a7409a4d9303ae3ed83690c38ddb77d65fbd4fb854c4cd04b2ced +size 1705 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/include_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/include_preprocessed.hpp new file mode 100644 index 0000000..e7e4558 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/include_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d014fe3aeb77d984dbcdb21c769c2d8c9c4f8ffc3265b98dac482537fda280f9 +size 1189 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_impl.hpp new file mode 100644 index 0000000..60ee513 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c44f47d7cbdca0a677497b6acf9d1dd75ac09091019dd5b2be50dfc4addec678 +size 1519 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_range_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_range_impl.hpp new file mode 100644 index 0000000..a7e4439 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/insert_range_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44801d3f066f3973982fb9cb582c48945fd21b7cb4105d69199a7329eedd307a +size 920 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/item.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/item.hpp new file mode 100644 index 0000000..683b370 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/item.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f574bc12a4d504c71d389496cc95265d7e645d5ed5c44dfdc5ae08c6760e37a7 +size 2307 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/iterator.hpp new file mode 100644 index 0000000..faa4840 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7749400368cf8b13e50190de52a76b4816dbbb19c2ab31abbab855e4cebba0c +size 2283 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/key_type_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/key_type_impl.hpp new file mode 100644 index 0000000..ec00312 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/key_type_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5df9fc023b598c42597d37214a7746bd63441f43526eb8c594f1c66039fc3099 +size 756 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered.hpp new file mode 100644 index 0000000..be3a5c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ef3805fcafcf81c65bc70547d2d95816929c07fe6d138679f35ae126963307f +size 1082 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered_c.hpp new file mode 100644 index 0000000..47d7230 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/numbered_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:807dbcaab3532215d85c52ee2658143a84205a85fa7b00ef340cc0029c670994 +size 1198 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10.hpp new file mode 100644 index 0000000..7a6afdf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:485ad0f84e4c7c349e544627c25529c6e23f1f0e44f0eeff40d4e8464b4df50e +size 2578 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp new file mode 100644 index 0000000..b5cfd23 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69e2399e6f08805aedf911dc61170e2cb5fb44a527be0930ba580ec69298fe5d +size 2419 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20.hpp new file mode 100644 index 0000000..7b84cbe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19100a5f4c2e8aa6e350b8261b067fdf3f82cda3d2ca17a9c1c2b8d1e0b5920a +size 4605 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp new file mode 100644 index 0000000..8dc1107 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73e90577c0adfe33aa195ababb5f99e4f9b363e41aaa2d49b234b2d13ce4814f +size 3504 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30.hpp new file mode 100644 index 0000000..26f5d36 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f413b74a85ff42447e85c3c0e243c393ce712d23356b3841d085748d6d693873 +size 6687 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp new file mode 100644 index 0000000..a388590 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23ff55b7f8b5023fbd7044b9b51efa427878fe8be288a4162310da67a8a6ce0f +size 4654 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40.hpp new file mode 100644 index 0000000..5fad164 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bd0db04bdfd155b2eb50429ae5053a92b8614f97094f9f7014ed8d9a7803cc9 +size 8741 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp new file mode 100644 index 0000000..401c4f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d811058c6b819956c7f28ff4194fb02190ef7fbd70b9dbf22522622354f7bccf +size 5804 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50.hpp new file mode 100644 index 0000000..4700a00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07546a94004ea03927ff6ba62e017a510387edc3290cd0980b11ff4dfd73b91e +size 10822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp new file mode 100644 index 0000000..856b230 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/preprocessed/plain/set50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62695a5c50f01863ba3e09f0d9e2945c049c1d4e30c1da6ad96612193cc4ffe1 +size 6954 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/set0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/set0.hpp new file mode 100644 index 0000000..6870733 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/set0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34ce31738d43f0bef61b755d7450b7279ebce7ff6dc99e70aeb01b9c397f26af +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/size_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/size_impl.hpp new file mode 100644 index 0000000..9776cef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/size_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a64e0306018c7ed3b57feccd46961cca23658642756318579c696f6338f64205 +size 682 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/tag.hpp new file mode 100644 index 0000000..188f800 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e3c989975075c81d4ade29300a03a4cc8f00386f2b0b925349413f0157a0dcd +size 538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/value_type_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/value_type_impl.hpp new file mode 100644 index 0000000..9aab32b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/aux_/value_type_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1914fec4073c1445c1e2d17df2dc7eb2b4701b4a5bc2deee5b49c0f78b047a3 +size 766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0.hpp new file mode 100644 index 0000000..364e68f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0a536a9d828c06f5c3e4eb9b479a53129bf8bfdd119e0895e904b6507875b83 +size 1222 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0_c.hpp new file mode 100644 index 0000000..10051e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set0_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59af2c05abc85d41c921e03b87159db8bc298a55731e2955f9b7eb83f4d24858 +size 679 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10.hpp new file mode 100644 index 0000000..a318b14 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e461c72f42c6be55c7ae9bfa0118bb7aa734ef2e1a78599805c958cdcd4a5d24 +size 1078 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10_c.hpp new file mode 100644 index 0000000..724f18c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63bb3e7e383eed38ccc994681744e0f8534c7f7ee5ab80c5deb600c195721446 +size 1128 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20.hpp new file mode 100644 index 0000000..fc9e0b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90444b276895f087dbae9135afcbc12a41621364777c237be0f5caa781b90ce7 +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20_c.hpp new file mode 100644 index 0000000..723d412 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b995ddcb4a05ede5a215792f28e503d063f40a7f9af8554f2f91e799fa82400 +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30.hpp new file mode 100644 index 0000000..0f804a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ecfe873957dbb12c188af1c5f58d43f98926a1887fb908a38d5bd3d583f4773 +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30_c.hpp new file mode 100644 index 0000000..fb84b44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0a352cf15dec2700a557569b662620b57c5466497f5d7fdb4b6d0b936db30bd +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40.hpp new file mode 100644 index 0000000..5a2d5d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6b3402c332aed1ff55694706b98bc16644f6eac758ade12504c69973ce362ed +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40_c.hpp new file mode 100644 index 0000000..838f55b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71ebf8831df9e442aa799633dc839835a4b9ca07ebeba11efead76c68185b53f +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50.hpp new file mode 100644 index 0000000..35bbe2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4149cf253269e2faef224d7e90242bb49d8c4af0e47a4bb163b676dd84dc8420 +size 1080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50_c.hpp new file mode 100644 index 0000000..f7822af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set/set50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1d9b6dc1cc9202e309ec6c26b1885ff0e8e78fa7e95f86eb701bac1392c72315 +size 1130 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set_c.hpp new file mode 100644 index 0000000..b8ea27e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/set_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1f7a13391b30c7d03c96d35193bc0ce852015d2dce0f960800a7f3ffb149725 +size 1796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_left.hpp new file mode 100644 index 0000000..19ea92d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a761d93bcf06405010c07b34ac992dc0b511f850d2140b72c604db13dfe63074 +size 560 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_right.hpp new file mode 100644 index 0000000..c6903cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/shift_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9549bb564bce2e560764737d42b004f7dca8cf3fca9f21d30986207418cb595 +size 564 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/single_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/single_view.hpp new file mode 100644 index 0000000..dd90f72 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/single_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cc224ae9c616fa3d32bed6f3006115dec694f7255a8b10bbb6925e15c96d74a +size 813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size.hpp new file mode 100644 index 0000000..5e7d1f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f27eb12ecc2987f26cd3504062066845e7ecc650bb35d51f75f9bc29d3e6ea6f +size 1008 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_fwd.hpp new file mode 100644 index 0000000..605b8ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aaecb60cbac1ae0b847278d697cecc439b5b87487ddb955513e5145fcbe6ccab +size 544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t.hpp new file mode 100644 index 0000000..80689fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:503e0adb9abb737bc4eba77b4640c9f30a5798806ed74e07eb24e3df2be04f85 +size 617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t_fwd.hpp new file mode 100644 index 0000000..9b823e5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/size_t_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1efc71182d8d2f981a3b5be7f4b1640e7b49fe9d352924d110a329065822e934 +size 723 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sizeof.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sizeof.hpp new file mode 100644 index 0000000..7c71074 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sizeof.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59469f31b1e1d18a50dc14a4f0745002544ddd947c9dfc6e2c4aa1dced59cf0e +size 766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sort.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sort.hpp new file mode 100644 index 0000000..ea7ee94 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/sort.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bd1fc8d57f403a901fc6ae2f528e8fe7dd9bf5211e4a192e6046918e934f420 +size 614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/stable_partition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/stable_partition.hpp new file mode 100644 index 0000000..bf0a842 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/stable_partition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2d913e790b1fb6b61c3429ddc89efe1bcf23d7db564634804d3d127b9d7d8dc +size 1709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/string.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/string.hpp new file mode 100644 index 0000000..ca4db45 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/string.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:618d06f7a43df8a769b9c3537d4610164fa4470a12d895d412b5f27134b07a2e +size 24547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/switch.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/switch.hpp new file mode 100644 index 0000000..5cfb8e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/switch.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:851491536fa7f63c9231df1d780d43a56bf59149a778b330b39ed0b4d05bca60 +size 1187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/tag.hpp new file mode 100644 index 0000000..5a9905b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bccc8d2911980cc041905c37134bb0250084f923c79be57f86b760fdbb4c3a1 +size 1023 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/times.hpp new file mode 100644 index 0000000..e2af64a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c65e9af530d8e6ecd1bd8ae35ee254f9c3fba4aeae92d67f51458c61286178f +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform.hpp new file mode 100644 index 0000000..778073b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e377b86fcb965a371ed3c4307b4569b08d446ffbfeb92ac8a26cdd518daddf1 +size 4202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform_view.hpp new file mode 100644 index 0000000..293a9b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/transform_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8260dfe9e02299e5821c1fab055acb34e31b3b0a2cffa2e1388f3412ca046cf7 +size 1124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unique.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unique.hpp new file mode 100644 index 0000000..b9cedb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unique.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5257adc16cde0aeb438f6b47513a144442e516841950ce596cb9d2efa73446fd +size 2053 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unpack_args.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unpack_args.hpp new file mode 100644 index 0000000..9d5fe3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/unpack_args.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71db6700d6423d29c0d9b2bbf01b21f144d7b1ff7be40b8f7aa6e209be099631 +size 3563 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/upper_bound.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/upper_bound.hpp new file mode 100644 index 0000000..aec8a81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/upper_bound.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ceb115a5f8bc42f1279f7b8502ee9c9f9180bdc703e6c004370216d5060902d +size 3555 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type.hpp new file mode 100644 index 0000000..0cd6199 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f3322e6c6b9dd4d4cd7b9412cdc52fbf8a7bf106db23d37cf37a0a3af167896 +size 1084 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type_fwd.hpp new file mode 100644 index 0000000..1524e04 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/value_type_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2e3570e56dec00343b3344b583342cf3cfa3039879889d8f6659d534c35f329 +size 635 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector.hpp new file mode 100644 index 0000000..a58f2cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:492a438cb7dbf6ccf0e99bc3d2d21073215dd0a479920c2b19acbe95b4af616b +size 1644 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/O1_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/O1_size.hpp new file mode 100644 index 0000000..6ef7623 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/O1_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2818d1c241921e40fec8c34efe4f5e272ba5ff32a5fa45133aede6935e4c182a +size 1213 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/at.hpp new file mode 100644 index 0000000..407d9a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fd29b495501993893963019b0961aa3e694ba5bb29a937f38eda6f4216822a9 +size 2562 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/back.hpp new file mode 100644 index 0000000..fea6f5c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7f33db9354d152d9098d8f42bccc52ead40259904dbf1fd4f84e6a38a2b97fb +size 1316 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/begin_end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/begin_end.hpp new file mode 100644 index 0000000..b1b9897 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/begin_end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef88e130f13748e6f8b911bb508eec455ac12a5027c4bb1cf6adc7c4524c0388 +size 1091 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/clear.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/clear.hpp new file mode 100644 index 0000000..21e03cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/clear.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb98480c71a8d886a11321b1b2fb3c366ed1cac41b5cf8c2323f6a91fc40f27f +size 1202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/empty.hpp new file mode 100644 index 0000000..2bcc8ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:baca7576cf24909017514c4378c16a0be6b01c15dc15369f1bf4669301581002 +size 1433 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/front.hpp new file mode 100644 index 0000000..46b22b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4ebd866106aa63f0d7e22688b8afaf2c878206aea9c899cc7953b3f70ceeaa6 +size 1271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/include_preprocessed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/include_preprocessed.hpp new file mode 100644 index 0000000..ccdf343 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/include_preprocessed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:415bf6fcfb50be230221941452a31a7f6600d03151f99869bc68c055f1a72158 +size 1656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/item.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/item.hpp new file mode 100644 index 0000000..40bd554 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/item.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa83fd1c5fc4753e6f6a7274d3d097fed05dd87534166a9843faa29cd09f468e +size 2461 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/iterator.hpp new file mode 100644 index 0000000..3da7396 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d991a753c7b5c08eb9fcd800fde47cc7571a74776e35f1b5d5f8861ecae831db +size 2971 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered.hpp new file mode 100644 index 0000000..f86bd84 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2115913baa885d11d43f62b957b39149624ba6938ef475fc52bb48767a386ef7 +size 4783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered_c.hpp new file mode 100644 index 0000000..2b155da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/numbered_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5b066fc11ca054a76a138cc6359c8501579fd7556936db8b577c87e3e6daf48 +size 1941 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_back.hpp new file mode 100644 index 0000000..e6f34cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dda2404b2aabf0e3134becc85e55204eba19e157922c91e658661adaf359e4a9 +size 916 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_front.hpp new file mode 100644 index 0000000..7050829 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6f83df45e3fc70afcc834e8962b3d0c997d287b5653aa5f0152774feefd7038 +size 921 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp new file mode 100644 index 0000000..5c3308d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:301524038d1803b0e323d2dc89954c30a58ee4ace4c13f1fb8d770be4ed03037 +size 30637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp new file mode 100644 index 0000000..7c0748f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1118ac1b08b12fec4ad418363009729d486857d21867e5562b5fed5c1556021 +size 3266 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp new file mode 100644 index 0000000..afdc5a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d625aa8f69dad229c3da35b908ae3a98b9b7c89497eb3fff967e556d65c239cc +size 46245 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp new file mode 100644 index 0000000..9efec5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20fd755d3948a42ed503eccc7e37a0d3b903a79c3b41b4f2ee1ff26845f12c77 +size 6361 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp new file mode 100644 index 0000000..e3948f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ddaa4db42616f482be030ed96ac9a09937f1fce7cef28b59cee66d53bd82a30 +size 62745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp new file mode 100644 index 0000000..a37e2ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f0c7ed66f2483c874a30641d8fd58f3941d729f1afa6d5b739e1106e08c7dc +size 9509 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp new file mode 100644 index 0000000..c2c2be4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a127c0a3857d57d0358ae69685edd7cc59c963d5a959cdfdadf38eb501a43ef +size 79245 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp new file mode 100644 index 0000000..c669152 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:530e0881d8a755eee8366addc1ce7578fb704423fdd1e1b8bbd76c1291aa0552 +size 12656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp new file mode 100644 index 0000000..46318b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a786a9e3e572ce73a12fe96bccbe1f1aa6f7d4d6cc66f20abc3a6148edfcb06 +size 95745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp new file mode 100644 index 0000000..a00ea79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/no_ctps/vector50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f376f4aa912511bfa07255ff65565f2080556a8a724e0910441f8c4c5fbd43c7 +size 15811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp new file mode 100644 index 0000000..09d564a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc256186db7f55cc4ecd457ae4e922656bdd410987b805a490c62072c63ef484 +size 18549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp new file mode 100644 index 0000000..7c0748f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1118ac1b08b12fec4ad418363009729d486857d21867e5562b5fed5c1556021 +size 3266 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp new file mode 100644 index 0000000..2364839 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7da8c86354867cbeffe891564f29c8965b0822812ed5ec3c403f27168602517 +size 34765 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp new file mode 100644 index 0000000..9efec5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20fd755d3948a42ed503eccc7e37a0d3b903a79c3b41b4f2ee1ff26845f12c77 +size 6361 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp new file mode 100644 index 0000000..6393c46 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb9695c5cd2cae7351fe61579790fcb16d4e97f08e43010d3667ecaf9832afec +size 51265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp new file mode 100644 index 0000000..a37e2ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f0c7ed66f2483c874a30641d8fd58f3941d729f1afa6d5b739e1106e08c7dc +size 9509 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp new file mode 100644 index 0000000..62a74ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92682f3df98a666338be4e46d79f2c606b948902ed87aaca100c9a69088a1c90 +size 67765 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp new file mode 100644 index 0000000..c669152 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:530e0881d8a755eee8366addc1ce7578fb704423fdd1e1b8bbd76c1291aa0552 +size 12656 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp new file mode 100644 index 0000000..a79a772 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05d5a35ca5ca2bc36b39dedfb5c001f06b115c2b482aa871c21b8bbd0015bde8 +size 84265 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp new file mode 100644 index 0000000..a00ea79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/plain/vector50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f376f4aa912511bfa07255ff65565f2080556a8a724e0910441f8c4c5fbd43c7 +size 15811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp new file mode 100644 index 0000000..e566b17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac63f7a70a9f120b97012712f857b5c09b4f41b59257f80cdd367f8b4f839acf +size 2476 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp new file mode 100644 index 0000000..6c2d455 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df2e89fc565e98b7b82fd343f56bee93b27ecbcb6ea01c1da7f3193ff0f01e46 +size 2737 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp new file mode 100644 index 0000000..6f87a8c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29510ab2e86dbeecb75b5c7a0f8f109155ff529323f8036b265fd40f89e93cf2 +size 4315 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp new file mode 100644 index 0000000..344a51c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4281fde9a38fc8e366fc0893979c33333e9abbcca91ea79e96412ce198c88ebd +size 3822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp new file mode 100644 index 0000000..90fd9e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a3916d7f9aa26ddd7666f364bcdda239cda37a3f13a283ebe79aab87297b86b +size 6215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp new file mode 100644 index 0000000..513f0bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7a1fadf98e30c6f64a7bbb607fbc1f913be2d1113475f5a30f3e4d547a0506a +size 4972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp new file mode 100644 index 0000000..cbf465c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdb931c2ffeed3ceec0dfada4672500d9f8fc9c7da8dcfb46a53b4f1ebe0097e +size 8115 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp new file mode 100644 index 0000000..a2d89f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:597d5922bf50915225590ac7132104ac6930e88307b78e04d6d2f105a07c7f12 +size 6122 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp new file mode 100644 index 0000000..942df95 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2bdccac69a954f464db7e1bf99e6a879353f84291e05b67c35375f71e6db083 +size 10015 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp new file mode 100644 index 0000000..44d2632 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/preprocessed/typeof_based/vector50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d50a6bdc1e2bc1648f5f59a7f3b212a6055a235f4183230bb6a2e089e1b933b +size 7272 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_back.hpp new file mode 100644 index 0000000..2f52cf8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f8d65ac9177ccff2aad11b02158ac6259372a869058e808fd45c9f331ed1ef +size 896 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_front.hpp new file mode 100644 index 0000000..3700d5d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0ba9ac3cdf8f36705b81311ed35d16a9d10adee4674518eff6a7f558c805b29b +size 940 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/size.hpp new file mode 100644 index 0000000..6e7bcd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af0d511f58dc5d3826ab90ba5e58bcefc838f8a15c8d70ba7628b2ad4683a80 +size 1095 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/tag.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/tag.hpp new file mode 100644 index 0000000..b564dc4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/tag.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49ebd03cdbdfc9463387b2e6d38fcc0471cfd60de1669253919f1251aaaceb69 +size 744 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/vector0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/vector0.hpp new file mode 100644 index 0000000..ff73143 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/aux_/vector0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c3466c054ed61f3c3f64c38390e91d69dc345fbfa939c69afe3302c9baa61cc +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0.hpp new file mode 100644 index 0000000..84ad52e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff694d029130071b6808b1abe67cf388c77232e30264a92f612986b36ef1a87 +size 1144 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0_c.hpp new file mode 100644 index 0000000..6d7a5c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector0_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5a5e058e35bca75e27ec97eca8df945af4288e9ff548b895f57f7611030d477 +size 674 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10.hpp new file mode 100644 index 0000000..97d62f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c0cab768e99f212e758c2f96c1093deb4f18423e3ab79bd2421f18142402f21 +size 1165 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10_c.hpp new file mode 100644 index 0000000..c3945b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector10_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beb53988c6d9c60c73eae7383f19d54eb4a5a9fa7cfef63a964f8c1598715b7b +size 1221 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20.hpp new file mode 100644 index 0000000..050067b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17e18fccec56759e169770830b7c27b43589eab76c9010de665b3d78e2de4e5d +size 1167 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20_c.hpp new file mode 100644 index 0000000..0b87612 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector20_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:83031e55aa622cb678cbbf904aee0c7f2a446cf206e39b9424ace0f9713a71d4 +size 1223 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30.hpp new file mode 100644 index 0000000..ee54024 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a87290167e3a658ff1d1a77b75892890b32d33f3c522c4f5f64c337e9f759525 +size 1167 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30_c.hpp new file mode 100644 index 0000000..7f0aaca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector30_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe753c5f860c6f1216e398d5abbd8fc2a94b27ebb8f0ee3e38b4777e26cded78 +size 1252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40.hpp new file mode 100644 index 0000000..0e646b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e569c3a2d66bc893c9a4bf1e70f3ee410a37232ded9faf339fa55f0321c7867 +size 1167 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40_c.hpp new file mode 100644 index 0000000..ff0daad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector40_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:036abeaa5eea7c4d9e475d4bce2db2805d16c39f77eb30bc9a9c9b02ce9ff0c4 +size 1223 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50.hpp new file mode 100644 index 0000000..36805b1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bffb050a36ba6b432914678935e9101541f1b177fbe399a01de7711f002fb27f +size 1167 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50_c.hpp new file mode 100644 index 0000000..7c5b225 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector/vector50_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:961a7d037fbe92b85d43c8f54eb3eddc2e268fd9735ea78fc787fc05450a5070 +size 1220 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector_c.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector_c.hpp new file mode 100644 index 0000000..3688220 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/vector_c.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a3d51e25c5d76f757aa5aee132efc57cb8f7a006e9ea252d2c57ab6814a2ea6 +size 1932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void.hpp new file mode 100644 index 0000000..c3f72b9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f6968500000ec19d3ebdd17670e434fa70cb2ff36ae93e55dd0d5f94e9dc1d52 +size 1608 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void_fwd.hpp new file mode 100644 index 0000000..dc36549 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/void_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed43f10ad35cda66de81db316ea0f9ffe12efc791d206dae028c8e2f8a3b1166 +size 599 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/zip_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/zip_view.hpp new file mode 100644 index 0000000..f42f75f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/mpl/zip_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1bf762684810986247792ee1ed12818aadcffb14a2734d176ecfde68c32e9c0 +size 1542 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/bounds.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/bounds.hpp new file mode 100644 index 0000000..80166a1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/bounds.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a7684a73c46bca05f75db21b7456aa07bf174c439e05494ab64d145bc8644b3 +size 706 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/cast.hpp new file mode 100644 index 0000000..28a3b0d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:71664136d5a92bb5669da8d20dcec1eb4ab4f4bcdc067ad32652524602565a65 +size 2123 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/conversion_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/conversion_traits.hpp new file mode 100644 index 0000000..a3f999a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/conversion_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d76a813b2688b11d8e6668b021811343df8aae28b0d35adf64949e64ea7cc3d +size 954 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter.hpp new file mode 100644 index 0000000..c5e071c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d33001875f224c1d5d78f6dafc9a648b7156543050711332a81491c6c4ca66cf +size 2239 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter_policies.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter_policies.hpp new file mode 100644 index 0000000..03b49a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/converter_policies.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:878c62e52beaea335ce720f5c1b02c82ffbb0caeeadefbdb218459016edf3f64 +size 4470 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/bounds.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/bounds.hpp new file mode 100644 index 0000000..3d92c09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/bounds.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0ef0270bfc67f6b687bcd02a9c2e85a46f619203a0c4194b812a9f427bb9603 +size 1820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/conversion_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/conversion_traits.hpp new file mode 100644 index 0000000..d78bea9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/conversion_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8efba8a46cc4e6cc4ebfb8ebfa7c9df43dd47a8b5ea44182a21ff253e9d47b9a +size 3587 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/converter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/converter.hpp new file mode 100644 index 0000000..ba6f208 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/converter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef702fee32ba76c59ce6e336e046380fe2fecc476ac276b2f0172037119800e0 +size 19234 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/int_float_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/int_float_mixture.hpp new file mode 100644 index 0000000..5024b1a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/int_float_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27c3475c909925114434dd06a9dce8228a433899314ba7b80b2c717e9305c838 +size 2600 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/is_subranged.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/is_subranged.hpp new file mode 100644 index 0000000..37bb113 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/is_subranged.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0876b25143bc1fdfec3581a4179a369fc250c34db3c8420d95149d721d8bd072 +size 7686 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/meta.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/meta.hpp new file mode 100644 index 0000000..41ab543 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/meta.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69f7785a568178241abfa69a720a31f1fbe620f6f5ff1911872653edbfc78d69 +size 3662 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp new file mode 100644 index 0000000..0487a94 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/numeric_cast_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c42ad3f4cf741e7f1505bba5b88578028e0c92d06b7f266415ac046e7d2461f3 +size 5523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/old_numeric_cast.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/old_numeric_cast.hpp new file mode 100644 index 0000000..83f87f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/old_numeric_cast.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1292474b1fcb18d3dd85908c15b83bc260a183cc49d3bd65a024f1c9ea06dac +size 10969 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp new file mode 100644 index 0000000..0dfaa56 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d3e512e768360a5a267ea6f57a234cc664c2a3f439aeb8d42396ec23af9b8ae +size 42776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp new file mode 100644 index 0000000..c9cfb64 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/preprocessed/numeric_cast_traits_long_long.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18fe29720b858d4ec3db9e44828f340020d797dbc16bef8906fd7677a95ef5b0 +size 9311 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/sign_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/sign_mixture.hpp new file mode 100644 index 0000000..9804f8b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/sign_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51f43c2007a1ab463260103b25e9bd830419371cb137598d94964d5a59deb6d3 +size 2547 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp new file mode 100644 index 0000000..78e1d5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/detail/udt_builtin_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8dffa1ad10dd7bc7a78afddab0325e8cecf951e94fb2820c7ecc2fc7dd2d9d62 +size 2480 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture.hpp new file mode 100644 index 0000000..28fa1d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bddb30968cb676f38087970c18384b9a9f528080446ac470f18d9d411c49a30b +size 1042 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture_enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture_enum.hpp new file mode 100644 index 0000000..5431e68 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/int_float_mixture_enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e184b040c8bb3390deb8ec866d87c2492a244b7262b2fd0990bdecfacd2093b3 +size 851 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/is_subranged.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/is_subranged.hpp new file mode 100644 index 0000000..1e2b639 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/is_subranged.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc2c362607ef6c8c0faabaec3f9f9c124377e43a606fb4d91bb7ec7cf2dc42c6 +size 908 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/numeric_cast_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/numeric_cast_traits.hpp new file mode 100644 index 0000000..6b4fd0f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/numeric_cast_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbb4008d98809f04efc7cc8c9bfe6d8d6223bd10cda0cd649fbf1e635e515290 +size 983 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture.hpp new file mode 100644 index 0000000..8921f98 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df9aec74af40872ac97ff2d25c5bec3c0b2e692e1b28f1b23f93fc8595acc3da +size 1007 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture_enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture_enum.hpp new file mode 100644 index 0000000..3dc97ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/sign_mixture_enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfffad1a0069323e40377ddd58a6adc4b3ab213af8c32ad25f7ab898199044ec +size 840 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture.hpp new file mode 100644 index 0000000..cb3e460 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:deb5f526e976c97b678009bf5a4e115c0acd83457958382e25f55cd61bae18e9 +size 957 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp new file mode 100644 index 0000000..ab3c60c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/conversion/udt_builtin_mixture_enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61025c6776952f21f945cacf15b075736d9aa2dbab100b68918e27b43e6eb392 +size 745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval.hpp new file mode 100644 index 0000000..5857691 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21cdd49e4134be186a487ac54971b8130045e3e9dda2e760bf93297cf4c7c55b +size 1058 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith.hpp new file mode 100644 index 0000000..15ee155 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea57deeffdf91d1f76204ae60d26471a07c0fd66c5e7e1b03809e7790458fc9e +size 10353 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith2.hpp new file mode 100644 index 0000000..970c6ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab582ec819f98b783314537c902a6091f6bc4ca74b0669be29b1675705a5aa65 +size 10092 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith3.hpp new file mode 100644 index 0000000..dd46fb1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/arith3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d0efe491af741200c236fc57966c0fb1d8d45b35aa2e3bc01297acb2bb5766 +size 2150 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/checking.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/checking.hpp new file mode 100644 index 0000000..d86909a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/checking.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53edae05995aad20924085dd924149bb70953cfb2b3fc17eb5119175e502a995 +size 2824 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare.hpp new file mode 100644 index 0000000..8838c34 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2558a9b8c31fd4a81e1e08968b47b852c6b8d0135c99004bc52678f9052cca7 +size 705 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/certain.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/certain.hpp new file mode 100644 index 0000000..e98c42d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/certain.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92129d4e23a890b1ce344b51dbe3d8f97267565250c5dba8310caf7ccf01834d +size 3405 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/explicit.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/explicit.hpp new file mode 100644 index 0000000..e0a13ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/explicit.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:282bf9c15a1aa8f998d12b325d05298b9f23b107a299ebade897c92e2a83e2c7 +size 6110 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/lexicographic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/lexicographic.hpp new file mode 100644 index 0000000..9caa6ed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/lexicographic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcdaa133a8e5ac3170f6e33fe4e5a03c22b3d068a08746f31aa67bfb40bac1d0 +size 3865 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/possible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/possible.hpp new file mode 100644 index 0000000..be3af83 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/possible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b64967f7a2c1f346a07df3c6ab6efcac2965714ba1b02a714cd5d7da674add3f +size 3415 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/set.hpp new file mode 100644 index 0000000..4a7bb19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a832364c5b82871495f3d898278aff417eb905107f80a582cd327b5c2363e6c +size 2614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/tribool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/tribool.hpp new file mode 100644 index 0000000..0e31f88 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/compare/tribool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:485db04e62b467fb15789cfb714de12c233ae0cd9494b961859a120fc29d5d46 +size 4617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/constants.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/constants.hpp new file mode 100644 index 0000000..df11429 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/constants.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3351252d53e82130a0793fc2874cca3df1ddb8a3f0152290eb47ba39ebf6544 +size 3177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/alpha_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/alpha_rounding_control.hpp new file mode 100644 index 0000000..6682a97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/alpha_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60d2d8801276039382aab5ad5d27782d0526f5f41d53cc7ded002f955c3fea67 +size 3607 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bcc_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bcc_rounding_control.hpp new file mode 100644 index 0000000..99b2be1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bcc_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e1590cf9fada31a27bde23b31b18f7311dd87dececb13ee3adbd4838f08071b +size 1580 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bugs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bugs.hpp new file mode 100644 index 0000000..271ddb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/bugs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:807df20dabe8565ab4f9db768cd3d86ec0cab128c4bcc6c8341ada536e917e15 +size 1513 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99_rounding_control.hpp new file mode 100644 index 0000000..e629140 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94fa1324ea8f8b68fe8079aca30627475ca667442196cbbb1749cd204a210770 +size 1292 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99sub_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99sub_rounding_control.hpp new file mode 100644 index 0000000..93a536d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/c99sub_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32f9adf4e35ee338cf527459b3871ed6fb9dd4a96c418e463e5343135876c8ab +size 1368 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/division.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/division.hpp new file mode 100644 index 0000000..8809a90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/division.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59ecfca9ac4532a71de23f5edc8eb1711b39a65327ebf1873ed23655af9c3d8a +size 7499 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ia64_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ia64_rounding_control.hpp new file mode 100644 index 0000000..6894440 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ia64_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94666d2917dc1f2fcdd7363d621171d757a2f7c071b30e118ed43414a01029ce +size 2149 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/interval_prototype.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/interval_prototype.hpp new file mode 100644 index 0000000..6d7805c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/interval_prototype.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc0fef93ad3ed8e5c4fe9e5986266fd8cc57747fd991a0ccc31442867a0ea245 +size 1035 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/msvc_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/msvc_rounding_control.hpp new file mode 100644 index 0000000..d167474 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/msvc_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52cf1515eef844c904003a8a8b93aae6855660d2b5c216bae1e2d1c37f55d08b +size 3415 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ppc_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ppc_rounding_control.hpp new file mode 100644 index 0000000..d204aeb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/ppc_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f334590f7d334d2cc9dad5c864e8a7684c04637a58701483f3523b34734ddc1 +size 2955 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/sparc_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/sparc_rounding_control.hpp new file mode 100644 index 0000000..9f603a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/sparc_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af98d88590189e7035a28b69b011a87f4894140ca271e9bfe4a0c081ffbf97b +size 3062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/test_input.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/test_input.hpp new file mode 100644 index 0000000..4b1201a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/test_input.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cded3d6edc15e78e463e4b006c4f93b507fa985778a1f227c5003a23db57e9a +size 2326 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86_rounding_control.hpp new file mode 100644 index 0000000..6cbccca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4dad88a5482a3f8937ff686d5a7d5b21189a15f1194f29fc595e580c39ee2d6 +size 3143 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86gcc_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86gcc_rounding_control.hpp new file mode 100644 index 0000000..d415257 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/detail/x86gcc_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9cb53039e2e63299c7a9a73492877fe247941e6e7444ae026ecc4726216b766 +size 1262 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/integer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/integer.hpp new file mode 100644 index 0000000..6725749 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/integer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:989a1aefec1537c55d065f79ea3e53db0ab8502db971dfec66214d5d88f6196e +size 1817 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/x86_fast_rounding_control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/x86_fast_rounding_control.hpp new file mode 100644 index 0000000..1fbdc92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/ext/x86_fast_rounding_control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a1da8081d2c34524b6c1e6e8b8c6de2dfac95ee2f5d911fc61bbb201aa4c7fa +size 2774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/hw_rounding.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/hw_rounding.hpp new file mode 100644 index 0000000..396e3de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/hw_rounding.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09f0dd3d3a045442f87d9be78b8acc16888e91b2739fd6a73c8c80ce13296caf +size 2418 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/interval.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/interval.hpp new file mode 100644 index 0000000..73eb0fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/interval.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0957b4a01a699abc36ba75be6b8875dd9d4a5968cff65d86844f4b8cc75694c +size 12198 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/io.hpp new file mode 100644 index 0000000..d2ae37b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49a9372d6a49b7cf4b1c6e198399afcd84f34b8b221dac5a8ca85ce0e457cd20 +size 1174 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/limits.hpp new file mode 100644 index 0000000..75a0cb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95bb47275f57b2cdf043622bd39c9aa7e4f844bd3e2c5639191ecb5f4c7bd9ae +size 1621 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/policies.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/policies.hpp new file mode 100644 index 0000000..3bdc1e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/policies.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fcb15e2f95aae7d7887b39786a149b17ee378cda26d2ae58f72197bd177c7b6 +size 1771 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_arith.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_arith.hpp new file mode 100644 index 0000000..f96baf2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_arith.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9b9caaa0b161bd08bec2aae02ff61e23a90f7cadb38af5f97f67b7c7883e0f9a +size 4783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_transc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_transc.hpp new file mode 100644 index 0000000..6b3aee8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounded_transc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ba451e23ce34f44cba0137e8f7bd0c3e91c4487a7201dbc33f89620cfa64f7 +size 5269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounding.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounding.hpp new file mode 100644 index 0000000..fb5eaaf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/rounding.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ab1de326d62de18d63fe003cf228e95d04b3b67b7bd07a07215a40b6cad9fb +size 2595 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/transc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/transc.hpp new file mode 100644 index 0000000..6ba20aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/transc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98eb54fa0e66e71c804f9302ff454e946ffc2b408f02fa37b991f23b304f6726 +size 7917 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/utility.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/utility.hpp new file mode 100644 index 0000000..b1c2933 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/interval/utility.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01edd94c492513df8a42c66d57c48bfa79136d619c2771fe88045390466401c6 +size 10783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint.hpp new file mode 100644 index 0000000..0408985 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6586bd36b98d23bd201446ad08e6994280e69b610e05c8b42344580a470987a8 +size 3241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/algebra_dispatcher.hpp new file mode 100644 index 0000000..52f95d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:322f0a5d5c0bd09aacf8de601a2cd01a7eeacfe4bed9121b0418a221bbbd27e6 +size 2549 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/array_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/array_algebra.hpp new file mode 100644 index 0000000..c378d3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/array_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cca3bfd8c7cb1316615f8c2e9027f6c54387598e325e7b8d5f837d2c9b3beceb +size 10846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/default_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/default_operations.hpp new file mode 100644 index 0000000..6f09c33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/default_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f63927d03e13bbaff606c5d7777512b8323187b6b914d29445bece39045ac511 +size 23794 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/extract_value_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/extract_value_type.hpp new file mode 100644 index 0000000..1ac97f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/extract_value_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4db3054286aff5e69a0551f550bd4048d44640760cd0c015052a7195663edf56 +size 1358 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/for_each.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/for_each.hpp new file mode 100644 index 0000000..d0bc36d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/for_each.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b52d1d145f7f1ed89aea838d5f93ce6643940424a893b377909fe81e6b7ccefb +size 9551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/macros.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/macros.hpp new file mode 100644 index 0000000..58778f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/macros.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5756cec9bdec5d6311e95e6653f0fd88cdd90576c6a289206d1ddd9acb7843a9 +size 1134 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/norm_inf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/norm_inf.hpp new file mode 100644 index 0000000..18e617b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/detail/norm_inf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31d7a78a114e14d55b26fef28aa8a69318a4441f3e81f704cb841530374dd5ac +size 969 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra.hpp new file mode 100644 index 0000000..eeed512 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13297d5b0ddaff3b83b3eeb846c7925b472d65c5ef797f9319ca998f94127fd7 +size 11422 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp new file mode 100644 index 0000000..7cf5f41 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/fusion_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29716b5d3bd5b85ec09696fa554a8d0437e6d59b518ff403a9b88f5253a8f546 +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp new file mode 100644 index 0000000..06d10de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/multi_array_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f66b4814b1c83d9b6485d8446b8c39b6ff61b3a0d9553ff815a2963545a036f4 +size 7380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/norm_result_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/norm_result_type.hpp new file mode 100644 index 0000000..591f241 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/norm_result_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b816676676eda7d7ce8e034ec78dd76b444a9bd21a2578cbe79e4126e9a2c1ef +size 821 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/operations_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/operations_dispatcher.hpp new file mode 100644 index 0000000..c166970 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/operations_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b6130cf366cd721e51ac340fe2a1270835673640046bb0a73f44374d6b0c2c +size 976 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/range_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/range_algebra.hpp new file mode 100644 index 0000000..0d12deb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/range_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23d1e0d895fe1856bcc4230fc092e66ca603e6f156751d7c871c8ca27552f393 +size 8358 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/vector_space_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/vector_space_algebra.hpp new file mode 100644 index 0000000..d0c42a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/algebra/vector_space_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4fc367d97d4203888093c9e45e5e8d90e1e2b8a402106275d0f6a373869212c +size 6363 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/config.hpp new file mode 100644 index 0000000..669ee46 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5ce900769fd5177fc8d90410a796afc2127ce6657ae7cbc52cbee2240b20879 +size 1201 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp new file mode 100644 index 0000000..b997bd6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b00ebd810c19d3b1e42b286f2cc35ba43f09560ebaa1874289551c0b1ca9b5a +size 1155 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_resize.hpp new file mode 100644 index 0000000..7fb605e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/blaze/blaze_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07640c21ae2484a2ae648a7d1b74e9d3056db5c2c91d5e17219a03bee7e824be +size 1708 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute.hpp new file mode 100644 index 0000000..81cb9a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bb95dab58d3788f7dd8e7d0ff6be3565fc38782e5355a3a34937ee3a891fdfd +size 993 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra.hpp new file mode 100644 index 0000000..44ee3f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebaa344db28265e7bcc3c0e4a78b627113e94e6ffc81444bbf69282efd5676ae +size 2026 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp new file mode 100644 index 0000000..591894a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ea05959177d31887dc9a1bd7af488b952734d10d2aec37827419bc30b23fbb8 +size 1169 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations.hpp new file mode 100644 index 0000000..1351be1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1721db3511a941f42d177f6f686414b25502e6e85be1e8b1998718b23b4c1791 +size 8749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp new file mode 100644 index 0000000..4a6421e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_operations_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2d294d552050c5b2be51e722e1608b6c407bc6899e4561bf79b4b2312674863 +size 1202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_resize.hpp new file mode 100644 index 0000000..5ce1fd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/compute/compute_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff67c00a0e78504990229066fb0b20539cdb5996c95228bcdfc4859146ce4b06 +size 2487 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen.hpp new file mode 100644 index 0000000..c030bc9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcdc2789840e4cd0df1d650289b9bd89a32281e18120ce30bb0a0123f31dd663 +size 754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp new file mode 100644 index 0000000..4a2bee1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e1adde9dae18d7a61f150afd4f4ca593ae9395ee98f4e1af6ebff86a7079bb43 +size 3081 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp new file mode 100644 index 0000000..fa83335 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:65ec9437669e345ae3210fad068755709904decb2a0a8a14bf370075c8c4efc1 +size 1270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_resize.hpp new file mode 100644 index 0000000..ced204c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/eigen/eigen_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e60c70cb81574ab1e0f5b5947d71be34bb0900fd575f6119c6c9d6ba165372ec +size 3119 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp new file mode 100644 index 0000000..56dc097 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/gsl/gsl_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8aeeb88dc576be5e43f51c3f9ee6b37244566795996ab04f3ffd13814e7ff74d +size 5248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mkl/mkl_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mkl/mkl_operations.hpp new file mode 100644 index 0000000..ec369d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mkl/mkl_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15aeb6a454e28f1bec900f5308b55419935c72aa41b7f6116499cb06e141444f +size 6731 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi.hpp new file mode 100644 index 0000000..9469455 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19a2ba3b5e4b52ccdfd56691f6f4795e522e9e7008ee64d40565fc23ec5140a5 +size 637 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp new file mode 100644 index 0000000..5f8c52f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_nested_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:926c2859a1751b11b41abcaa0ddaddb7d58266aa7808785b5557f0b7e8938cab +size 1628 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_state.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_state.hpp new file mode 100644 index 0000000..9dc7aba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_state.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a471c657f99c4d0d7a6a3df71d1fb5d8eb623d13034a1256bd94b09e128e4eb5 +size 2962 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp new file mode 100644 index 0000000..5deacf1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mpi/mpi_vector_state.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c809b1667a8fa74241a7e09971d4b108d13192faf27b23d50849213434a4743c +size 2990 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp new file mode 100644 index 0000000..0cc80ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/implicit_euler_mtl4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ebeec2a7f60381d3c1be3db892cc5fa4d1ae2c2ea20bbf09234e01dede80f53 +size 4642 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4.hpp new file mode 100644 index 0000000..9018e4a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a85f77fb44e394bfd70ff9a2c947b3c2064aefff05170a002fd7dc68b3321e6 +size 704 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp new file mode 100644 index 0000000..9851700 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ec70844b116d5343c429a80c5f6bd4215e5d4fe062d70e098c10db57bf1c0b5 +size 2746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp new file mode 100644 index 0000000..d5411f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/mtl4/mtl4_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f31567de1793f579e363b9e08676f0b5e9df165dd32034d45933f83abaf24d5 +size 4112 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp new file mode 100644 index 0000000..2e82890 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4b2e175816439e7e87632dc9e29df8565f9023f60869fa4a32d68c3a140d075 +size 1024 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_copy.hpp new file mode 100644 index 0000000..2f3acb8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b307f9cb468498359c23f0e1bc25b100dea9bb825219091bc37431ce0eaa916e +size 1150 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp new file mode 100644 index 0000000..95a90c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_norm_inf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0326aec6dff5dbad01b4a1bb9fe567122cad494e076e158059a90567eab3a4dc +size 1148 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_resize.hpp new file mode 100644 index 0000000..9d1be18 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/nt2/nt2_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8516c627ae5cd1c325a5a6255f3905c1aae8c8a592ea86aaa76383b6fb8af09e +size 1638 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp.hpp new file mode 100644 index 0000000..4863759 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ca71cf42e1b3bd10a3a2e31516f66781a4052723af26df0491d7b668fbc881d +size 900 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp new file mode 100644 index 0000000..e5d448d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_nested_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:279827a5f2e8359cc5d6e044924770a0436f966f8925578ad534dafd1b8d51e8 +size 18879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp new file mode 100644 index 0000000..6be85a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_range_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:87bd3f729c0ff1f8326bbf5b54fb54695043c1e347a3200a76db343c060ce3f1 +size 18082 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_state.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_state.hpp new file mode 100644 index 0000000..68ada5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/openmp/openmp_state.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd2f19077d3f9195f0a3b2dfe4f6abcfeb13c6297d8b9fd43e8339c69d0a8164 +size 5204 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust.hpp new file mode 100644 index 0000000..3e40f14 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:30f340555a79c91d64f27c0f5a684712bf6c6aed0850a8fd5d06687ca50f82ed +size 937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra.hpp new file mode 100644 index 0000000..2bec98c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:715a6aeda5e34e33aa5808ff0fa002d85cfd5eda8b2f96b7a0a3fc8319646e8c +size 8129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp new file mode 100644 index 0000000..5b173cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39af530b2e705c6083b993daaafdd4451f9cf801fff766bf63d7e95d618fd1f0 +size 2857 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations.hpp new file mode 100644 index 0000000..38faf4d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8101d99b174476160455f7f6dab4fedb0672fa8bab628aabec29cc8a63c44e72 +size 7441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp new file mode 100644 index 0000000..055ac92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_operations_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4686123710ebf9342e3b8265becd8cffc2bc73f5ef7801694dfe37b8341d35c +size 2934 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_resize.hpp new file mode 100644 index 0000000..64d62cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/thrust/thrust_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a862846c1539a6d8cdc337d111d213e1007bfde15edd35fcded296de2b5ee8e +size 8486 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl.hpp new file mode 100644 index 0000000..fc529c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4ada58e89f35ae05fe9ac329fbebd2a0cc21e2756ebae6172345079414ba56a +size 985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp new file mode 100644 index 0000000..9f9841e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_abs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfadd4df9e5769503f3425a5899cc47f39b9edf90cf9dd85eed213f03ebd4fe7 +size 1575 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp new file mode 100644 index 0000000..0a11cfc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_algebra_dispatcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28e2496837a790b3dd179e51ac6fb3dbffcd51c582c99a7cc81a0e4c1376a976 +size 1305 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp new file mode 100644 index 0000000..3bf5523 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ece95ffc9eda31bf679a7f2ab1f2817146820d1b063d4b5f7a72ec640c8fe8d0 +size 1269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp new file mode 100644 index 0000000..21047d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_norm_inf.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54d0fb5da18581c96e12dea143dc49553cc520e4f6b0710641bae60c1ac6d347 +size 1749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp new file mode 100644 index 0000000..3f6f389 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3b7292e98ecea62aa3165df8ea0b2609d768239fa9fb7158e08d594f9a5a0596 +size 2274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp new file mode 100644 index 0000000..efb00c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/vexcl/vexcl_same_instance.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57de932e29462a55c540d505ac4f091b5441313d8eb5ae7f4b434707a2424986 +size 1562 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp new file mode 100644 index 0000000..c818209 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da35cb1f01a1adf9d7fac8a2020b700d04ac11b1dcb9848b2a5630963ae471bd +size 7774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp new file mode 100644 index 0000000..17d81c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/external/viennacl/viennacl_resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c6e88b6234fef0beaa9ab9bc7da05769a006161719ba96825585ce80952975a +size 1586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/check_adapter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/check_adapter.hpp new file mode 100644 index 0000000..cad7553 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/check_adapter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771fba6f1e79cd5bddcce801e528f7f99210190b9edb54274264c0878ed14eab +size 5875 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/functors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/functors.hpp new file mode 100644 index 0000000..ae22848 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/functors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aac0e729941fbc47bc897858236eabbed0429545698626b86ab79451ee43614 +size 1712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp new file mode 100644 index 0000000..c345ae2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_adaptive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6304c96e87dbbcf9046a5200f7516fb776b46689841a72299ded690a4c9cd316 +size 5355 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp new file mode 100644 index 0000000..235eeae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38aa0fbc0aa952e9860fc0c7466662f9ea07642df19ee3a475c0590fcf607849 +size 5880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp new file mode 100644 index 0000000..a3c8c4c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_n_steps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8069d0965b5720f58b487d6c682571392730b244feab71bdd666f94c28101fb +size 5817 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_times.hpp new file mode 100644 index 0000000..9b7fb0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/detail/integrate_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05cc5285b1a0d5dc8d0ce45d0580d7e484cc692b703f709d6fb3995be803eff2 +size 5923 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate.hpp new file mode 100644 index 0000000..d8c35f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15c3811c5fac8fa64d7b9fbde02c648351ebe5098def1c72c73906cf383e4bd3 +size 4991 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_adaptive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_adaptive.hpp new file mode 100644 index 0000000..3989808 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_adaptive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74107928f15882fee2cc9a73ff6fa600f8f8d0ed682ce5c4fccefd9cd0dd709d +size 4574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_const.hpp new file mode 100644 index 0000000..26d5f28 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db76262aa4a99358f681af7fd76aa82669f89b139b7c5b373268e73ceba2983e +size 7908 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_n_steps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_n_steps.hpp new file mode 100644 index 0000000..031ddea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_n_steps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3031c1ba9ceddbf1b90717c49c2103cdbe515db707af7346fe691c8efb89744d +size 7235 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_times.hpp new file mode 100644 index 0000000..e8bb2c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/integrate_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:502234c8fc52e5786c767255a0bf7b77b69e8065878c21f7654fbd459b22d862 +size 9077 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/max_step_checker.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/max_step_checker.hpp new file mode 100644 index 0000000..fa703cf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/max_step_checker.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:027caeb3c65b416d19c98f6ce4709dfc74fc9766b257f121a688278f247926c9 +size 2853 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/null_observer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/null_observer.hpp new file mode 100644 index 0000000..33f372e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/null_observer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e532ae740b97809d77ac7eda46d62d0554fa7cbd0ff458205a1162b05df442a8 +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/observer_collection.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/observer_collection.hpp new file mode 100644 index 0000000..97d9bb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/integrate/observer_collection.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce00dcf23b03417f7cdc7a8bcab17e383cba6158df3aa13ae9c2d65753b4b924 +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_iterator.hpp new file mode 100644 index 0000000..0bc4f08 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a69fd969cad0b229536f9fbd4b97d9d1fb7f4117e83c96402d6748fb02f0a3c +size 6873 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp new file mode 100644 index 0000000..ead1c22 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/adaptive_time_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2eaa871c0400a8e5b3809a7890969db7a9f2f4cd53575a70efeb5f82caf0ccd +size 7177 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_iterator.hpp new file mode 100644 index 0000000..6505f69 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abfb88a3d9f1a0cb31a7ce8f2e78decd10edbfe16090971dcc1aea748827fed2 +size 7202 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_time_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_time_iterator.hpp new file mode 100644 index 0000000..2f3792d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/const_step_time_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44e7ae7b7645523baef039b25c2dc3b76cca06a9b6db40c99c7cb4012d2edaa4 +size 7268 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp new file mode 100644 index 0000000..d8b379e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/detail/ode_iterator_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0ae7c84d13781bde1353aa87d6e69fd7b32921b90d618c60dad862e65234f45 +size 5976 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp new file mode 100644 index 0000000..da3c2fa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/adaptive_iterator_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:41e306b4c28aba5066a1907a2c33398343413349a76b58d75208caf1d996db2c +size 10029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp new file mode 100644 index 0000000..a98a866 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/const_step_iterator_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58e444f436d966618b8de76a453fb9614e62de1baac4c4b11d9e754f9dd29e16 +size 8877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp new file mode 100644 index 0000000..5169edd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/n_step_iterator_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67fa3c9dfb890058e6da151d4f0e222e23d7ba1a140491975c502afe405fde82 +size 9059 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp new file mode 100644 index 0000000..2d289a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/impl/times_iterator_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b01b199d15ed6211c7e66d27c01a79f9944bfceda2e4d13655ef589b62b17be +size 14488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/functors.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/functors.hpp new file mode 100644 index 0000000..ae22848 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/functors.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aac0e729941fbc47bc897858236eabbed0429545698626b86ab79451ee43614 +size 1712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp new file mode 100644 index 0000000..5b0d1e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_adaptive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:595cc519b5699aac21560d88f2a0f612037432fed1a85652222ff33aab4fe1f4 +size 3950 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp new file mode 100644 index 0000000..5f14fa4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc849ef642a40a8feb0cbc4ee1bdb06ffec82ef6d77f6c02f3a99ab930e6f894 +size 3815 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp new file mode 100644 index 0000000..2896426 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_n_steps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb2ce6626773d9ec85d04249a4be602ec9b1a54924d7ed9bc22a7a89b1fd733b +size 3892 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp new file mode 100644 index 0000000..8d6c39a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/detail/integrate_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e600964c3f24515602d612f94095daf53ecb843fbefd31b03b3387351a1b9730 +size 2018 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate.hpp new file mode 100644 index 0000000..4169a1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc118e53be6e3c4a7d29eea5b6cd4ed149ec5269491b547d0533bcfeb7e05403 +size 3934 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp new file mode 100644 index 0000000..b4a1b53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_adaptive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2496b38fe422c3580c0e3b0ab79f76e1cef2008e961766472607ace695334fba +size 4592 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_const.hpp new file mode 100644 index 0000000..6869925 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:218a461697110af8c53f848d72ca8feda06da97d8d8f13528e720e78bdd3b064 +size 5438 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp new file mode 100644 index 0000000..55cbd9e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_n_steps.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcc1d75efa8574012834fea6bbc1e64d97dd31cb1b9ad856f12efdb4327e7c7a +size 4688 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_times.hpp new file mode 100644 index 0000000..91bd04f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/integrate_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c6f7533cf4ec39d37f64b41e633f092cc0e917087fa4c746bba9b026b1daaf81 +size 4926 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/null_observer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/null_observer.hpp new file mode 100644 index 0000000..4686127 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/null_observer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85dcf174a498291542a5cba57d7b3cf177882bb6d7d69d7618928168cd9521d6 +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/observer_collection.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/observer_collection.hpp new file mode 100644 index 0000000..5b0c80c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/integrate/observer_collection.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6579fee0fbfcc9c705c080deb3712ecf0e362985ef302be3342708189af66473 +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_iterator.hpp new file mode 100644 index 0000000..9a06a4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5a506af6e1bf32baffaa768fd0524eac1e96ca32d0763c97423a5f6dd81ee0b +size 6747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_time_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_time_iterator.hpp new file mode 100644 index 0000000..6b22756 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/n_step_time_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57bacd367bccecf1ecce17c4b47bc5daf693ac8e11250249eb91b72b81477015 +size 6901 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_iterator.hpp new file mode 100644 index 0000000..17a621d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:400a93597920a00e6d681895d0a385f030cc5351fffe968fa7182d3a31f1030a +size 7762 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_time_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_time_iterator.hpp new file mode 100644 index 0000000..2cb2b89 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/iterator/times_time_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f487f4a99bbcc479da2ace9f186d1fb0185aa197dfbb2c30b97c2a8e21a0960 +size 7963 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth.hpp new file mode 100644 index 0000000..a36741c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef8993fa2ac1b1f1cf63b54affa37e6172ff1c11a3d36a5799bff35606cb6b79 +size 15264 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp new file mode 100644 index 0000000..0f6e2a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_bashforth_moulton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:362d3e456d849256a0593cb1bb63d75a63af4074b87a5df49bf21e7e0607efd4 +size 12015 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_moulton.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_moulton.hpp new file mode 100644 index 0000000..ecaf08b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/adams_moulton.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a5b5e65056c134daf1e54016a81160725cb74351d2c2ab2ea471cbeea7759c +size 6112 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp new file mode 100644 index 0000000..d553b8f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/algebra_stepper_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78b34ed52220e87e00d76259de73ab82bad2f4ad9ad54af41f75198e190da354 +size 2518 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp new file mode 100644 index 0000000..35ed1a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9bc7b056749e32cdd7fea59676ba3cf865739f7d224bcd29d9ca475730075c72 +size 25420 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp new file mode 100644 index 0000000..bdb9133 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_error_stepper_fsal_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50ae3bb3ba3bb6dca84a29268dbb65cabee321b0ff877c2d651207d7f733c740 +size 29224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp new file mode 100644 index 0000000..e3c6a7a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/explicit_stepper_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ca599775fe213ceeb87c09fde6b1e37fe8608eca76ccd3139848adf9a60d29e0 +size 16425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp new file mode 100644 index 0000000..e2e0f92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/base/symplectic_rkn_stepper_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:496fd86ffb265e5d73cd9ef06e4aea03cdcc8d80870935ee348f8af62ddd7475 +size 19778 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer.hpp new file mode 100644 index 0000000..8b1f55e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a13093404515b2a56e6ad23491ec12ac3e3c183548625ba779d4d8701c9bebd +size 26189 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp new file mode 100644 index 0000000..1787c01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/bulirsch_stoer_dense_out.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd0d478dad6f54ea97bfb4e6bd046b87194fedf828c33af7dcf01a97b058b97d +size 33846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp new file mode 100644 index 0000000..5e2bae9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_runge_kutta.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c418dbee15b16d6ffc365031beccde6c0300a041c943711bdbb8ec24aabe4e1 +size 38000 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_step_result.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_step_result.hpp new file mode 100644 index 0000000..118f12c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/controlled_step_result.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fe94953d9fb2aeb1876209597c5ab20af64cda5951e7fe0a59fcd632fa0dfb6 +size 1092 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp new file mode 100644 index 0000000..cbb73ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/dense_output_runge_kutta.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbc0352f0c8ee158daee4f035bad8824a4539955736376a68f924554411d5001 +size 14591 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp new file mode 100644 index 0000000..a0589d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_call_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27e9993d88a3b0f660cef0274b15c4d2bb954733469e79ae5ca467e69e19e18f +size 6920 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp new file mode 100644 index 0000000..94fb604 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_bashforth_coefficients.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6fa13aa6cc20b37394bc6c9ffd4e6614b7d8ba553087ed437dfb7a5959d2eb1c +size 5537 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp new file mode 100644 index 0000000..f8dbca3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_call_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9681316a0c2a592ce774eedb3211277ca7e009d5ab2b9abe39534749ef76c437 +size 6984 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp new file mode 100644 index 0000000..9355931 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/adams_moulton_coefficients.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:733343a75ca10f65eb8e2f3ac96c427810083e5a23371a86091bca6e2be60b48 +size 5441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp new file mode 100644 index 0000000..5278f62 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_algorithm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9391a270930dc2c2394bb8a325d603dede93260919ecc007ab849e0488d379fa +size 8266 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp new file mode 100644 index 0000000..c42d3cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_call_algebra.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d9f6065bc2959d21cb09f393ee9c5dfd2cc33679957e52a27b043c806ae26e8 +size 10521 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp new file mode 100644 index 0000000..774ee20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/generic_rk_operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa84ddfc909e06a60e8d1a44a1c289022e0781f10000b9dc2c6c24b92b4f14e0 +size 9799 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp new file mode 100644 index 0000000..41088ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/detail/rotating_buffer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70313a6cdceccddde2317e3cd109e83a06d70748cb11157c9c201b09eaf74196 +size 1534 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/euler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/euler.hpp new file mode 100644 index 0000000..046b163 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/euler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76c4bce7e28ac05d3f4874edc41c3f277ba360108442a0075635a7d2a8eb7e37 +size 6587 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp new file mode 100644 index 0000000..d8ed1ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_error_generic_rk.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a84a0f68073022f76a5e83e827b06448c2a4800f9c39d4b15bf8f06fee34fa9 +size 10708 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_generic_rk.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_generic_rk.hpp new file mode 100644 index 0000000..3df34d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/explicit_generic_rk.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe1ea8f3f96d104c860a4334ee60883f406d466c1562764fbac2675cab86e23a +size 8491 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/extrapolation_stepper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/extrapolation_stepper.hpp new file mode 100644 index 0000000..3fe7c51 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/extrapolation_stepper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4105036f103879dbfeefc2abba436485c69eaa9695b3272fbcf8a09d093dd11b +size 11155 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation.hpp new file mode 100644 index 0000000..21d6ff7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9a24f7f38057ec04f0927fbf949b5de709a0b1069116304b760b41155bbc931 +size 1376 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp new file mode 100644 index 0000000..184858d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_controlled_runge_kutta.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c45704bbe69713d451f8fd8aec96f648a371b3d77c0d32a56788783821fe0756 +size 2088 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp new file mode 100644 index 0000000..3c8da9c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_dense_output_runge_kutta.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06c5e3dfdcca82a21bbe9dd56ada2f17b690ae0b5ab2a917c7a2728c6928cb69 +size 2360 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp new file mode 100644 index 0000000..a11a688 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_rosenbrock4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b1de04cdf8bccf42f8979b3dd8f8734e866f6793c62c29a590ddcd346f15ed0 +size 2570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp new file mode 100644 index 0000000..da3f48d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58bdaae7ce317c9a8e9b500c7cadfbbf7ef4a452cdc567ecec24cff4ed9d49f0 +size 1523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp new file mode 100644 index 0000000..cafba8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_cash_karp54_classic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f21478d6759463a12d4920ffb87c4f0e549cbfb56e9acba7ebe5ca946b1ad2b +size 1614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp new file mode 100644 index 0000000..42e93d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_dopri5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ee65612b21fbc3bfd322d2d3d5ab11ee34db9be1432635bb66ac986721fd4bff +size 2056 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp new file mode 100644 index 0000000..ae19104 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/generation_runge_kutta_fehlberg78.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e70ba81d35c459e797f924be4ffab0f006055935d95669aee250c82a67d5063 +size 1468 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_controlled.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_controlled.hpp new file mode 100644 index 0000000..f0c8f4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_controlled.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c93a85a046ce93d21a93ab330ee53925bc136823d16a1abe78fbec1efacc3beb +size 2791 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_dense_output.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_dense_output.hpp new file mode 100644 index 0000000..28da227 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/generation/make_dense_output.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c95666d453cd810baf5ac99a242399179e217935d13e259f21b3869d2befceeb +size 2838 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/implicit_euler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/implicit_euler.hpp new file mode 100644 index 0000000..a178262 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/implicit_euler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b705728420ab54b339708c6fe0e3aaea0e92c04bbd0d63525bb3582423053878 +size 5236 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/modified_midpoint.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/modified_midpoint.hpp new file mode 100644 index 0000000..bc5e5ab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/modified_midpoint.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b07268dbe099da1d91420b29df6fb2b00844ccca002b5da11ed0218a800e71db +size 10566 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4.hpp new file mode 100644 index 0000000..03c014d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db74ad85477f90c69791b3aa31488dde537c4c3e4318bbe30eae47f98d51fa91 +size 14602 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp new file mode 100644 index 0000000..129436e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_controller.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e80f5e56131ab26eede27e63ebbab23396efbceffb97d2528a84e0be5328be72 +size 7288 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp new file mode 100644 index 0000000..5863b7f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/rosenbrock4_dense_output.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3b8bf70b8f363796e515dd1a4ae56e864b8c49035f5555e1e3ea4faf9977b7a +size 5232 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4.hpp new file mode 100644 index 0000000..d9ca84a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f253ca3b2a5df5e6cd295a562d3836ee4a2e6ad0a15df894d6187ec3f2306bc2 +size 5860 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp new file mode 100644 index 0000000..b5ed2e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta4_classic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2507761eb14fa20651e6ca5715463d23198b4a14864d0998b4fdac03e10d2dcc +size 9255 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp new file mode 100644 index 0000000..86f9edc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dc95951a6472269f20a652ef6e25d4e25af4cb4f05e2a058ed8c0ffb41ead06 +size 8676 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp new file mode 100644 index 0000000..c24b73a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_cash_karp54_classic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4dabc98f804d1d46e9563cf2ccd7bb78cdf5b9d31a8501b72ff7df09f57bd5a +size 14318 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp new file mode 100644 index 0000000..d3d44fa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_dopri5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5934e015c0ee4ff8d8a52418bd04b314e077d0ab2e30a1aa93a4ee0f5c8579d7 +size 21484 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp new file mode 100644 index 0000000..ca4a922 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/runge_kutta_fehlberg78.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27025f7427fb55c7f013bb7cbffa59c1cbfa229351e400b87866a5742c8ae170 +size 15005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/stepper_categories.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/stepper_categories.hpp new file mode 100644 index 0000000..080ff90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/stepper_categories.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232abf2a2325b5c85b6fb33ca84ae510db5e186b85cce99d05425282881a4b08 +size 2162 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_euler.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_euler.hpp new file mode 100644 index 0000000..32b4927 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_euler.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f19c32b2ab33f082b0ee099e45ad3b27e207ba5a9f6346629921e938f48e8c2 +size 3937 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp new file mode 100644 index 0000000..8d6bbc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_m4_mclachlan.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d4015a3e9b3e5499c0821308fecf04211f91e39b6db152972d0d9c16e13adf1 +size 5120 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp new file mode 100644 index 0000000..e83611a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/symplectic_rkn_sb3a_mclachlan.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:88f816c4626f44937cd67ee9da83fb50adad769e55621b6f3c3436fa14fa8efb +size 5389 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/velocity_verlet.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/velocity_verlet.hpp new file mode 100644 index 0000000..fa9df31 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/stepper/velocity_verlet.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fddeaf351960a0cdaa69f5f2b90e48520ea5dd4924360509e42b64d5e8cf56de +size 13544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/bind.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/bind.hpp new file mode 100644 index 0000000..9b9e52b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/bind.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61a537e10a0833e6b0dda3eae8ae2d2ff680c389d71e4b889cea2b6f1876780f +size 1710 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/copy.hpp new file mode 100644 index 0000000..ca5c15a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a68525bb5c10982d4bad446c065bf46fc4558fc5fe61062f3806426bc1513b9 +size 2158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/is_range.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/is_range.hpp new file mode 100644 index 0000000..2795a24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/is_range.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95429194536b13e52cf4842b6c4a5dee6c2df12e18d6d0c32545bfcc739fc387 +size 2712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/less_with_sign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/less_with_sign.hpp new file mode 100644 index 0000000..1ae7e3d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/detail/less_with_sign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b49006f4fa414c223d6274d9650d6b7715e1807af181369e07c459023d645a16 +size 1951 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_pair.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_pair.hpp new file mode 100644 index 0000000..47ce040 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_pair.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6c2ab5661990eb19e0355a3f1e486a6109a04ed8967291a5aeaa0f4bafc650f +size 895 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_resizeable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_resizeable.hpp new file mode 100644 index 0000000..254069b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/is_resizeable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f6290d8142a8539be292bbaf5c04fd4cc102d9c61bc3d182560750a834c18bb +size 2102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/multi_array_adaption.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/multi_array_adaption.hpp new file mode 100644 index 0000000..9bbb4c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/multi_array_adaption.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1d643566db5a8a6dc10317498e16b4671014e327fc7b1a1f4bec151352772e8 +size 3493 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/n_ary_helper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/n_ary_helper.hpp new file mode 100644 index 0000000..fbf07f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/n_ary_helper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb012a399bb91dabf748afe9c7a629e533bb7e3131339f300a28a1cc1736fc0e +size 4077 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/odeint_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/odeint_error.hpp new file mode 100644 index 0000000..2f5840e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/odeint_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a57608c3d1cea7d18ab8a77d23efa5e94b2bf4f759c2826f7df541ae11576dc +size 1536 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resize.hpp new file mode 100644 index 0000000..72d3d39 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c305504620ee05d770cf783d27c614bec3f9f6392d4c183996a72a24fcb7c52 +size 3079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resizer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resizer.hpp new file mode 100644 index 0000000..cca2f82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/resizer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e07c6c8576bd8d763fe00c1b5605514aa21678a4c49accdc526f123be53e911e +size 1941 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_instance.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_instance.hpp new file mode 100644 index 0000000..fef55ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_instance.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277c3223704b4c6de8c8c783b4963d2b02c3d3020f401f020a0b4eb2cba12037 +size 1172 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_size.hpp new file mode 100644 index 0000000..e22d189 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/same_size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11ba4af7d6487e0fc02fade96e5922e7dfba56b37e73ac29057e572053b29165 +size 3066 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split.hpp new file mode 100644 index 0000000..cd830eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46004fec22a7fd08618b3c773a04f5956bf8200c6b0dfe353f152b29237baa1c +size 1473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split_adaptor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split_adaptor.hpp new file mode 100644 index 0000000..5bf02a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/split_adaptor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d74d72bf92701c88b2cc7a994a4cc89cb00d867c4d1cfe77d74463daf8f251d6 +size 3101 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/state_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/state_wrapper.hpp new file mode 100644 index 0000000..4ebd75a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/state_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df39023a505afdd600a2658abc64cb03c7d6ec392f03c1760eb67374c64964a8 +size 1098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/stepper_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/stepper_traits.hpp new file mode 100644 index 0000000..1b36b09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/stepper_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c916ee872df5e09e06e76801cdac38af3b4a49d07a1e80d2865beb092babe3e +size 1546 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_matrix_expression.patch b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_matrix_expression.patch new file mode 100644 index 0000000..8feb1a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_matrix_expression.patch @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:823024f8c468778fd57d7e6bc7a462779988ddf42057f3a50b7c31560f060c67 +size 388 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_wrapper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_wrapper.hpp new file mode 100644 index 0000000..5fe29c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/ublas_wrapper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2605950e1cb4f8eb57b594dc7b52afaf8d45550d4aafce5800faff722d60bd14 +size 9889 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unit_helper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unit_helper.hpp new file mode 100644 index 0000000..37dee68 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unit_helper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:796ecc239916033c50bc478fbc5cea246cceaf680ef8d4e6bfb371b68613f314 +size 3209 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unwrap_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unwrap_reference.hpp new file mode 100644 index 0000000..7891be0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/util/unwrap_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5535569a2df82bb794bed607dd44d0b547b698bd721ee6c80a05cd5f06282089 +size 2442 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/version.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/version.hpp new file mode 100644 index 0000000..518edc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/odeint/version.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7dc9e5476c6ac92a08230443da2da513550c3562cce4600f152493e3d8a32bd4 +size 1207 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/assignment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/assignment.hpp new file mode 100644 index 0000000..fd54521 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/assignment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dbc7d57cf2baa18ca724b71cf9cba735b4f2bce919ea0d94d22b4c4cbe54847 +size 35347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/banded.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/banded.hpp new file mode 100644 index 0000000..e9074b8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/banded.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa35be788799f9f4a94159f67c15f2aa1d0169883e66f1ac1d4a01c5f80dd8e1 +size 86847 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/blas.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/blas.hpp new file mode 100644 index 0000000..ba6309e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/blas.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6228c85db99c8a40ccbc7ce0504c4ba315185db2f8f35c3b7f4a587dfd21d698 +size 18132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/concepts.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/concepts.hpp new file mode 100644 index 0000000..970c503 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/concepts.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b047e204e080cc46e73b4353129b34cb3c4108dd471ff5b64ed1941e2fbbad99 +size 73824 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/config.hpp new file mode 100644 index 0000000..1a7bc09 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dd31c3427ed9dc1a4558aee939c39bfd75f3875b3778510a505f3845e04cacc +size 8016 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/definitions.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/definitions.hpp new file mode 100644 index 0000000..1ce1e53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/definitions.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a7ee1ac2751dcdeef0e03ecd7d034409ae073ddc717821d7af18c37c2805f99 +size 6508 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/documentation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/documentation.hpp new file mode 100644 index 0000000..7a50515 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/documentation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05673f4a0c57d79d577dc52b01ed1a2a74c13222cd912a95fa1cb253f59b6c66 +size 883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/duff.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/duff.hpp new file mode 100644 index 0000000..3f8616f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/duff.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97fe2ec666aef1c1c8bbd12f8db338a9ba881a42ba16ba2c88d68ed1707c0c0b +size 1378 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/iterator.hpp new file mode 100644 index 0000000..a1fa075 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f52e176fd0cb4d0aa9f028cb2466bfaf27e3a73887c3fd39833d15ac45a56e6 +size 50340 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/matrix_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/matrix_assign.hpp new file mode 100644 index 0000000..2f8d5e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/matrix_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:036c0bce7895847f0bf97c17a8cfc252d877e7d89aaa6138e6ef296543d6f0b3 +size 78675 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/raw.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/raw.hpp new file mode 100644 index 0000000..0b04a43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/raw.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73d411a7bf7c62bef0d64b8d0d90fb49789e0ae23b25ced284aa1d39a917a2e0 +size 30299 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/returntype_deduction.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/returntype_deduction.hpp new file mode 100644 index 0000000..6ceb45b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/returntype_deduction.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c499eb56bd60c8f3b6ac3e75ba6870c0c698793a51d4f8061fc80bd504921f24 +size 4776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/temporary.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/temporary.hpp new file mode 100644 index 0000000..0e82ddc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/temporary.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4f19f730633e4b61d9baca58e5d26557121eec6e9963d1a67312fc648a22cdd1 +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/vector_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/vector_assign.hpp new file mode 100644 index 0000000..d3818b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/detail/vector_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:386fcbcf23d67375659cb6ea81224f1be6d1872029bfef2e20b6bc4be520aa49 +size 23992 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/doxydoc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/doxydoc.hpp new file mode 100644 index 0000000..7038d06 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/doxydoc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdddd5957fa9fc1ff82ef826819263d65abe8d1f3eb299a946d6d0e56f271656 +size 4087 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/exception.hpp new file mode 100644 index 0000000..3fb3353 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4be5c03d7bf8a97ad0282d9911ef43295dc53ec382facd6a384554a7ec8c0b24 +size 8822 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/experimental/sparse_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/experimental/sparse_view.hpp new file mode 100644 index 0000000..b97aa33 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/experimental/sparse_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3db08c7e81a025ef2d2ec50a7494b80f7897e5c9d06d94411cbe54181adb036 +size 10452 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/expression_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/expression_types.hpp new file mode 100644 index 0000000..3e11bb0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/expression_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d5c564166a7a29f796f6fac42f07cfa839c5a50094b7fca55b583735ac0985d +size 18467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/functional.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/functional.hpp new file mode 100644 index 0000000..f0f04d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/functional.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c08d9d81604ee32a101dac1f19286b92591b10ae101f5c4f8be5bd1a8871145d +size 79106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/fwd.hpp new file mode 100644 index 0000000..c4de537 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fab1208c8cb104ef66c8016e4114df2ebee0ac94353bce98b5fffb73e28c2ae9 +size 7215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/hermitian.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/hermitian.hpp new file mode 100644 index 0000000..75765cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/hermitian.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c1fb30fe38c90ca41754313d5560e943c9ad821cac0fff529e2dca404e9cf7f +size 102000 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/io.hpp new file mode 100644 index 0000000..23edb01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:677892585c3090751b51021554b9bed61c3cfb27a723c67217d4d733873df2f9 +size 13687 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/lu.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/lu.hpp new file mode 100644 index 0000000..c05a1c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/lu.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc96eb0492cf2655c424fe6679a431c83cd9051a6c5b91c211d47524443db16f +size 14044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix.hpp new file mode 100644 index 0000000..6b1c72c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4135ddb03ba7dba2b1de6165892c4d8f892531ab160dfdb702dc4942c05edec1 +size 215236 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_expression.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_expression.hpp new file mode 100644 index 0000000..3e8bdaf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_expression.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:668a5d096df65fa1cfdd38b4ddfd3360167598e38ddba8fadd4f399d09f1f0a1 +size 213106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_proxy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_proxy.hpp new file mode 100644 index 0000000..6c78007 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_proxy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:997506036c3a994a994a360b4c5905b32107597193ab00977e479d88af69849d +size 201494 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_sparse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_sparse.hpp new file mode 100644 index 0000000..eb193f1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_sparse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81d2a98434edf4588b2d8c650eb31a3838702a5c227364fb2b34ecb7cea775de +size 231404 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_vector.hpp new file mode 100644 index 0000000..25fac61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/matrix_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f066e16553f03fadedcdabb64dee3eb5cf841cf9d67be1e99e36feecb0d9149e +size 10196 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation.hpp new file mode 100644 index 0000000..2a2e0bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c78cd2d55db45e88de55f44f8a2353da061e5cf60e858a4854d876f8111eb532 +size 32110 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/begin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/begin.hpp new file mode 100644 index 0000000..b3ef4e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/begin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:255191c2a2758909b6a3d1514afffd47be9307685575d84666832432712fba69 +size 11390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/c_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/c_array.hpp new file mode 100644 index 0000000..e5fef05 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/c_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e649c41e9dcd4783f167bb794bee88cf096fe6109a87cd058cab3bc4cc016ff +size 957 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/end.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/end.hpp new file mode 100644 index 0000000..843b065 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/end.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ce5716c976fb0df0e9d7b1ab0fcb38cf8a5670c12c8d4e7591100d1e4516c31 +size 11290 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_columns.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_columns.hpp new file mode 100644 index 0000000..638acae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_columns.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42a69fc73d51943b28f96b93964d2d5aa67c7e1cfbb850a6660e52d317ed3608 +size 1179 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_rows.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_rows.hpp new file mode 100644 index 0000000..b9ae1b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/num_rows.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56e273a98238dbc38f645cd8ff134d29071b1681f63b15e1a42bc6a2a9424094 +size 1159 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/size.hpp new file mode 100644 index 0000000..43fcf59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1adda26e694ea765691788fc1943306d7a7b2c97a2cf2ce4fcae4ca1fc0d28b +size 10115 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_blocked.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_blocked.hpp new file mode 100644 index 0000000..7db8811 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_blocked.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e203bf160370f021e4d8a6578b56e0e4508e7b9385ebedbd39034a6b94aac78 +size 13813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_sparse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_sparse.hpp new file mode 100644 index 0000000..e005b77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operation_sparse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9c2536879ead82a4191b75de8767455e997af42596c749f0843ca2aa5255db78 +size 8146 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operations.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operations.hpp new file mode 100644 index 0000000..3029bbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/operations.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53c5cf5a9598ab9fd366c0ec9e396b37ed447bbe75aaca866bc7478f073ecfde +size 739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage.hpp new file mode 100644 index 0000000..06c902d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29ab5fe9d5555b0de700d0b6491f9d44f528ad4c1034def1afe67f735288cf75 +size 66511 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage_sparse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage_sparse.hpp new file mode 100644 index 0000000..5789592 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/storage_sparse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e47802f4cdb31ece87d3f80667eac003788fcf0b47dcc675746354a4233fca75 +size 19863 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/symmetric.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/symmetric.hpp new file mode 100644 index 0000000..0a571d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/symmetric.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f0dcd06a477946306cf64137b23f003cb9ca24abd3aa3c4d2232a30c4eeadc2 +size 88183 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/tags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/tags.hpp new file mode 100644 index 0000000..4a950af --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/tags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e55b7be0e07fbab584edb49fb0ab619b249a0ee400836a41f61d0ac8bfb84ee +size 731 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits.hpp new file mode 100644 index 0000000..840ac2f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03f115a0c157065230b2aecf92c7f338830f9057d680585d67bee42eb0e086aa +size 25310 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/c_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/c_array.hpp new file mode 100644 index 0000000..256101d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/c_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ab3e5a9fed5b86efffa1e0aef709bb223c16bbdd5ab66612effced70681ef5 +size 2838 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/const_iterator_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/const_iterator_type.hpp new file mode 100644 index 0000000..a6ce929 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/const_iterator_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c17375fb4fd5216abc092f10aa5f57252e65a39d4712c3c91823ce65541abce1 +size 4269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/iterator_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/iterator_type.hpp new file mode 100644 index 0000000..8d7e780 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/traits/iterator_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4df29c4e530b6e26fe3676ce3976a2226d44c4a4bbdd25b147aec744f0bc1302 +size 4046 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/triangular.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/triangular.hpp new file mode 100644 index 0000000..b3584d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/triangular.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb7e492618ea19f1d3dabe4e3f466115ff68bbf2285d8b4e04bbc62b362aab6b +size 105304 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector.hpp new file mode 100644 index 0000000..2a52d50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dba2891d0355fade2bd6f8a2f97b5ae47f043836fd7758a14e152b8859f5f243 +size 106031 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_expression.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_expression.hpp new file mode 100644 index 0000000..cae4aac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_expression.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21737a4527f1d1ba5893b28442fb0d72e3459eddbaaa292b7d4d4a2357c5da16 +size 65227 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_of_vector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_of_vector.hpp new file mode 100644 index 0000000..8b2eef4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_of_vector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5be82ca485b8df942a956cefe8e18b4be5c963eceb72e587a6424cd7c1324fd7 +size 53270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_proxy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_proxy.hpp new file mode 100644 index 0000000..2c4e216 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_proxy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a7e8e1926df94f5f6bd10814080da91a14f2e73f49ce7dfc7e290072c5b0806 +size 64597 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_sparse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_sparse.hpp new file mode 100644 index 0000000..8f673ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/numeric/ublas/vector_sparse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99fc805923b004f76f37dd51c8deb84d668de4398e230d58bf7f287c4583e972 +size 83145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/operators.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/operators.hpp new file mode 100644 index 0000000..7302129 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/operators.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5f0a4b70be8e3a3da035586d1bfb938345764e94e02317337a6974841b72195 +size 35718 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef.h new file mode 100644 index 0000000..3387afe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:edd5ae86c93dac1feb35fd0527e4350658be43e55f6ea85e93576c63bbb48aa6 +size 635 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture.h new file mode 100644 index 0000000..2913b4f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d01bb1f7420a818367d5bd051d9d9eb8a92b82f797d8c454e89fc9b14ef2c114 +size 1213 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/alpha.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/alpha.h new file mode 100644 index 0000000..09de930 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/alpha.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7902e87c43695f79fe5a20b197e1ee93d7749a1612470e0deffcdcb28aad3653 +size 1618 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/arm.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/arm.h new file mode 100644 index 0000000..6f2623d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/arm.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19b0d6587afa4cc26ead5e69a30eb2de3dd4c2b5dd107d1ced6b371140bb6854 +size 2467 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/blackfin.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/blackfin.h new file mode 100644 index 0000000..c167a7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/blackfin.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:612444bc559a89571757271c97a46b4c20a76875be58ae6ac876e6fb656c4502 +size 1138 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/convex.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/convex.h new file mode 100644 index 0000000..a346f26 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/convex.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6833251fcfcfc85b3aecabe5a0a08a76f0a34432b9fd3981d734fe583967623 +size 1861 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ia64.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ia64.h new file mode 100644 index 0000000..1196a59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ia64.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d1742d09649ea9a362666d7178b234e497cc87837385f63f0b31cac6950bb55 +size 1271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/m68k.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/m68k.h new file mode 100644 index 0000000..1df6bd7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/m68k.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:026edc8edc6cb55949248933b78c379483d9263bece81737c1944512bd9e2081 +size 2576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/mips.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/mips.h new file mode 100644 index 0000000..0cc9a45 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/mips.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99870612c7f9a859a9cb5a09c6438d373035fbafcc8bec101b58e57324410ed8 +size 2194 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/parisc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/parisc.h new file mode 100644 index 0000000..24106bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/parisc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69b333ff8e62e352be75c7a3a954e86ea4c4bac7b3810a5b81825312b7b3c5ef +size 1890 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ppc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ppc.h new file mode 100644 index 0000000..845826e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ppc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cd3056588668f47bb6e7928f5d4886c860f97b2af7978328682f0624fd2637e +size 2145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ptx.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ptx.h new file mode 100644 index 0000000..e3a784b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/ptx.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1bbaf57dde57a7acd662a15d5e344e5ed6c43d6d08896618c3730ceb0a131394 +size 987 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/pyramid.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/pyramid.h new file mode 100644 index 0000000..f2a0e70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/pyramid.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9469bb33e20e44e808ecad51f255edfa2e401ef1e0f01ac28114a52d4f308929 +size 928 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/rs6k.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/rs6k.h new file mode 100644 index 0000000..53189f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/rs6k.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b2c368032915a0c13131c834b801c4be77e606a9c728a3779a3a165eb4cd592 +size 1380 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sparc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sparc.h new file mode 100644 index 0000000..177835c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sparc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f829856cca13e3043b57ab83ced5cf48df2b14610e2b3dd4d88e06c8ab1f33f2 +size 1360 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/superh.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/superh.h new file mode 100644 index 0000000..660326a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/superh.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb8cbc49168e3f26bd4647bd8046285c35bac9316c4463536fb32ed1e2e8237e +size 1793 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys370.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys370.h new file mode 100644 index 0000000..1813c02 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys370.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ed1cbaef9c42a086e3e174decb10dfd90dfc30b2fc404e5249540072103530c +size 1033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys390.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys390.h new file mode 100644 index 0000000..b23bce0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/sys390.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfb8ec651c239b38bb1c15b9d917b4d0e9e028a5ee0ddebe6e3ddc8f8dd0e166 +size 1031 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86.h new file mode 100644 index 0000000..789d934 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ee0b28d38b4655771a0ff113a770281994f79f35f131d29e9fe0db3a001854 +size 960 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/32.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/32.h new file mode 100644 index 0000000..c3e1b9d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/32.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4729b22f5c4a5c41b5c9d65388d71cd74c79273e6dd6a356096d3160476d765b +size 2694 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/64.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/64.h new file mode 100644 index 0000000..1545d96 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/x86/64.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:156bde7bc247d1325135f7883a53c4882555acadddc317fd495cef5b9d5ed8b5 +size 1271 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/z.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/z.h new file mode 100644 index 0000000..be019fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/architecture/z.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e06f02b6ee36be68a0e1d68e31e1e437bd6398785f5eac26e7f49c5b079fcd3 +size 935 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler.h new file mode 100644 index 0000000..66d1a65 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:920fa053ed5d7937c6e82f7c208791540203ea11856ba38b5a6fdf7636e559a3 +size 1608 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/borland.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/borland.h new file mode 100644 index 0000000..afbbd59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/borland.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ac2c8185a38a39212e678b58d93c07d2e3e7cf3e98bacbf10daf2f7c619f2f9 +size 1853 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/clang.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/clang.h new file mode 100644 index 0000000..5a90bc9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/clang.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e72e4d975969548a82795fe909c516b88fbfda9f2f12cb0696d9012d5c61f216 +size 1532 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/comeau.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/comeau.h new file mode 100644 index 0000000..10a4e2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/comeau.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:572b9c80e406f6dd78dac2d1cd1ddcbde201c173290f52a714317edbabe45526 +size 1674 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/compaq.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/compaq.h new file mode 100644 index 0000000..3afe4d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/compaq.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50dae8a9d6f51cf42a96e1a85a4f6a4c45d75091fe0f595ed4cb64a48aec2611 +size 1911 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/diab.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/diab.h new file mode 100644 index 0000000..0d3090d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/diab.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5472208e050d66596e1bf96f14d8792906ce6f080a1ce74ebe863713bcb405a +size 1489 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/digitalmars.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/digitalmars.h new file mode 100644 index 0000000..6a8962e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/digitalmars.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad003d0ac3eadc9388d0905151233068cd8831137c1585d9e0b00d0bf360cc89 +size 1437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/dignus.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/dignus.h new file mode 100644 index 0000000..3384d0a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/dignus.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2761ec7cd1ad145c59dfba1a0ebacd6e6db927452aec6880c73095db301706e3 +size 1455 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/edg.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/edg.h new file mode 100644 index 0000000..b67ada9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/edg.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e04c9a1a4f88472110512c86f175873197653f98820aedf71d0239f766a6557 +size 1452 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ekopath.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ekopath.h new file mode 100644 index 0000000..e2f8296 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ekopath.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32977c70faba88d87b4b04b6e655270f3503b6400cdd14794869c422c253d2af +size 1534 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc.h new file mode 100644 index 0000000..b64929f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:736439a8472dccc8d7a79e100b18d814d5215f49317ac7a6304c13d8f9913994 +size 1959 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc_xml.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc_xml.h new file mode 100644 index 0000000..4287938 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/gcc_xml.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f827cd9632a96d3b95d0f2fbccf9311cf495bbb347dd4c0dcc86e86222d417a +size 1371 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/greenhills.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/greenhills.h new file mode 100644 index 0000000..17a20ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/greenhills.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e34c39f841cb5b6fd5d6a216109ba6f4f487be4207ed480d3a97fba73a5b84ae +size 1920 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/hp_acc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/hp_acc.h new file mode 100644 index 0000000..efab41c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/hp_acc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8a9ff8e0317ab05f29c4094536ad8a8174e8ad6d024cf08a7e99eb04ea2209 +size 1614 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/iar.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/iar.h new file mode 100644 index 0000000..7301d67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/iar.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1dcb8df1c3d15ce81150c281e286cf83fef9f9a58ec37d9d3d6e10db65085bb4 +size 1395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ibm.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ibm.h new file mode 100644 index 0000000..2394898 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/ibm.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9888d40214fde76a1a46226d4d74b429849fc9d1aa538c021df1ea0bd99f8116 +size 2157 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/intel.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/intel.h new file mode 100644 index 0000000..38ad36e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/intel.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:232daf26fd8e5cf3357d0b13fb783c5e5514df2131ddb42a159dd3cc4f3f3615 +size 2671 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/kai.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/kai.h new file mode 100644 index 0000000..b3f891c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/kai.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d061bc1ce360d18cf6aea6fcc14a3d030a1b333bd71a45720af7cf5baac75bf +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/llvm.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/llvm.h new file mode 100644 index 0000000..9c999b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/llvm.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fecad0d852c77621ed8f0c9f62b6cc7ec3569f6b99042ac11361a576e6dbd168 +size 1448 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metaware.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metaware.h new file mode 100644 index 0000000..86ba8ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metaware.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07c6a2041a88b36c576b33a79b294f63198a033907132be61f6390e9b8b8e723 +size 1353 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metrowerks.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metrowerks.h new file mode 100644 index 0000000..e20b2e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/metrowerks.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:520c6f1728bc87906e216ec1b366467e4c6abf695348d55ee092a618f4cdf896 +size 2572 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/microtec.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/microtec.h new file mode 100644 index 0000000..37e88ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/microtec.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4d97a5a09f5a24b413a7848357ba8d3ff3bb2437a20890e8256508e7fccb976 +size 1336 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/mpw.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/mpw.h new file mode 100644 index 0000000..65cd364 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/mpw.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7aa16fe06f0757170d7c69f1082c3852d442fb0f05269e44d69c45f9ba896e0 +size 1747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/nvcc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/nvcc.h new file mode 100644 index 0000000..5294f79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/nvcc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea6f9b9f9ea286a98c0eca3fe13ff1b279230782bc435563e675acbfc4bdd2ad +size 2749 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/palm.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/palm.h new file mode 100644 index 0000000..0cd54a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/palm.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e28e96e7a18d0c22e4a70e472a1903ead9fae5c8e46365ee86de7c1345a215a6 +size 1403 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/pgi.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/pgi.h new file mode 100644 index 0000000..1e74ce8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/pgi.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa0145fdd5e3ddf63ad03b1c6dc5b049d8a59b8dfb6d33f2655bd441b924d59d +size 1721 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sgi_mipspro.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sgi_mipspro.h new file mode 100644 index 0000000..19b0a72 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sgi_mipspro.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4072d4671571b47503786effcd19f39597f3df1ca9f96f3f9fab057dec30fd8 +size 1922 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sunpro.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sunpro.h new file mode 100644 index 0000000..11f9917 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/sunpro.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77ede256080d51e841dde55c6796ce0c9d79b10f8d427735eab874c731ef2e8e +size 2349 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/tendra.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/tendra.h new file mode 100644 index 0000000..61c1f43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/tendra.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68bc07a4400b1856295ee1b433c0d9f4cce53b71e2cbed36aba72c3facb1f71b +size 1401 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/visualc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/visualc.h new file mode 100644 index 0000000..a986a84 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/visualc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb308a565f5cc56e4272ea7583efe1bb724279eb323a2625ffcb968db76bba2a +size 3309 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/watcom.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/watcom.h new file mode 100644 index 0000000..fef36c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/compiler/watcom.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b96ea94dde9b8791a3b8a5948adb2941a809fee86492e7225d974819b2eef81 +size 1475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_cassert.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_cassert.h new file mode 100644 index 0000000..6bfa980 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_cassert.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:688d791806004c3f334cb94fcdb604811da4647b18eb50159cd0394274b567c2 +size 350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_exception.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_exception.h new file mode 100644 index 0000000..760f714 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/_exception.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:061a222cb7dc702ddac9b7b7f36a0477ea82847c784b6c6c082fb4a336617532 +size 330 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/comp_detected.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/comp_detected.h new file mode 100644 index 0000000..c9ba689 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/comp_detected.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64b0bd865ce40ecdbbc079fbe70f3f507cdc885d3529e467d10878654bd01a38 +size 274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/endian_compat.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/endian_compat.h new file mode 100644 index 0000000..abf287e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/endian_compat.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93abbdf14dd518cad566a7c8cc475a37c703c2ec30fe52521af4218a8a1733fa +size 777 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/os_detected.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/os_detected.h new file mode 100644 index 0000000..ce57ed0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/os_detected.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b575705f932b165c9282867d283df29afc6f9e5d17b79f1250964e9d16f8bff +size 270 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/platform_detected.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/platform_detected.h new file mode 100644 index 0000000..0464607 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/platform_detected.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c173711895acaa0f30bc6952c4b2643b65f34d5f578c9b394b5195ff59d4779c +size 274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test.h new file mode 100644 index 0000000..beda065 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a4b5be3b09fc4e81da4734ca6a604ba3528d479874bc5f0f2d4c235fa003a97 +size 364 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test_def.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test_def.h new file mode 100644 index 0000000..51154c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/detail/test_def.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae781b0a4d5ab24af97e10c0f7cd78c12d187be7dbcf68a6b398c6f797cf5ebd +size 1970 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware.h new file mode 100644 index 0000000..29ac27c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2be7d681b896bc21c91cccb33819efea05b26552ade89debf201301c2736784f +size 420 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd.h new file mode 100644 index 0000000..7c1fb82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d60bd522964a003416345d6fa70bedb12cec6a2e87e8ad7c67d1d8d2b29e9065 +size 3538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm.h new file mode 100644 index 0000000..86168cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:824e1ae030db998b529773cd9411928288b7b74a27af34b58c96ba19579f93ff +size 1652 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm/versions.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm/versions.h new file mode 100644 index 0000000..a017a69 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/arm/versions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6958dc50a272b4dd0fd20247769185d53195a3a572cae31c2d1f7723388df758 +size 804 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc.h new file mode 100644 index 0000000..20c7163 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cec6723beb314a8b0397e543c59173c4edbd6958162553d6473dfb081ab5d73 +size 1864 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc/versions.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc/versions.h new file mode 100644 index 0000000..6410559 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/ppc/versions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1477e4ffbf7eb360e2495d052d9d9db13b758398ce76b67f5f5360cf5b70dc1b +size 1217 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86.h new file mode 100644 index 0000000..2b22491 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7214aaaceb3ae99312a447e29f1c729edf0f55ae0368b14ffa6935d07306c96a +size 3805 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86/versions.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86/versions.h new file mode 100644 index 0000000..e465ca9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86/versions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce1eb47ea5d5f3e51ba400a1b2fc8276f464d07363112b9339562013d0a0d721 +size 3246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd.h new file mode 100644 index 0000000..47a09b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:051048c86c31919b6e5f2f8e279e1103408675c3d6b379d9bb289783a4c8be7d +size 2677 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd/versions.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd/versions.h new file mode 100644 index 0000000..bd01a6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/hardware/simd/x86_amd/versions.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8210c425892159fbd06e023df9688f0a15ae42020ce3c3d6adae4baff6a802a3 +size 1327 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language.h new file mode 100644 index 0000000..e9a7b86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92666722eaeba0b7657fffa8f86255d08c9f0582a1204fd794cfca83ffc365ee +size 515 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/cuda.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/cuda.h new file mode 100644 index 0000000..cb2f41f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/cuda.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb8df22e08628565f4199aa6835a2fc14592f2b3704b65a604d4badfa8f61798 +size 1224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/objc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/objc.h new file mode 100644 index 0000000..771ae40 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/objc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fb4528b7252d88acf177cddc3e13e500bce647705f019b1585afe76883cf1de +size 935 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdc.h new file mode 100644 index 0000000..5fc763c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:055f774283f22953c14a13abe0d1d11a04e01efd56cc16bec9982f9c851eca45 +size 1329 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdcpp.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdcpp.h new file mode 100644 index 0000000..d4602ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/language/stdcpp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a69cfa7148e90a6c5535e51a8ed711bb423baaf738dc678c823cd579c9716ce1 +size 3164 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library.h new file mode 100644 index 0000000..0d224b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f9b4f8cddb65235a59dc3803509e38a9c6e1f494baadac7dd5b5f782ea1b716 +size 424 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c.h new file mode 100644 index 0000000..1a51f87 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bd3710a1477118a3694ce4a204d0e0fb4ed160ba2fbd3be275ef0ede5481e9c +size 605 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/_prefix.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/_prefix.h new file mode 100644 index 0000000..e0f628f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/_prefix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6cfe353310a9f9db1ae4f55018358ceeb0c6b013c5cfe7b68c639d43dd910709 +size 319 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/cloudabi.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/cloudabi.h new file mode 100644 index 0000000..ba5c534 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/cloudabi.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3db76b5c3fcc87e5abd26c7f937f2c79cf9e82b683723dc527c3444dc6d85c49 +size 1291 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/gnu.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/gnu.h new file mode 100644 index 0000000..3e0687e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/gnu.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:caad7121b0552c74ff1fdd80837e7d0d2096e45498a75dfd777dcb869883e7c4 +size 1491 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/uc.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/uc.h new file mode 100644 index 0000000..703c323 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/uc.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06c82b6697ed9bf3814cc2708147474f783be22853bfd074853a59d462b97bfa +size 1102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/vms.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/vms.h new file mode 100644 index 0000000..73aee1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/vms.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05c0c8b07c74c4f036fc5a0f5e212a754fc313b9d6d07ce560e0662f1f0d8792 +size 1034 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/zos.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/zos.h new file mode 100644 index 0000000..d972a2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/c/zos.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1a0ecfd85a93e801c2a6f02cd06b12309c5d6397bed68d4ddf42a073fa922a2 +size 1388 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std.h new file mode 100644 index 0000000..4af447f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1829c6d4169e0d0286ccb83d370b4519685e87d392fcb515352a409bcb29043 +size 858 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/_prefix.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/_prefix.h new file mode 100644 index 0000000..8d8991b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/_prefix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5b8484ce654f546ace537aee3251da9da87a9c37919e21aeee31369efa8e78c +size 825 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/cxx.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/cxx.h new file mode 100644 index 0000000..6a59b20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/cxx.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b086e860bbef79d3fa99182940d6b7f6c2a555d521923cd7bc2103770e2ccc +size 1050 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/dinkumware.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/dinkumware.h new file mode 100644 index 0000000..bf04060 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/dinkumware.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a542818d32894900c9afaac8ec55f2ccae9e81b82dc9accf880516d65e57cfc +size 1412 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/libcomo.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/libcomo.h new file mode 100644 index 0000000..641290b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/libcomo.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a26d487893ff0c7a0389a39c7c7f51cd68945da59888331df7e6331fb72a6e43 +size 1137 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/modena.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/modena.h new file mode 100644 index 0000000..728d6a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/modena.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90889b71e4bc5562faf7233ef516b1e821b2be28bc2a4b51430afbae5175efee +size 1132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/msl.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/msl.h new file mode 100644 index 0000000..661a702 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/msl.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8d19ba528b09aa6617ff843df367b2e54805c27a080a12ef509d859810c4add +size 1303 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/roguewave.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/roguewave.h new file mode 100644 index 0000000..6ba51c0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/roguewave.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e618f51e321a267d6079205693fb1933dba55f2a9931e21b00f8bf7e0a64f8ec +size 1438 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/sgi.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/sgi.h new file mode 100644 index 0000000..e7685ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/sgi.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2be6719d25b5eca68d2367d22708e722366e2ff866122630049373572084885 +size 1203 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stdcpp3.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stdcpp3.h new file mode 100644 index 0000000..312e26a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stdcpp3.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d23ddfebac9ebbac0c498cd5e1531674852efb6b9f83bd5ba76081027a409fc4 +size 1338 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stlport.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stlport.h new file mode 100644 index 0000000..b0b2b67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/stlport.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8c0ccb3aa3b11815cd748c27656d349ae726705adb85e0b09782dc7e2f6887f +size 1759 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/vacpp.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/vacpp.h new file mode 100644 index 0000000..1cc415b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/library/std/vacpp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d08fc91d7ca55900469853bf4a15d120081e161c9f7600b5659e526cee7474a +size 1023 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/make.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/make.h new file mode 100644 index 0000000..11ce690 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/make.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b8ea947d7c0d2e3ac23a30e7b21a597cdfc3d67795c7b276a1d2e8de20a3aaf +size 5105 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os.h new file mode 100644 index 0000000..7398629 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e42157ef2328bf9247d6bf3eb8198b7f9224c70246c27fa983cb5d66f8f03e4c +size 990 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/aix.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/aix.h new file mode 100644 index 0000000..ee1ec72 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/aix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8b1bd1eb4f2b40c038f6c7b3b81928576a266be5707338ad7f245250455dd6e0 +size 1729 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/amigaos.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/amigaos.h new file mode 100644 index 0000000..7ae4520 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/amigaos.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc731177fc4c137899ac75e95b7456534cf1116058d9c8a200ad5d2a394a14df +size 1106 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/android.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/android.h new file mode 100644 index 0000000..9ff0b4a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/android.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75313ece35b37cee46ca628fa2a81e435d545b59510beeedc5c18c8edc27f338 +size 1067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/beos.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/beos.h new file mode 100644 index 0000000..9afa029 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/beos.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70ddfa8e8900bb4ce7665f5390602198a139a86ef04590eaa9b6b5a9620eff27 +size 1001 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd.h new file mode 100644 index 0000000..216214d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0347e98a9333a2fbcab83d5ae26198e05b496a6e214e5a2ceaa24bae6e681823 +size 3097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/bsdi.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/bsdi.h new file mode 100644 index 0000000..f9061cc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/bsdi.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c3dcea3dd2f3209fa5e8cf33080a5b1ae23e0894fe66b97864e250c2a3ab721 +size 1163 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/dragonfly.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/dragonfly.h new file mode 100644 index 0000000..634f24f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/dragonfly.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6b0f03d3773ee2e14b01706a2ea5717af0a0be94601f2197a164b1959d893a +size 1283 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/free.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/free.h new file mode 100644 index 0000000..c11a459 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/free.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f235c571637fb092c62d50b463d628660c527773b8ecf50d34e1d4d43898293b +size 1807 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/net.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/net.h new file mode 100644 index 0000000..4baed3a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/net.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f20e8d25886da1b93a08422558e4e40c01bc2318a25fc4fe6110b75389dfe63 +size 2523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/open.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/open.h new file mode 100644 index 0000000..369f6a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/bsd/open.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe9fe946ac6941aedf640ceb4aec388a35107f82d78de82357d44bc91b4b1a06 +size 9112 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/cygwin.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/cygwin.h new file mode 100644 index 0000000..efe89ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/cygwin.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:449617e5f141f42ca9c006bc70f854d994fd763b68262bdc615d6c889c4ad07d +size 1215 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/haiku.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/haiku.h new file mode 100644 index 0000000..964c853 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/haiku.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12a110643f309d622b5e8d3f5acbf8d74ef45baed0c63a7c8d3c99b3e4c541fc +size 1068 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/hpux.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/hpux.h new file mode 100644 index 0000000..44ba2ee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/hpux.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9042d928c1ce8b976c91edce55b8392e88df08fbdeb3cf7404d123248ad8d6ed +size 1112 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/ios.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/ios.h new file mode 100644 index 0000000..9588fee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/ios.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fc6d7ac8e7de6dfba128576112944992585decfe642b7ea58f0caa0f22cbf12 +size 1354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/irix.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/irix.h new file mode 100644 index 0000000..13100f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/irix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:810361cf184818e2da9525cc6e22b5523e5efea70d73420c438829f4ea3ac331 +size 1048 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/linux.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/linux.h new file mode 100644 index 0000000..00dd57c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/linux.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0b29d567f566ab8e6e2d4322762a2adb814eb40291a4579b9f55e760f2bdcc7 +size 1070 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/macos.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/macos.h new file mode 100644 index 0000000..6ca1133 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/macos.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36e623b26fd1dfc902f8f738e281b2652ba6193cc31721f3d5d3f0cc1f6019b9 +size 1813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/os400.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/os400.h new file mode 100644 index 0000000..4827363 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/os400.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc31820d250a50ea22d70f89653c103e02e5ab80fb0bbefed3a6f711f3893326 +size 1027 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/qnxnto.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/qnxnto.h new file mode 100644 index 0000000..aad648a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/qnxnto.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1419926cf0b3ca0150b08968d69ee513b64cdb5ccb347e6841297c0c1e2f05ff +size 1507 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/solaris.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/solaris.h new file mode 100644 index 0000000..1e78493 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/solaris.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e80389492a4c73cb4e7b423e9fe49ae2402f57f3428981e667ab6b2e74d82ce6 +size 1112 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/unix.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/unix.h new file mode 100644 index 0000000..64cb15c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/unix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20d0d60cd547d6427fde9dfb5c32a8a8b465aad1bfb8c0bad05e4242e74dac17 +size 1877 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/vms.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/vms.h new file mode 100644 index 0000000..e5a80a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/vms.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa671764e348542cff2d3d67b4502d9b1859702b8e9a6adbda5a2d4ac59c5344 +size 1183 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/windows.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/windows.h new file mode 100644 index 0000000..aec3051 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/os/windows.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38198445bfc5f39adf88bf8f09c0d417b5b63c4cc838d1c15a2318cccb582959 +size 1352 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other.h new file mode 100644 index 0000000..9c5096e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c24d37e3c974d15745070a3ac5854360614087be8ea187711bc58d060abe13e7 +size 420 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/endian.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/endian.h new file mode 100644 index 0000000..5255ae9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/endian.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:498014fb704ae0c8d9bb83e15e014b50d21d6ecf61dbfc0c8eae1a63993330d6 +size 7361 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/workaround.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/workaround.h new file mode 100644 index 0000000..108f172 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/other/workaround.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:20c9beafc4a7faa01b72544de6c5092027e432cc29cca1046dfc8e819fa656c4 +size 2813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform.h new file mode 100644 index 0000000..f672b80 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74696b064252382e97e8fe0a6892f24e1d41f71fb31606665967be14259a3577 +size 1005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/cloudabi.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/cloudabi.h new file mode 100644 index 0000000..886d902 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/cloudabi.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d2ae912d5288c0b03983e4562fb60725eec8022be47387b01bfc04e356779b9 +size 1033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/ios.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/ios.h new file mode 100644 index 0000000..4893cef --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/ios.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79c4517b71ed8c01400c4f62ffeac824a86e43f248db890bbd76f731e058f6c6 +size 1774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw.h new file mode 100644 index 0000000..eca0ca4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f56db4d0080d3605a31198edf8f9070314a6f634f51fa50879a3e7f537f0bc4f +size 2241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw32.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw32.h new file mode 100644 index 0000000..28cb589 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw32.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b37efb942aedfd2c3f771726ddf35aaf45bc10ce0bef9a6b1a6e9a66dec94e8 +size 1846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw64.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw64.h new file mode 100644 index 0000000..01e188b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/mingw64.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74bf44af9fe7c2264010dfcdea0d2cf24b5dbab6ac2abf495618b84e9fd820bb +size 1855 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_desktop.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_desktop.h new file mode 100644 index 0000000..2164a42 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_desktop.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fbbbc91c25fcd42dbbd374cf247f4085f483ec5cd65ddcdb68eaa9244b59beb +size 1576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_phone.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_phone.h new file mode 100644 index 0000000..31afad2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_phone.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:216c8967ba941742909f76881c574070cb2dd6854615ac9946ea2b65dde3ef81 +size 1386 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_runtime.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_runtime.h new file mode 100644 index 0000000..286f787 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_runtime.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c9d97b39786abb7142444cf4cbb045d95d0259d4b5d860277b2c1d10f6f9e01 +size 1650 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_server.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_server.h new file mode 100644 index 0000000..76075b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_server.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e79ce5f201c5eb664a9c68c8590c5fcbbc718828500a65808972b4805efbe178 +size 1356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_store.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_store.h new file mode 100644 index 0000000..5dea3a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_store.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01aa67abf07a8324216945b896c7e38f26c4272f1f35065343d758dbb3d0dcd3 +size 1538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_system.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_system.h new file mode 100644 index 0000000..ce915a4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_system.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:122c7527178e9f948e633c94b2f258959b8a69c9b7d52a1acf7e73966ef68be1 +size 1367 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_uwp.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_uwp.h new file mode 100644 index 0000000..324c3f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/platform/windows_uwp.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03b0a29b23a8ff1857482d42d18b5fb5daa6e893dec69040c5292b5859cf7307 +size 1844 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version.h new file mode 100644 index 0000000..ead7e67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f2fbf18d14dd458c5fb0348639781ed97d53a50c870aecc947485349ddcb6f52 +size 356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version_number.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version_number.h new file mode 100644 index 0000000..da88498 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/predef/version_number.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebd97181c1b0bdbc62394ed12d27da90ba68c0171cdbf709393aa8956117ae95 +size 2105 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor.hpp new file mode 100644 index 0000000..b9e792a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ee0051bcf0b63ea43b3522051ba668ba7f8b0214fc3823f820313cc3fe40b39 +size 487 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic.hpp new file mode 100644 index 0000000..45ed136 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5dbea1a295244fd9a01e6a579bd57dbd7b74646efc1270fc9fdc080b46faa23 +size 803 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/add.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/add.hpp new file mode 100644 index 0000000..64488e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/add.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:466664f4e4f2ed932b395693cddef7a8072c7a398ddbbc7fe72b70f9d797ffa0 +size 1858 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/dec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/dec.hpp new file mode 100644 index 0000000..de25202 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/dec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99211c529640ae5e97704ff3d4c3cc7973a75dcc9e3a9079cc9496ae35774230 +size 8323 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/detail/div_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/detail/div_base.hpp new file mode 100644 index 0000000..7882581 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/detail/div_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a628f938376712498624c3b6e8ea290274e927e49ddf89ddbdc7c7d8fc25012a +size 2568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/div.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/div.hpp new file mode 100644 index 0000000..0218bf3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/div.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0cf354485570c4cd22e78815ccb3bf01a7efc5c5f863b07fb0a02662ba37d87 +size 1274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/inc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/inc.hpp new file mode 100644 index 0000000..014ca32 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/inc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f46fafb970e6a2c535ff4179e13b234e1f05b78eefc695d4a4357aeb4f31c3c +size 8297 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mod.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mod.hpp new file mode 100644 index 0000000..7483da0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mod.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b01b56af18bb08be0ea391af719335a0c3e05cc3ed2479a83790073277445fc3 +size 1274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mul.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mul.hpp new file mode 100644 index 0000000..31f7ac9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/mul.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb869211ce96b1de503299012e17892bcfca24c3e9a2fec50538d7a23b11fa58 +size 2062 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/sub.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/sub.hpp new file mode 100644 index 0000000..9874ce4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/arithmetic/sub.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a64375e4072140c75d12f584010713a7da30998b61e582428f8ad3293bad2c0 +size 1808 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array.hpp new file mode 100644 index 0000000..fcdfb15 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d9d503d12f7d1f84fe6b4c042e5456bf78bd41f6ec75018d73dc9a4d47a4ae +size 1600 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/data.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/data.hpp new file mode 100644 index 0000000..ce1ba8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/data.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9ba29785e03097acd1e9cffa28546484067cdb2e6e7c87b9c979fac8441ba5c +size 1158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/detail/get_data.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/detail/get_data.hpp new file mode 100644 index 0000000..c735d06 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/detail/get_data.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8466784fdd63d5bbe43d9e9fed30678c379f70ea6bdf4a62fcb674bb94d14a7 +size 2164 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/elem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/elem.hpp new file mode 100644 index 0000000..5c8d51a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/elem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bb8e1483c8e071ad03f6a09d71cddf88534984bc8391023da929d1fae3b4805 +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/enum.hpp new file mode 100644 index 0000000..147ad96 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:545f6e3b25bdcb198a98ac94bff0dee1034b61251a69ea40e2a840ac99e0616b +size 1619 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/insert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/insert.hpp new file mode 100644 index 0000000..b103109 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/insert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4391db9d92f7ac85747aabc874cda10d4b3295bb34a1417db0da81e5bf923181 +size 3089 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_back.hpp new file mode 100644 index 0000000..c303db0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb9d17db98e0a088914177654d2810789c81429ea7eb5343e3a9b360f557477f +size 1732 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_front.hpp new file mode 100644 index 0000000..6347d29 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3912f5d2f45ca05044b8302fd82dd4f27cbd17c5b453e72fb3b9f93f9a089f90 +size 1811 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_back.hpp new file mode 100644 index 0000000..d87d968 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8d482791fc6dfc1f3ca0320889672a122810aa5550d78552a32f2d881f70ec2 +size 1729 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_front.hpp new file mode 100644 index 0000000..3ed4a19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8920c38f100ec06fa42c176b4cc50052855edda96ea585a5f33123d3e5b7307f +size 1739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/remove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/remove.hpp new file mode 100644 index 0000000..22b806e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/remove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b558e2422794f51e74c68ff693abffcc5286e169505c1e6fb5c15e6e95cb074 +size 2906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/replace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/replace.hpp new file mode 100644 index 0000000..7b077e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/replace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f62774db909ff95b066184afc55644606209f70ead278cb44e3b6d36714b677 +size 2725 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/reverse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/reverse.hpp new file mode 100644 index 0000000..b8147d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/reverse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9e08ca3cbe5bff53a773603cf45b4acbf310598edf011b1f4f2dc1b5e20eae7 +size 1378 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/size.hpp new file mode 100644 index 0000000..25d70a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27d20a936e02ccbc683835309cbf0ac91ad0ce1b28b309f3dffda497fff2296b +size 1158 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_list.hpp new file mode 100644 index 0000000..2986b81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cb7df6124e57baaaedcc31dcec9377864169e9cdc4cfd5c8da40c8bc12d47c7 +size 2012 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_seq.hpp new file mode 100644 index 0000000..8321d86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94afbbcf5b39babc43cfd093439aabe06d47c05904218f57740c921d1a0eadb7 +size 1977 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_tuple.hpp new file mode 100644 index 0000000..daf37c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/array/to_tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b18b071a7e81949e5374adb7dca43fd02e14ac8977832bd00595144d7501b38 +size 1298 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/assert_msg.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/assert_msg.hpp new file mode 100644 index 0000000..a650a53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/assert_msg.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:686f2ca3f061858bf7bd7b9f5cb27d0d1d0817cf4f387bf7978f252d9d20114f +size 748 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/cat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/cat.hpp new file mode 100644 index 0000000..2970ceb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/cat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f232dca396d537f103fd26b7fc4e2026aeb43cb476d069688be697c11a084bf +size 1018 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma.hpp new file mode 100644 index 0000000..0a41e9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93aaaeeddf6ce0f0d02753a6e64bfe299ac9fd77e62c72da15e705f995c69c80 +size 743 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma_if.hpp new file mode 100644 index 0000000..6a299a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comma_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6183a66ed499fc42fa63c51b6d8e80fb38ed7ec988ae2663826beedf4a497ba +size 752 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison.hpp new file mode 100644 index 0000000..03b99d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b0b4a9607138908fb6712a220d35d0955aab7bebedbafdecbb80bf44900264b +size 783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/equal.hpp new file mode 100644 index 0000000..7292044 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69a6f3ebb82ffbe0301adfcd0dbed6c0bbc11ec60d8ac6306f08e0ddca34c28a +size 1006 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater.hpp new file mode 100644 index 0000000..9cc9be0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ff62c33d4d942759d7e855c7943d4a4d85c61ad477dab94c977f028bbe6c5f +size 1141 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater_equal.hpp new file mode 100644 index 0000000..298e905 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90392fc12b2b76204683009bb24fc507a01e511b139a79330af05d6be343dc95 +size 1243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less.hpp new file mode 100644 index 0000000..b9755f8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eacf1018f2575270fcc50057fe83010b393f7b86affb1c325877718038463870 +size 1965 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less_equal.hpp new file mode 100644 index 0000000..f7e20d0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed0bc13771e84e7f12fc80e757bfe6c5c51d8500a6199dee7237b7f3f930b76c +size 1275 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/not_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/not_equal.hpp new file mode 100644 index 0000000..1eac00f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/comparison/not_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea09178b11926800cd3b44641525d3edc7c97dd3c0607edcdc95485a6fc0682c +size 64923 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/config.hpp new file mode 100644 index 0000000..65dfa43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb34c61f7960e7182795647372c64105807e11651b5041f9a7989d1056106671 +size 5498 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/limits.hpp new file mode 100644 index 0000000..cd2f6a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/config/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d06a6ecec66cc9c6e221f4fbb2b96ebe0f7ef01268340d20918856140e4c9e6 +size 878 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control.hpp new file mode 100644 index 0000000..acb26d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59395810900373fe3b5cbe2292f739ffef4562f13c564d2f3e332bab1d6b80b6 +size 991 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/deduce_d.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/deduce_d.hpp new file mode 100644 index 0000000..a627c77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/deduce_d.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f661a968fb5ebbb7eba07e79153d53650d4ae4264913e3ee385816e4d1e59741 +size 912 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/dmc/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/dmc/while.hpp new file mode 100644 index 0000000..b05bd57 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/dmc/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24a80ca0fd807fe1f9557e0046498620e221978a09f4b6dbae1b3b4c4e023fad +size 65769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/edg/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/edg/while.hpp new file mode 100644 index 0000000..beca2ae --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/edg/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e2d4c817647735e6ace2dc45285c9d82ce933fb6b49661d77c98715b10772b9 +size 48574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/msvc/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/msvc/while.hpp new file mode 100644 index 0000000..2e9dcf0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/msvc/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b77146b65e9e925cef8699476b8344a06ba8a0b0fbc37369be1e7d60141184e +size 31126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/while.hpp new file mode 100644 index 0000000..714a04b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/detail/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52d897346181168e7a3107714b179afd6e7bb87d15e070d6bc9d6bba82d4e4da +size 67561 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_if.hpp new file mode 100644 index 0000000..928ab58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea4eb6d2414c35ad7c75fa9ca548a3f74046a8e7de758de4cd1f16ebda13dac6 +size 956 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_iif.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_iif.hpp new file mode 100644 index 0000000..5b9558f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/expr_iif.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:225dd9118c65de2e473e4cdec0aef9acc4b474216e683b4609bb1072dce32a10 +size 1224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/if.hpp new file mode 100644 index 0000000..cfb08c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddb9af759ba3695b91dff747ce2fe18d768cdadf93ddd956884eff8333e4ee40 +size 906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/iif.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/iif.hpp new file mode 100644 index 0000000..a8a2321 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/iif.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccffe0f0bbc7ae9e4993a43d77fa0fd23b143d533148e462f1248e809208da04 +size 1325 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/while.hpp new file mode 100644 index 0000000..19d71a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/control/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ebaccd191ef97db46ccdabe8b791adc9e0bb6c42fa1161fa98353fd2e6653cc +size 17561 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug.hpp new file mode 100644 index 0000000..45bf19f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2237ec07b25f574966b3df10fdafd9ea05596af3654001450a26f92f691a7b11 +size 784 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/assert.hpp new file mode 100644 index 0000000..f6bf539 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d20ac6553e3748779bbf22048f46b22b4c49e8fd446ba3f76960055a5801f80 +size 1374 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/error.hpp new file mode 100644 index 0000000..63a29cb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3cee86e4c00fb6e8572acf2efcf121f1b02dec3c89c4ab59d41f584920c79885 +size 1574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/line.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/line.hpp new file mode 100644 index 0000000..f95be9e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/debug/line.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29f36591e6e49e176e4954063cea56f64090c38246cf89f82804b8e4edb9ac91 +size 1686 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/dec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/dec.hpp new file mode 100644 index 0000000..c2f21f6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/dec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4ddff6960518d75d6d2b0d783604ffb1848bdd93943be6b5bf46cf4eb554d47 +size 736 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/auto_rec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/auto_rec.hpp new file mode 100644 index 0000000..4bf1b70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/auto_rec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32579802ad68f74fa08d059e2410633a164b83d0a51f50eab162cb6569ebb634 +size 26136 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/check.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/check.hpp new file mode 100644 index 0000000..5eb1a04 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/check.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f44f116a02d55b4e31df2dedb35a1e4e22ba1f62923882c29cf7d7f26497b78b +size 2183 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/dmc/auto_rec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/dmc/auto_rec.hpp new file mode 100644 index 0000000..1da525e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/dmc/auto_rec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ab6fc15b9fa80dca4899dd498d26ac99838711626ee38afb87e6fbc530e5bf +size 26466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_binary.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_binary.hpp new file mode 100644 index 0000000..260804b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_binary.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4461a173cb87b7b18002d0b5dc70a709452049b057fc7fb94fa8b941ee89c41a +size 1241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_nullary.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_nullary.hpp new file mode 100644 index 0000000..f735ec1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_nullary.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18cbabf0e597c46a8af0c8d9b5991aa72716a9a06b97b2541ad1108a5e31c051 +size 1248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_unary.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_unary.hpp new file mode 100644 index 0000000..e58610d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/is_unary.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3345eae7795dbc2d74254ce14f5eadffcc03bcb580c6e10fb1439a57174e5015 +size 1227 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/null.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/null.hpp new file mode 100644 index 0000000..68a1fd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/null.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33b66a32f2f8e9c713e4d2bd0343e75d1b2e38dbb2eb95bb475773af50d47f4a +size 721 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/split.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/split.hpp new file mode 100644 index 0000000..49b3928 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/detail/split.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc2e56aad1de3bb6ea0be589e0454fd1084c4d631f0de100d860c8225889ba41 +size 1529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/empty.hpp new file mode 100644 index 0000000..326d06d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25316276e18b8025ee1260681a106bb60fd2a0595fdbb784a6b9a1f34e32b98e +size 742 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum.hpp new file mode 100644 index 0000000..9835d01 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c5d39332ae802095cfc7adfb0d2ad8ad4ef0b014c411272b9b323b6fe7b64569 +size 739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params.hpp new file mode 100644 index 0000000..5e312e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7b5f2ebe844bb76c25d381be99c368cb4f9f1f355d9fbf8ef0074411c7f8db3 +size 760 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_a_default.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_a_default.hpp new file mode 100644 index 0000000..a325bed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_a_default.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76b35a1f9696e7f608255ba3e1a1ba0a99cb8caeec2b04ab2824c8a2b5a99951 +size 805 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_defaults.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_defaults.hpp new file mode 100644 index 0000000..139003a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_params_with_defaults.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:534a616fa8441b69dfe026b641b8ccac09b020c031a5866adaf52e816421c3e7 +size 802 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted.hpp new file mode 100644 index 0000000..99a69a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74d2ec26feb478240a1d9db100984afc4a7beb10246a5876a906fcb7ad59a2bd +size 763 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted_params.hpp new file mode 100644 index 0000000..ae21083 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/enum_shifted_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d33676cf28d10ecffe70db46e9e9af04c23884af5680b1d0feb13a26debec151 +size 784 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expand.hpp new file mode 100644 index 0000000..bbbbfdc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:476504473aa946bc632f28f3f607e5b3d84e459f93ea0c27f2322ab11c6a1497 +size 745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expr_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expr_if.hpp new file mode 100644 index 0000000..e26d247 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/expr_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74609a2431533535955c9f26e5da601260ba4f0f2880516e769459259fdc9860 +size 745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities.hpp new file mode 100644 index 0000000..476a659 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fcad5ff6f5bed0f2955e396ccbee8ee3f5ea83a1a5b94a2f0412150cf76563d +size 1204 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/apply.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/apply.hpp new file mode 100644 index 0000000..0a1fcdc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/apply.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf660c870290465795215bf7839e70dccb3350339da73f41aa7fe8111c0965ea +size 1475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/detail/is_empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/detail/is_empty.hpp new file mode 100644 index 0000000..587704a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/detail/is_empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25589de7caed4fbaad7e8f4cc4e4f3e4ef9734c48873876f68b7f164a70fbbde +size 1719 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/empty.hpp new file mode 100644 index 0000000..f71ad2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e086fd6efde0fabbf12715c72a80d9fa2916d14bed6a6e8631cc3a9efd7d648 +size 567 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/expand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/expand.hpp new file mode 100644 index 0000000..8539809 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/expand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c3dcec5afba1e28fd48da9066b828c386c0149c2a7cf5b27e38ea2c1040ec1e +size 842 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/identity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/identity.hpp new file mode 100644 index 0000000..87cc370 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/identity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d23be5440b75e32ef9da08bd4cacb7016917a42bd4c30f61fa3d061fa1f645eb +size 759 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/intercept.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/intercept.hpp new file mode 100644 index 0000000..5f504ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/intercept.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f445e920c201b8b3dc8c2f0ef1c99e103af47aece465d2ec0d23572ca9bd93e +size 8913 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_1.hpp new file mode 100644 index 0000000..e62119d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c481a0e24bedd5902ef9729c3b32dcecb214975c940fc22402f4ccb6e8eb5ecf +size 946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty.hpp new file mode 100644 index 0000000..fbe73d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd944855298a0d8621d910883ba0f55822aa6f0f04c9039d342f01fe7c526903 +size 2544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_or_1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_or_1.hpp new file mode 100644 index 0000000..4385ded --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_or_1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49c6ef2d518b22877eca0db4157f7c0890f25e6d35b30527dde330a4c661b31c +size 1205 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_variadic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_variadic.hpp new file mode 100644 index 0000000..fb9e79e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/is_empty_variadic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dad8983ff11affe13f203736552131e6ba1b75f5751fa16a1e9cec1b961017d +size 1780 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/overload.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/overload.hpp new file mode 100644 index 0000000..699398f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/facilities/overload.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:748c9c57121b5f80c1a93257f835fc2fc2d7127647ac2bd46714eeddb7a4dd47 +size 1150 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/for.hpp new file mode 100644 index 0000000..019a16c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e76e61bed538fd5049482c577e7377bfdc3d138d0522ad3a93b3bb25a9ab3b77 +size 736 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/identity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/identity.hpp new file mode 100644 index 0000000..84a91c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/identity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e60eb53975fba657c6f099c0ceb23670388040680ee2b8b3f41c2bc8b6eb002 +size 751 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/if.hpp new file mode 100644 index 0000000..8d5a7a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e50196c6f8d1aec7063595f1502306de213db7cfe19c3d2f31188bb5ebc77a0 +size 730 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/inc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/inc.hpp new file mode 100644 index 0000000..0b110e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/inc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfa9aea1844754bab45515c322a44d5dc8553f67db6358f01ba345dc9793bd18 +size 736 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iterate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iterate.hpp new file mode 100644 index 0000000..d5bdce1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iterate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c62ff19d47449b7519d2052aed158821cd126e9e620f46f6d74ebdd66106ba5 +size 747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration.hpp new file mode 100644 index 0000000..c22688a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:740388173b56a4724c6cd310ae3712817dacd2a37d3d5c2791f3b8227409616b +size 852 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp new file mode 100644 index 0000000..ac7a5e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f6807bc3dc5b396c5b7671cbfa8aba047d23de90992725ebe0b21dc2885f594 +size 4079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp new file mode 100644 index 0000000..6b17113 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:651fe64976862de8042a0eb6136ee6ac4e0b4d73e59e1857a4dda03d9af9dbaf +size 4079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp new file mode 100644 index 0000000..c138719 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8ad1731d8d7a28528a5dfc3ce5abd2b2724bc60716647f15c7726b576e4c321 +size 4079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp new file mode 100644 index 0000000..506aa5c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ea66c700426341dbe5660de8dfc5ef39f79435ea2ac5e336b36d0bdeeb36c58 +size 4079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp new file mode 100644 index 0000000..79bb6ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/lower5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8e1cdd298554a74102133d78b4ec356cce29457082f58af20bee564e54566d5 +size 4079 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp new file mode 100644 index 0000000..3115dbb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01ae3dc6c78a5d2df6af21294df0a4e95e2b665ef368d8d357ea1fc2bd28a554 +size 4131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp new file mode 100644 index 0000000..acce982 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe33cf6945ee59b890fd363012b79f987a4071effd9fc20214b26cad54e46deb +size 4131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp new file mode 100644 index 0000000..bc6dafc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dfdd2eb0568446fd14f27971f882726f62f463dbcecbcf94b99ec4af2de109a +size 4131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp new file mode 100644 index 0000000..5af2864 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce6b89a8f50ed4404bb5f5ab6cc83217044d6510a134d78f03a3b0ca0943aee0 +size 4131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp new file mode 100644 index 0000000..7062a27 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/bounds/upper5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c0615225c6dc06a324734fabe86cb18fbe3d5a4676d70dd8d948dd18123e6437 +size 4131 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/finish.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/finish.hpp new file mode 100644 index 0000000..dbce815 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/finish.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af1dc02e4a4d02b0d73bb1b7c3f8148b08f45a5c562156d918cb6d90aea3570d +size 3617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward1.hpp new file mode 100644 index 0000000..73ff59a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2ab95856c0b46cf525b2eef0b65692f3e7b9b02a2a53e73be20518450a3a90fd +size 54776 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward2.hpp new file mode 100644 index 0000000..ceb0cd2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26d1e9e8c809784b501cf4cc80685bd81ca5958148d0e0b21fbfbddd178af46d +size 54709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward3.hpp new file mode 100644 index 0000000..22d2756 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e62c4a1a42c8bd8642a35b030dbd9ff07a2d04c97ca44107f40db11fee2ff53e +size 54709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward4.hpp new file mode 100644 index 0000000..fe8f0e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:760c1d8b74d24ca47effcca9a36ee1011a6b753144ec25296ae2d83a6c19c5d4 +size 54709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward5.hpp new file mode 100644 index 0000000..73abb3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/forward5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46b92fccb4810f940c5cd0e70a7589474d42e949b96307b897a17f12acf632b0 +size 54709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp new file mode 100644 index 0000000..42565c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4538ff16a50f497761c444e7f4182c0f86e7bbfa5de5da5d8afedbc715b353b +size 48331 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp new file mode 100644 index 0000000..a28341e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d911d867dcbc8a00eaf7deb6e3064b35f104cdb5cc7cd6049db289f332b6ebf +size 48331 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp new file mode 100644 index 0000000..2a4b843 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48a7fde0bc7644e9601c10103135393aca558807550cef737a5d8e9b4c773331 +size 48331 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp new file mode 100644 index 0000000..4c94f13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bef16506b55ad28973c32a22f4f669052b8030e255794483b942f6c694d91f48 +size 48331 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp new file mode 100644 index 0000000..3bdb48f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/iter/reverse5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b8aceb8ac481f545ae187f6c1a14c9bab874db6fa54633618459ab20b26a481 +size 48331 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/local.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/local.hpp new file mode 100644 index 0000000..ac82723 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/local.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8edcc5b860aed762df5a833ecb1a592e7603fa19a1c1a56aadd7bff7afff587 +size 20769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/rlocal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/rlocal.hpp new file mode 100644 index 0000000..fb3d077 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/rlocal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11af18b2d0b852f3df90c01fc8865978e03f6ffa5622c1673493d8f42e87ee2a +size 17087 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/self.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/self.hpp new file mode 100644 index 0000000..681c418 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/self.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37af9536a486db33ee8e0822ef3fd01cf0d342b129a19fd90451137c27114094 +size 833 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/start.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/start.hpp new file mode 100644 index 0000000..de7c425 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/detail/start.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9693dc3998a90d39ad362bcfde9a8393e74ff4629e4f30f59f9b3681a7fd4555 +size 3617 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/iterate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/iterate.hpp new file mode 100644 index 0000000..832df29 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/iterate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49ebb8e91eb0d3230950086b94bd5c5b92957834a10e27f6c1f0197f4e83b85a +size 3706 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/local.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/local.hpp new file mode 100644 index 0000000..7182dc6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/local.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd6d9e858452afcfc9194fc9ba264a25536a4aa98dcd5a6a785a875cbf44c1ba +size 1129 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/self.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/self.hpp new file mode 100644 index 0000000..55dae19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/iteration/self.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bdaa291381f918396a75aebbd5c40c6bec2faf8281f1fd95b549ecd678d198d +size 820 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/library.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/library.hpp new file mode 100644 index 0000000..ba91a59 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/library.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58f28f468407ebd0b77123b152d881d42a79065a8fb8bb73fdddddd9331bb361 +size 1747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/limits.hpp new file mode 100644 index 0000000..98be40d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10e2ee83ddea44561957e469243c1a4b1cef32fe50224417be81cc2653ca7645 +size 741 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list.hpp new file mode 100644 index 0000000..bea01f5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec19d6963ebc2936d5e881577c8693b68fc96c09e70ecbd81a388dfc27fca8f +size 1352 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/adt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/adt.hpp new file mode 100644 index 0000000..eb3c53b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/adt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8c9b63e1be1dd34032d07c726b9b8676d1556b20ff1e05f542aa63da6aa05fd +size 2171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/append.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/append.hpp new file mode 100644 index 0000000..95a9172 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/append.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:983ebb17e5c1350256ad51e188cb4262d9ef54fd8bdcb4619320e50c3471edb7 +size 1359 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/at.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/at.hpp new file mode 100644 index 0000000..d9f7234 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/at.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e658a21e5e27c6d43acded1cc29dcda5b475df18b2a9114220e334226d65cfa3 +size 1355 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/cat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/cat.hpp new file mode 100644 index 0000000..08b5464 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/cat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b61217b215ff05c9977c250a2523a8e018a07b0dbc7e4ab1c06c9e64b8735a76 +size 1586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/dmc/fold_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/dmc/fold_left.hpp new file mode 100644 index 0000000..f63df13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/dmc/fold_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:277da8bc285adfb01b86f7cc2d423813e7b90d24d98e8c1ee60b173f6c8bff0a +size 68186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_left.hpp new file mode 100644 index 0000000..260e10e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11b4f0d262434f68bf0ad1f2ef34b5a1ccf1e9da15bd6b4c9936162d168f15f4 +size 84875 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_right.hpp new file mode 100644 index 0000000..f476a74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/edg/fold_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eca7ad79898a7e280a4abc1bdfff7b7ebe237f6e20b6ed8bff337288f2c427d9 +size 113960 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_left.hpp new file mode 100644 index 0000000..49c85a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ec75b889d9ecc89068de4f8967aa69b01f8134686e10df64d265a92ae439eb0 +size 62809 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_right.hpp new file mode 100644 index 0000000..97366c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/detail/fold_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95d60ae629111d523850d522f1b71ec5b98e605a4218116fbf2bcab33354a187 +size 29437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/enum.hpp new file mode 100644 index 0000000..5511f6b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:abceb52752c4a1a33d3fd214b7512d0b0f8e3b636b6a9ec1806ab753ab8887d1 +size 1460 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/filter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/filter.hpp new file mode 100644 index 0000000..4e89990 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/filter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92443ed38a73d216356115366e10d584ee3dc1e8ef3db348d2d88a916bd07c8d +size 2538 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/first_n.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/first_n.hpp new file mode 100644 index 0000000..bc52b7a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/first_n.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e405b421cadfe8ca42975a8e0ef6de6cd07d8e0f5b2f9a4966abd700ca136bbf +size 2684 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_left.hpp new file mode 100644 index 0000000..32a87f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51794910277d9cf4c04234ef1fea50538266be08b7c15af0135f59de70c23774 +size 21383 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_right.hpp new file mode 100644 index 0000000..37c7f44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/fold_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:85860f4d224d9b278fdf42858edd309ae5621c55cc3cb7e91dc5a18ace775d20 +size 1326 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each.hpp new file mode 100644 index 0000000..4c9875d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066c897602fad2ee55c1be3fb9823a962079f4614b23c1cb14ba56b39a1fe9a6 +size 2089 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_i.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_i.hpp new file mode 100644 index 0000000..68529bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_i.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2e01a4af9a4d151fc0591c600dac3d43c9b313779191facfbc78368219aee73 +size 3289 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_product.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_product.hpp new file mode 100644 index 0000000..dd142c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/for_each_product.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab2ae7b4ff597fd838b3fcf5c97132744d3e7521628b57b0d05e7555adfe5033 +size 13798 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/rest_n.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/rest_n.hpp new file mode 100644 index 0000000..a950396 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/rest_n.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:14a035b55223b53e661863a6e3028019db200db2c99a9099ed11d1831c8d479d +size 2350 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/reverse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/reverse.hpp new file mode 100644 index 0000000..e16fa9c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/reverse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd9bd2e1a24599a8b0270089bdfcb01254596181579ac0ef9222c18151c15fb6 +size 1427 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/size.hpp new file mode 100644 index 0000000..5af49b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:47a4f089753d0169dbecfe23906c93b2d67def5bc799f781362890f3685a4e63 +size 2468 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_array.hpp new file mode 100644 index 0000000..35500e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82c24e8055762a99aa4f084246ef61c05b8ba67a57580063416cb2f87744238d +size 25793 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_seq.hpp new file mode 100644 index 0000000..25df624 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42d962e893387aac6bf8f748d02a46e810c28e9d7a65fa33bbbe4a2484401081 +size 1196 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_tuple.hpp new file mode 100644 index 0000000..45de91f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/to_tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:969806dca613e4464f8171f048f50f72a0234b9fbd0879c1a51bb3d4803d96c3 +size 1738 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/transform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/transform.hpp new file mode 100644 index 0000000..099afe2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/list/transform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae34114b5b780a66f72e23000ac985bf95a58b6d9e700facc4b86ba550aa395d +size 2305 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical.hpp new file mode 100644 index 0000000..a6bc046 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc4fc3898e186f49f57b1051469ce95d6d066adceccdf1168834a739e6120b18 +size 977 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/and.hpp new file mode 100644 index 0000000..d55cdc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2de99f30eda56fc4232fce3e4c9dc38de20b4bcdc76dbee46047e120d15359d +size 916 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitand.hpp new file mode 100644 index 0000000..cb45fa6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe547d1d47dd41d44e8a9f3eb964f0c91d6ee6da3b99f80ad784bffd0a61a6d2 +size 1415 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitnor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitnor.hpp new file mode 100644 index 0000000..e02872b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitnor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ad103ea010b594f5c446136029c4f89e4064015bed3ac5c1bb5ba1ad5f41e35 +size 1413 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitor.hpp new file mode 100644 index 0000000..4a4a640 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1665badffd8b690e7940d577244cae1e93d5f72be991e3f8b64168871f5a73a +size 1394 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitxor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitxor.hpp new file mode 100644 index 0000000..0873da0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bitxor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34030bc463863cfc740f7e62f73acdb9b5e3be5bfe9127fe6d3e44eccd183b6e +size 1413 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bool.hpp new file mode 100644 index 0000000..e388e74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/bool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7a4f260bc74e6f6c465bf556bffbb884ae971082b8288641997bc0622a5f511 +size 8153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/compl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/compl.hpp new file mode 100644 index 0000000..58f89c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/compl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d12c8c00c74fef902f84cfcfb899dea2bac16ce7c2fd038de84ce1cdc3b6df4 +size 1306 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/nor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/nor.hpp new file mode 100644 index 0000000..da79c19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/nor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb7e209988de9b0e64dde03426752e00a78aa62245a844c5424977187194afe +size 916 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/not.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/not.hpp new file mode 100644 index 0000000..8f3907d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/not.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d05ec8aa9e209f9a08d433f4641c6ea8bc0b7079bf76419748d6879c7908a4e +size 865 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/or.hpp new file mode 100644 index 0000000..d33c03f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3aa8bda414899bac0b137d89beb65c7c11f1b31364ffecfe14c5afd231eaea29 +size 906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/xor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/xor.hpp new file mode 100644 index 0000000..42c58c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/logical/xor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03797d9a52046755ef1837c6086d1f4c509b6202fdab163da783e994dd35e360 +size 916 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/max.hpp new file mode 100644 index 0000000..0f66ab1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1815e97acfeaa25b0d3eda0fbd4b9b5c978d597d3c95cf9a2e58fbcfcfae164c +size 735 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/min.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/min.hpp new file mode 100644 index 0000000..f82c56c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/min.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1aa1e15ae8c108f04c81d004d75efbe5d8562e447958a101b552179f7972420e +size 735 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation.hpp new file mode 100644 index 0000000..2433925 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:26a8737c6436d44b8011aae80fb0b465e3e1ca296de71f111c28d99e8015c90d +size 1044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma.hpp new file mode 100644 index 0000000..4d7fb88 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76c39ab0338e79709faa68d8c5097317e93317ee8d9b71e27d3b4a4735f6d66f +size 520 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma_if.hpp new file mode 100644 index 0000000..bae0a19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/comma_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33e2573e29b20c6026f156ea2ace78c311724eb6df949c1ce21e94f28d26ea4c +size 1012 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp new file mode 100644 index 0000000..35593d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/detail/is_begin_parens.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:310514fccb7ad34582cc5f2e1254742ed7dc604bdfda3ac3e28865d5b6bf2300 +size 1899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/is_begin_parens.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/is_begin_parens.hpp new file mode 100644 index 0000000..fbe4493 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/is_begin_parens.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3bcb7a3f7322f34100216558b52e302cf6423b6e576bb42a7ea79a645d24e858 +size 1568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren.hpp new file mode 100644 index 0000000..633055e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27361f51a8a15d71e0e3994a546a20c0e667872e25585f4f8fa78b0c679ffe1f +size 826 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren_if.hpp new file mode 100644 index 0000000..a85092c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/paren_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbda8e7757d14eaa1ac398237551aedfb6da39f04bcecae465645af9609d66ec +size 1612 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/remove_parens.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/remove_parens.hpp new file mode 100644 index 0000000..fe8bb7f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/punctuation/remove_parens.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1047568f1260e596b83a05fcd0ec4c72123b0f2f41bf28733283ecfb42d47f01 +size 1356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat.hpp new file mode 100644 index 0000000..9e92a70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4afc30370c1de2b7bd9d2a9670f901d4c5fadb26a5b5d6dd647bf78644df8e3d +size 745 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_2nd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_2nd.hpp new file mode 100644 index 0000000..10448c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_2nd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2cdfb443bf3b4c5ddc83ccceca8a5dd4cd0800b53170cf83bd0b5640bed90ec7 +size 753 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_3rd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_3rd.hpp new file mode 100644 index 0000000..2034863 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_3rd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad636a053eaa2ea085ee103f53d08d14409590a18956b5fbc114e15d57f4e209 +size 753 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to.hpp new file mode 100644 index 0000000..a2167ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1acb4aa84e1021aa27ca6744476c9e57a1a4bfa334329f973517398cf906fdf7 +size 769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_2nd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_2nd.hpp new file mode 100644 index 0000000..d5fde40 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_2nd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a07ecddef28d3dac7080cd49724b42c05010d0d879f740d8e8afe9304392a6e5 +size 777 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_3rd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_3rd.hpp new file mode 100644 index 0000000..14f4504 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repeat_from_to_3rd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b003e2a8d9969334168d365ec6b401a0f55961a426852e19527d585391fee745 +size 777 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition.hpp new file mode 100644 index 0000000..0505400 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:54371b71a3cde2bb38f5815c53bdbea09381e95827ee59f3239224f9bed905cc +size 1692 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_r.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_r.hpp new file mode 100644 index 0000000..34eb234 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_r.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be24cb8e4f991eaf910a7494392bcb5dc4ead46ae44df083c46d9abb4e5e0261 +size 917 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_z.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_z.hpp new file mode 100644 index 0000000..f22e06a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/deduce_z.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31e3015353d51cc0fecc96819e3867b68080077a3a50f462cb9068440a66a608 +size 921 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/dmc/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/dmc/for.hpp new file mode 100644 index 0000000..d21bc50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/dmc/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28d1353b270e61149fa6cb03099263eda1b8a073fbc18349a6ee4bae449c3d6f +size 73395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/edg/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/edg/for.hpp new file mode 100644 index 0000000..f68a1dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/edg/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f5ab1954efe8def7717cd47f441562d9f3936ae6c30894ceb18c5d1e401f33dd +size 63212 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/for.hpp new file mode 100644 index 0000000..d43eb00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:711f237d61dcd37fe78b0ef30a16ea1198e2f6dab95e496b7f52afae436420cb +size 72883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/msvc/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/msvc/for.hpp new file mode 100644 index 0000000..ba556dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/detail/msvc/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cac300486c03780aa5ea74f9ae13c4ec23f3018b502cd9c00c62022b1df8146d +size 45252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum.hpp new file mode 100644 index 0000000..24cbeca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e4f80200a9784526ee7c9f74972169840a73e0b36cd0098e606bddfac459f8e5 +size 3042 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_binary_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_binary_params.hpp new file mode 100644 index 0000000..7af70b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_binary_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:366cb086c63619c44040a5a1c96fe04aff482696684c70b5e9078f2ed319cddc +size 2788 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params.hpp new file mode 100644 index 0000000..44e429f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76fe006a17e57f4da23ffd81f10d1edbecd6fe4063aee2da2e219fc21623a627 +size 1528 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp new file mode 100644 index 0000000..d345795 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_a_default.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2bb50359d9885bc591250fc3f313d5232fc691451da5b7609c2e1bc1a652c3f +size 857 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp new file mode 100644 index 0000000..7d6e105 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_params_with_defaults.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0636a085c09f7ff7184b975bdc3dfb25fffb484df615b04050e2d834c0ef80e +size 778 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted.hpp new file mode 100644 index 0000000..7bf3790 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb18955d7c3ce899d70cdddfbc80022e0193d10959f75c15692b1aeadc26cd5b +size 3636 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp new file mode 100644 index 0000000..346b450 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_binary_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:538ff12836614fafc4dc586d8610cfb702a6b0a2940086ee74e0903caca59a9e +size 2983 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_params.hpp new file mode 100644 index 0000000..da732f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_shifted_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe57cb7581a1e3b51a444148519b688c61c5d2b0f5ade045de91a8f161eef8ae +size 1885 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing.hpp new file mode 100644 index 0000000..e79ab8c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:91e06f97f9685c046079e3cf5146c7ca10975215577aa9f7aef1d1185104ad00 +size 3590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp new file mode 100644 index 0000000..d910171 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_binary_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6248f5cccdf27e539504d69b9fa52ee8446f4eb0ea66d3cc437708e006b2ce7b +size 2928 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_params.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_params.hpp new file mode 100644 index 0000000..bca044b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/enum_trailing_params.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72eb935679d0b4fc2e409632c7cef183adde41a3375bb55f6a3682761b51a53 +size 1853 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/for.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/for.hpp new file mode 100644 index 0000000..0556ffc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/for.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:201e1cb70ff633b4e58e7e8e70cf4bc510675f8a1a237041c80999eedee05886 +size 17087 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat.hpp new file mode 100644 index 0000000..d309dd1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcc3aa0eb4ef33ea9566de54e8b754f43ba0133b97070e4fb67278e54a214c7a +size 60818 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat_from_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat_from_to.hpp new file mode 100644 index 0000000..8474368 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/repetition/repeat_from_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6beb88af78e3082743461ec97ed58f8dd3a5cab70d4b72a4c896659a72e6ab17 +size 5258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection.hpp new file mode 100644 index 0000000..3863676 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0c79c5c506a6c07390607751202927916245936c1b396f260fb9139b221d4fa8 +size 796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/max.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/max.hpp new file mode 100644 index 0000000..f07fbc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/max.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b23b455b13d20f1c3aaf49b791ffc41f9bd2ea4b71d581ade9eb3e4a6c2356d6 +size 1248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/min.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/min.hpp new file mode 100644 index 0000000..d0b7398 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/selection/min.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f774a8022674db62850ad452d4a4d4fe753c8c6e012b9ff2b5dfcd04bd4cdc6 +size 1248 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq.hpp new file mode 100644 index 0000000..91b31c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95ed15826343ecacb6a4b3ea8111f4b8eecdb1e9ecdc7b070f5c443aef933c2b +size 2156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/cat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/cat.hpp new file mode 100644 index 0000000..23bec1c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/cat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0815e1c972b1578bb42a5fa673349f566659abe4ddba4d2a94ce2d32a0dcc98d +size 1898 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/binary_transform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/binary_transform.hpp new file mode 100644 index 0000000..f417382 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/binary_transform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e07b99eb956d87f2b73c740d0e370e30d760897a2e9155cb852d58674d570c2 +size 2625 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/is_empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/is_empty.hpp new file mode 100644 index 0000000..ccf3183 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/is_empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ebe0d7ef93d6373c96c6711be7313f241c09fbe1fab601b74d5f9b4a6e0a84 +size 1593 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/split.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/split.hpp new file mode 100644 index 0000000..2c305f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/split.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1a9a791b98e1c7089654e6d28b103c58adca71b2cc7867bc16133f78324db452 +size 16712 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/to_list_msvc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/to_list_msvc.hpp new file mode 100644 index 0000000..39bd8fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/detail/to_list_msvc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3dc7456dd66dfbe175f26dad6c1657de9e8d01651e80925f48686f5f48965a9 +size 2165 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/elem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/elem.hpp new file mode 100644 index 0000000..fb6e539 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/elem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be974867cb22a5c6f832a9a17b53b45db80d437ffb91b86e6a939528263a9805 +size 16226 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/enum.hpp new file mode 100644 index 0000000..556b1fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b29d120716b4445b15ca9a7807030c94f76053c8182f9c17683d12a3c13545b +size 16273 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/filter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/filter.hpp new file mode 100644 index 0000000..8f76219 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/filter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ae788c5842572e7335633979829be6cfdb2fcdc455700bbed254563d5f7e829 +size 2881 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/first_n.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/first_n.hpp new file mode 100644 index 0000000..ee8622a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/first_n.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a22bae88681238d60be1409132c5d9aac7b90f4e3fbcfdfb2a92907b79664cc3 +size 1394 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_left.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_left.hpp new file mode 100644 index 0000000..9421a9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_left.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1060ebc408c3a5a6aefb8787f36e06770022321633dc668748daa1e2d4c9c6f3 +size 166466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_right.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_right.hpp new file mode 100644 index 0000000..0cc2938 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/fold_right.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8b79c19f84a5dadb31a48cc4c03b9ad532de77d294c4725be4011a3695c10ef +size 37274 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each.hpp new file mode 100644 index 0000000..d2870cd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0209b0bd49149953e45495198e0eab6bc9f0811984e588af5e327e33a389d28 +size 4554 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_i.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_i.hpp new file mode 100644 index 0000000..9b1d0e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_i.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a6b32154a06b71866457d3957ebc3c7147dad0d788c69f45c241ca64f2eb006 +size 4807 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_product.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_product.hpp new file mode 100644 index 0000000..88490d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/for_each_product.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:172a9d24f7ee5808a20e5485480a129030d5b6bee82d5289eb44cf173c01fde5 +size 12551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/insert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/insert.hpp new file mode 100644 index 0000000..1a1d7d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/insert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60c29e829060f78f720018334df96605bcc496e060c341bedac192316d1331d0 +size 1247 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_back.hpp new file mode 100644 index 0000000..30c1aec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6af47cb86990a2d1d42a1a7bcf6175ada4a2afb942d4db7e0510b16592ba0d1e +size 1273 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_front.hpp new file mode 100644 index 0000000..f72ac35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7c673b1686f6d0442050df8a5927ec6b0d109f351fda397dcde1ef6c1526cc8 +size 1100 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_back.hpp new file mode 100644 index 0000000..ee1d6fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c10b37174a5811e611604ff7f415d4c79dd857d4372701b8bb387fdeb52ccd80 +size 792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_front.hpp new file mode 100644 index 0000000..7856a44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:545207a806fc767ce6edc2730ac92728d40ee030ad53c5627761a1c17673a440 +size 796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/remove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/remove.hpp new file mode 100644 index 0000000..1840d61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/remove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ccd28415c5e6bf5bfdfc31fdc9a46d224ab21e72a737069e992158c20e4fd5fa +size 1287 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/replace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/replace.hpp new file mode 100644 index 0000000..bba8a2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/replace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:162265104c66288349cfc3b2bd103f90a3f48661bd8dfc80625d70bc35825b38 +size 1939 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/rest_n.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/rest_n.hpp new file mode 100644 index 0000000..080dab5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/rest_n.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0fa4e27639e8df39d92ce6c65f37cb4574d43f8916815eb1720ecef1b8401b69 +size 1899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/reverse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/reverse.hpp new file mode 100644 index 0000000..fd19c70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/reverse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:370bd99ab632ddc02f0facda52847d5f1eec9313eeaca5b0ffdf2f561546e833 +size 1721 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/seq.hpp new file mode 100644 index 0000000..0b2546c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba79028a69388267015b938b93db07805a86c1ca2c464d98a82e7f451e1c769d +size 1672 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/size.hpp new file mode 100644 index 0000000..fa23c90 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:711aba9bb64805f14e9abf9d4e782bd1b00806ed34d246aeb2a0f2eca8d1f969 +size 29224 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/subseq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/subseq.hpp new file mode 100644 index 0000000..056fa6c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/subseq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:916f3fe5ab4b074ef25863847da507f9d497d19687f8444752dff91f1279f679 +size 1225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_array.hpp new file mode 100644 index 0000000..cd32283 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b15f61f6438afd243b59aaffdb9f30a9386ad3f9951c5492d63b6b3f9af036c +size 1194 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_list.hpp new file mode 100644 index 0000000..386451b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:411b0d74233f3b6a966ab1fc7b3236042ee028cb554b70d51b89cd0b87bb0cd1 +size 1975 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_tuple.hpp new file mode 100644 index 0000000..e072e63 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/to_tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8519493553d633eece8c926c8ad995ec787009e760015dc513b0ada17c3afdb1 +size 1098 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/transform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/transform.hpp new file mode 100644 index 0000000..9e4ddc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/transform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f199d1587caf695066fda580272e9abafda15857f7b59b94eb3060c42ea2e2d +size 2613 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp new file mode 100644 index 0000000..f6da1db --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/seq/variadic_seq_to_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bb24ae09763fcfb0eedd74af3e978109ea2728163317b1dae2fa94e0a608eeb +size 1366 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot.hpp new file mode 100644 index 0000000..9548e44 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cbc25ee635761229612fe1698619917d25ceccece91623360b5eeb4cf303a6c +size 733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/counter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/counter.hpp new file mode 100644 index 0000000..b3beed6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/counter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60f6d0de706e361a6d1e5c5c9c9131ff9f1858448412bad109b9cf388b8cc319 +size 1029 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/counter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/counter.hpp new file mode 100644 index 0000000..972d8a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/counter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3f53a53c6fc06d26fbc51c70cb411219cb46132e5843f9c6fa8fdc97d8659fa +size 10660 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/def.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/def.hpp new file mode 100644 index 0000000..40805a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/def.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c109e9e53e6178b751de694d1437080fce54bfda935d52a5e0aa3310a5b51afd +size 2847 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/shared.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/shared.hpp new file mode 100644 index 0000000..5a44fba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/shared.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:28a9ff40adda63bedf764b62b4ce8fe6eed29031fab658caa2ce3039686a69f7 +size 10480 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot1.hpp new file mode 100644 index 0000000..e05cfe9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b51fc5790969e80fcce783f2c4e5cdc991182b69936e0555c838ffa154e47507 +size 10347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot2.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot2.hpp new file mode 100644 index 0000000..9b43c19 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot2.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0f04328bd22f053aa65baf27f47a412f91aa0fbab07251975f5a0a2038b7de5 +size 10347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot3.hpp new file mode 100644 index 0000000..cbe83b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc9d8375c272cc96c18fc8f01ac1847f00e4213c319d04485fe312f3d46b2a87 +size 10347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot4.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot4.hpp new file mode 100644 index 0000000..790d9fd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot4.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d79885339e6a5e44fb485e0599b340cf2715fc406c69e24ed0916140c02606e5 +size 10347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot5.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot5.hpp new file mode 100644 index 0000000..ac14ab5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/detail/slot5.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0ada1797f1e49cdc79cb0d9bfeacc0216b991b3291b67a78a693427f4ac6d0a +size 10347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/slot.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/slot.hpp new file mode 100644 index 0000000..15e6142 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/slot/slot.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6075b9fe90cb229106dd78239114539f0396115516406b21d010870aa29d319f +size 1356 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/stringize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/stringize.hpp new file mode 100644 index 0000000..0ae14f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/stringize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9155f42a7f94edebce1e01e42017a9f60da632a097a8a5446ea97a619fc18ad0 +size 1111 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple.hpp new file mode 100644 index 0000000..22f5379 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c48d9bec12d7b419e2dce0695330ba2ae4c51a70acb0772e42d01a26950eabbb +size 1261 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/detail/is_single_return.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/detail/is_single_return.hpp new file mode 100644 index 0000000..485ac1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/detail/is_single_return.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae4dec89d4dd30b8ebb2d096a6bceb8b1bb3afa2c10d14e20004bbf6c6edae81 +size 1375 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/eat.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/eat.hpp new file mode 100644 index 0000000..24de02f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/eat.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:27fae151cf9837c32b863fe719e77350d455674751d4a6693275a8c2bafaaf53 +size 13281 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/elem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/elem.hpp new file mode 100644 index 0000000..b350cc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/elem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9572f35119257f84830c732f878efebd3ada2eaa3bba01e72978381831d2bcd +size 53223 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/enum.hpp new file mode 100644 index 0000000..0c27392 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95a6871db72c42d5ba8d2f8bab2a2135b49a654e73f62b64ffac00aaa167e056 +size 1011 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/insert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/insert.hpp new file mode 100644 index 0000000..f4ebe35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/insert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86f4a7458de9a1f111578ecc113cc3caaa4930881bcf1177d409b0c19ae617ce +size 1368 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_back.hpp new file mode 100644 index 0000000..63b8348 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be3beff5d19e2027654ebc1b07fbc1ae17719e38a35dff8f5d1ff7fe0b2bbd1e +size 2054 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_front.hpp new file mode 100644 index 0000000..e09d9bc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/pop_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2aa7e15d5c90f2e91a9b3c96def57fcfe124d33b5f8d84095c139a2951e32ffc +size 2074 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_back.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_back.hpp new file mode 100644 index 0000000..83ca634 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_back.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:615ba4093de86c739f9c41ac8562dc2328d41cabe7355806de1f29787414a5aa +size 1192 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_front.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_front.hpp new file mode 100644 index 0000000..b2e0a56 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/push_front.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07ca2c9b39ca1072b60db4647a6403418e1a74d0283faa9d4b864be52b60e85a +size 1201 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/rem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/rem.hpp new file mode 100644 index 0000000..cc50003 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/rem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f005494450a56b343b37864910df502a2d543b87662c6741bdf63a7a2eea415 +size 25426 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/remove.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/remove.hpp new file mode 100644 index 0000000..42129fb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/remove.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:34d2c68799fc2f0ee907e82ad02863b894b4c41fcac568b7b4bfb8d94d956c1e +size 2054 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/replace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/replace.hpp new file mode 100644 index 0000000..361655a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/replace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1e960960b894a465f93662e7abd01ac98fdd1f0a1cc2ef2699843822fa0d24e +size 1378 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/reverse.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/reverse.hpp new file mode 100644 index 0000000..77595aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/reverse.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2870815c77286fa48e46c2e6525ecaa1fa3eeb01fa993de58d6a46d037bd33e6 +size 24280 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/size.hpp new file mode 100644 index 0000000..d10a2b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef80d3cbd83cd96928e45753884d02fe08d3c5b0c2be3b16a13e3380f9e4efd9 +size 1264 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_array.hpp new file mode 100644 index 0000000..20a58ba --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a698b094a210ae3beb03eaae100ca935f6ad164001ae4398c7911586325f5a6b +size 1978 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_list.hpp new file mode 100644 index 0000000..3cebec0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4cd3a38bbb3d4828549cf7a3500514dbb3e4aad15c6cb5af3a1eec4f37731e2d +size 29210 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_seq.hpp new file mode 100644 index 0000000..32884ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/tuple/to_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81fe049b377c8cffa8d310a1308596ecc20ad4dbe886b397257622bba4d2f607 +size 24645 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic.hpp new file mode 100644 index 0000000..d8dca60 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc472eb1ec588c24eee3267641347dc4f80087aabf800072dee7d41b9f61385e +size 1184 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/detail/is_single_return.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/detail/is_single_return.hpp new file mode 100644 index 0000000..01824fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/detail/is_single_return.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48a669bd166a544473eabda659c27b406e4dea028f13c979adc100e05347d90 +size 1400 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/elem.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/elem.hpp new file mode 100644 index 0000000..3373dc5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/elem.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b9103e25c174351d3f77bbc4ef5f36251315fa8872b767c809a575f3d0d9c30 +size 14196 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/size.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/size.hpp new file mode 100644 index 0000000..031221e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/size.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:59e23106482d86de5785d6df1fe6d5298311173e214577aeb6482ede15d20c32 +size 2133 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_array.hpp new file mode 100644 index 0000000..83d7bb5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b428ab56849e074c10dc623e9b94a0d74ec800b731b7e9c6da0e6cd97ad05d5 +size 1419 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_list.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_list.hpp new file mode 100644 index 0000000..02e2fb7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_list.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bde031fb9b90dc507be1ce49ea01d54f935ca424f4ccc1ee64fe37530fb752df +size 1142 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_seq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_seq.hpp new file mode 100644 index 0000000..6001362 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_seq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b55f08055b6d35a6ca84f31dbb8890ac5cc92516428d13e3e945e53aa045393f +size 1136 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_tuple.hpp new file mode 100644 index 0000000..ef6a8c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/variadic/to_tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddb149010befbb7e2563ddf9b403464080058887ef1ca82cb56ef6267159eff0 +size 1073 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/while.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/while.hpp new file mode 100644 index 0000000..435d316 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/while.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f122472259876404d1a5214c333b077ddf131797b0b712797ec94cf0f7d15a1 +size 739 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/wstringize.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/wstringize.hpp new file mode 100644 index 0000000..12958c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/preprocessor/wstringize.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:019c772f9874140596a6f64a644cbada585a5bbe830539d77a9730c795b2a78d +size 1279 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/ref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/ref.hpp new file mode 100644 index 0000000..fcb92aa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/ref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49a206a271741704a834bd014312e4cf2e68586c1e35ec33a529e3d9d681386d +size 370 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.h b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.h new file mode 100644 index 0000000..d91e435 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9050c161b7a0f0bf9ae3a21e66218ea9ddb57deeb7202f0ae8cb313189e57611 +size 2174 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.hpp new file mode 100644 index 0000000..7c8db11 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75b7a8d127f5f78426eed6902dd980fc37decf3ae958460c87baf82de11fdc7d +size 823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/concepts.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/concepts.hpp new file mode 100644 index 0000000..40e49a5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/concepts.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad8da343310b406b3ce1a7ad7dbb928eccd580edab85430540f327fbf7b7608d +size 44854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config.hpp new file mode 100644 index 0000000..2cce10a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a14daa1b6a0be650272bbbeb6221a99ecb0b3520d4ec99dbfff2c1fb9236e7b +size 14292 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/borland.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/borland.hpp new file mode 100644 index 0000000..a8d86b0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/borland.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c15d7c5beac4bc7426cbb12edf1ab7ae8ad61aabed9470231f04fe139ba3bd7a +size 2238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/cwchar.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/cwchar.hpp new file mode 100644 index 0000000..cc4088d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/config/cwchar.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ad615c3e4aeab471e0a9c9bc3e649f0d1962fdc73459bd19b46b54a7614ed83 +size 4082 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/icu.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/icu.hpp new file mode 100644 index 0000000..d57bca1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/icu.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36400093329698d905d95888eed97c29060031d2bb6569c433a3547ea9e56a21 +size 41535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/mfc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/mfc.hpp new file mode 100644 index 0000000..4adbcca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/mfc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10282d24d23327762f5d51cc8403c7caa200e7261d7335d2fa37f2be583c7753 +size 6559 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pattern_except.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pattern_except.hpp new file mode 100644 index 0000000..df30fe0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pattern_except.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:405b2d3d38d522ac0c6897b99621838f4a78669ce5c4e7ce9a982402aedc3bf8 +size 2222 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/object_cache.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/object_cache.hpp new file mode 100644 index 0000000..5d30995 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/object_cache.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:493c9f9d4482809f9b821889219d2b1ca2a11436e586b202ee0c42113a85425c +size 5252 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/static_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/static_mutex.hpp new file mode 100644 index 0000000..ed18a6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/static_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f3e47d7b7ffa35a6ab419a7ea2faf1bfe78b22ca312fd9b92da986a6e5e0059 +size 4328 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/unicode_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/unicode_iterator.hpp new file mode 100644 index 0000000..2cdb63d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/pending/unicode_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3adae4f631d7644f4c709453d35a973d6c4258894d0082b50187e5df17cbbdd4 +size 23785 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/regex_traits.hpp new file mode 100644 index 0000000..3c68705 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6474019a283f6212760c67f580c2e07c428dd9bcf5f64564bb99e371d01cb60c +size 733 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/user.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/user.hpp new file mode 100644 index 0000000..9c5dca9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/user.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae58d10b33039c2bf40c07fdb0f01aeb3983aede2eb1117536aa91d1d06f6001 +size 3242 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex.hpp new file mode 100644 index 0000000..ae63875 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de578dfbdc5b21f09f36d0e14442569ccd7ec632a6e3edbd480c1151f846db4 +size 23416 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_creator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_creator.hpp new file mode 100644 index 0000000..19eb394 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_creator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd542529ed3f53521b3f3ac0b5645f54c215318c2a4e69001d685dce3016360a +size 53533 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_parser.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_parser.hpp new file mode 100644 index 0000000..5914f9d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/basic_regex_parser.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:981f2e46be41205603ade8a177310666ef33821e6552aca4ed8aa4f38c7c8dad +size 112642 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/c_regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/c_regex_traits.hpp new file mode 100644 index 0000000..a7e507f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/c_regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05ff2ac8375947f29b7ddb6020e23a7127885a70b27061ca8454bb98bb7f9bf0 +size 5497 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/char_regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/char_regex_traits.hpp new file mode 100644 index 0000000..310d3a3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/char_regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa323f02d1fccf04bb99fc365156b981e06be55a735136e631668ddc92fd3ae2 +size 1726 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cpp_regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cpp_regex_traits.hpp new file mode 100644 index 0000000..4f62499 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cpp_regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5e497f916c75888791a6b3f0ee191175d3732bb4229db4700349d23460ea324c +size 39413 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cregex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cregex.hpp new file mode 100644 index 0000000..fd44771 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/cregex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f584d9f385705ca5f236824974268a1db0ab259a7936c73e1b6297e0b6bc369 +size 10985 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/error_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/error_type.hpp new file mode 100644 index 0000000..de5a126 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/error_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ffc86ea881ebb1a0ee8c036af55954a7f2f0c2b9570b9e95dc3dde641e9f4df +size 1258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/fileiter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/fileiter.hpp new file mode 100644 index 0000000..55c2ba8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/fileiter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c2ff1636bc00e18cec26a6b8598bbd7ef49e74c0e6301dfd34dd325fe5175cf7 +size 11225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/instances.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/instances.hpp new file mode 100644 index 0000000..258cac3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/instances.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d77295e29b9c3fc24ca8dbcf19ea09dcb6bfe7ef10eb62857445d9dc6c1f61a +size 9076 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_category.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_category.hpp new file mode 100644 index 0000000..52a4352 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_category.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48bda4c4b31d0d7a272d17bb2cdb2dc4cdf3d17275cb6fa552f619e0fe9327fc +size 1960 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_traits.hpp new file mode 100644 index 0000000..61600ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/iterator_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:44089715261470ab0ff55b9fd9a7e598ff4245f4462ef766eec84984f7a82d37 +size 3802 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_flags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_flags.hpp new file mode 100644 index 0000000..b5c75a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_flags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb3822e747facee090b8a4489f6d587bc2d05ed24ce5fea1676d4f1f8c2e7c57 +size 6773 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_results.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_results.hpp new file mode 100644 index 0000000..789d566 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/match_results.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f13696bc8ed1eaab483827cb419fd2710c251d919a079f5dc1f71566b56c5c32 +size 22754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/mem_block_cache.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/mem_block_cache.hpp new file mode 100644 index 0000000..ac54880 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/mem_block_cache.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97404c9b09862d1724fefdd7844a4579ca07e3d2dae645285c96fcd4195a0dd3 +size 3132 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher.hpp new file mode 100644 index 0000000..faaeb52 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab9349ebc14710ced50e03904e476a3d8ce5f6658e0bb6ff1b7916a53b52714c +size 18626 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_common.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_common.hpp new file mode 100644 index 0000000..d9f85eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_common.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:852c6f611a9aacb9e90e61b0204b57eb4ce1fc1d3dde79b7679301043f8edccb +size 30249 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_non_recursive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_non_recursive.hpp new file mode 100644 index 0000000..30e01de --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_non_recursive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a694228a7b47fc7b428a21b5c871f9029609e179d3525a1880191048feef0710 +size 63225 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_recursive.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_recursive.hpp new file mode 100644 index 0000000..ff5680d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/perl_matcher_recursive.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7d3d556305a08f6d317f847ba7c74ffa2c309edb959e631cf862c33697082ecc +size 34528 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/primary_transform.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/primary_transform.hpp new file mode 100644 index 0000000..d1b6c43 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/primary_transform.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c873c8b6b21256fee6818310763646fa68520cc6801a4bf1443acdd988b0ba84 +size 3347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/protected_call.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/protected_call.hpp new file mode 100644 index 0000000..711aed8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/protected_call.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beb39370b5c7e8beab8354c2996013c6fa3dfe808fc6be84753e19d9e70eb9f3 +size 1688 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regbase.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regbase.hpp new file mode 100644 index 0000000..cdefe1f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regbase.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:253bc5cc3d5eef86b67784619668163fc9b9d26efaf44a35a8b6e0d62aaae3c7 +size 5972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex.hpp new file mode 100644 index 0000000..a12c1ce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:153f995f1fbc1525fdb8134ed98a525873c95d4e37d88d91b6bcf7056f76a5ae +size 4590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_format.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_format.hpp new file mode 100644 index 0000000..7029ae3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_format.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6808ed7b0e66b806983965f4201fa99a4971130e3aa8ed86d089d762f89360d8 +size 34103 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_fwd.hpp new file mode 100644 index 0000000..64fdcb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bf794daf8924de2694a3c764a2fe87689d2c6f51d267fa0f254a93874338532 +size 1646 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_grep.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_grep.hpp new file mode 100644 index 0000000..207ba8d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_grep.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7255dc6076ef676a8f1b5aa804a940bc834e82f49c15f0d19ad10184e5d2af14 +size 4879 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_iterator.hpp new file mode 100644 index 0000000..f7da6d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d6225007799720a13ca4bde9e3930670988adc68ed71e1b49733ddf6899ec99 +size 6303 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_match.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_match.hpp new file mode 100644 index 0000000..6c5a3d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_match.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1483aba7a319ef50f2709616e4015fc815b06c61fa924b5a504b3ff9c21dfcd0 +size 14475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_merge.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_merge.hpp new file mode 100644 index 0000000..ecd31a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_merge.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e02e13b47459a1092c530d399ea047f4ae7bb1fe78e7f1beb3800dbaa9a6cd1 +size 2765 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_raw_buffer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_raw_buffer.hpp new file mode 100644 index 0000000..e867bd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_raw_buffer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cc12050498255a8a0eb3e8d4fa7036b3ed45e71d65afba17ea8281c3103d8004 +size 3686 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_replace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_replace.hpp new file mode 100644 index 0000000..e78da66 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_replace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0777192ecb9759436eef8b516f570d41a49aad8773b505dae850bfc4e6c8f319 +size 2925 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_search.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_search.hpp new file mode 100644 index 0000000..fa5621c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_search.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd1633d8b20623a692cbb84ece0bb41af23ac71d98fcf2f99093981f08455dbb +size 7097 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_split.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_split.hpp new file mode 100644 index 0000000..ba3293f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_split.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dd48ef3ce83f0002bd7bfdfabc49651e45a42ddbdab67c3114c59f0cdb6c188 +size 4956 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_token_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_token_iterator.hpp new file mode 100644 index 0000000..b9083e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_token_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67a197e3788f0e5b5fd85a167640690e5ef1f74be0d1756644092ab81f258b32 +size 12577 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits.hpp new file mode 100644 index 0000000..9599fb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6b0775fc7e3827a92136aadd86446f0b8abc5bf0f5bcd10f29e813359517039 +size 4963 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits_defaults.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits_defaults.hpp new file mode 100644 index 0000000..072b3c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_traits_defaults.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bd73f13b55dd44e6ad2e6504bcc69541a5223e7b29784ec0fbefffba90210b6 +size 11568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_workaround.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_workaround.hpp new file mode 100644 index 0000000..88d0d96 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/regex_workaround.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cc5aad6c6518b05c759fb1b5d980b76e34e1658d0da31e2c3062b4ea14ab52a +size 6171 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/states.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/states.hpp new file mode 100644 index 0000000..64d3459 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/states.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f156797c0b009fcd25bf2d08ee5383dbee91fa62b5c20000f6c56cb89294b9e +size 11915 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/sub_match.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/sub_match.hpp new file mode 100644 index 0000000..0a5f60e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/sub_match.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e15999f2cc6345d4713c64d2dfb06155867f3cdc8aca9320e87a9b6b63de3894 +size 23153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/syntax_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/syntax_type.hpp new file mode 100644 index 0000000..47f22d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/syntax_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b480dc539e79d0f77f2eea7ac5846650fe3b1d6670480fb2eb9c7e15d66c73 +size 4374 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_iterator.hpp new file mode 100644 index 0000000..bb66fc6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d574316e733ae3205f1d6351c6ef6db463bcef757ae67d3c81adeeab8c5a49fa +size 6475 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_token_iterator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_token_iterator.hpp new file mode 100644 index 0000000..09b1f57 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/u32regex_token_iterator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0a67641a13d39674a393f1f11f85236db757302578cadbfb23f8c31b780a860 +size 15064 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/w32_regex_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/w32_regex_traits.hpp new file mode 100644 index 0000000..ddef1ac --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex/v4/w32_regex_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e40d28f1ae12d87f423431550dacfee12b85510ecbda3093f0a8fdabfd10db0 +size 24437 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex_fwd.hpp new file mode 100644 index 0000000..89f2fa3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/regex_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2a974f83614a8e48e04f2c468807467fc61fbe5b6a1470dbf0e99b4a433ba54 +size 693 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/shared_ptr.hpp new file mode 100644 index 0000000..0d33b97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4a23223765c62c12e19cb1fe37d07d924735e0bce5ecef54ef03a9ebdd45c71 +size 525 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr.hpp new file mode 100644 index 0000000..64a7fb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3081bbc99db3f8984c8f1f32b0206b83a07ac094073d45769d509f606df3cc12 +size 780 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_local_shared_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_local_shared_array.hpp new file mode 100644 index 0000000..59b1ff6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_local_shared_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aee208b887ecfa54fa0ad70f3a31593e3ee663d0608b9dfba96476109321496d +size 7960 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_shared_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_shared_array.hpp new file mode 100644 index 0000000..9b5c913 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/allocate_shared_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7286d6767db1ce95e636bc60612e1424260b028f2d9bb001a49dd913f4acf767 +size 17870 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/atomic_shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/atomic_shared_ptr.hpp new file mode 100644 index 0000000..507aec5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/atomic_shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:718bda057c31f33d76bd5e5dd8da5dc32adc5fd1e455c6d42911320af92486d7 +size 5681 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/bad_weak_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/bad_weak_ptr.hpp new file mode 100644 index 0000000..631e37f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/bad_weak_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1601a50142ca359791d1a9b7dcfca4fe88ef1aa2b41eec91dbabfc73feedb5c1 +size 1707 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count.hpp new file mode 100644 index 0000000..48196db --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3ca769a3261d7bda2df7153e0f48140104100231adacc7b27a057dc3ec042b6 +size 3041 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc.hpp new file mode 100644 index 0000000..c07e3e1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b9500e28df1d01bf3a62174c398207717d1cf8b3805654418e98851c823a09d2 +size 1473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp new file mode 100644 index 0000000..c9e6a11 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_gcc_x86.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b53a0cb9c643d297aec4cdb3839b84d72bda47a5fee298418e694ed5ebaab3ca +size 1519 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_nt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_nt.hpp new file mode 100644 index 0000000..8052a61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_nt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7ba5e790e715bdd4ec3fdadad5860c8608ec064541e82c79348e8cde4f981ce +size 1032 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_pt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_pt.hpp new file mode 100644 index 0000000..795256d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_pt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a83e6bd26ffb247e671401243cd2bf8b10d58cabbae3efeea9ba6dd53dd51a +size 1906 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_solaris.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_solaris.hpp new file mode 100644 index 0000000..d0ad2c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_solaris.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ba0efbe83659e941c9eb2223cd9b4c9f013b3fe47fc1849999f3e9de56fea758 +size 1157 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_spin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_spin.hpp new file mode 100644 index 0000000..2193595 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_spin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c8e19e7989234c801cb6450b389ce36696b66f3194898e2a433a82babe8533ea +size 1151 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp new file mode 100644 index 0000000..7730085 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_std_atomic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:062f542cdaa5a8ce114555d57f3614f21a482e2d3cbff054e77c2317d9058a8b +size 1160 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_sync.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_sync.hpp new file mode 100644 index 0000000..83aa783 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_sync.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a9de5425067b88e0469f8b17222f341dff4621c1a1289fe5b946a42b5f33721 +size 1195 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_win32.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_win32.hpp new file mode 100644 index 0000000..ab91a0c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/atomic_count_win32.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbfb88deda246c4460d193563e06140caa61ddd84fb0e5c15947e87cfb5d2371 +size 1208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lightweight_mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lightweight_mutex.hpp new file mode 100644 index 0000000..fe70c50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lightweight_mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:706069ff38c6d9dc0b5462b9ab21e7b4fd6b52c402f7e01c84faa1d2ff173f9b +size 1425 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_counted_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_counted_base.hpp new file mode 100644 index 0000000..8b2084c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_counted_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ea592db76d420ec950b2a45b2e44b32be3c05cae1ac02ec6670f722eb566df +size 3153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_sp_deleter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_sp_deleter.hpp new file mode 100644 index 0000000..fbeefd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/local_sp_deleter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b376d416be817160ac86df7a40e61327dedc2f2156bd84065539d6c6d3624b23 +size 1677 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_nop.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_nop.hpp new file mode 100644 index 0000000..a28e13d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_nop.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e88b3aece69bcfff89ca2db89b40571b7fb08f2848dda77bdb33acb3052f4ed7 +size 702 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_pthreads.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_pthreads.hpp new file mode 100644 index 0000000..e84b0df --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_pthreads.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39d96481855a03ae5371207be2528b18c090b28cb09b19060cd0afea41083298 +size 1753 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_win32_cs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_win32_cs.hpp new file mode 100644 index 0000000..cfe5241 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/lwm_win32_cs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77f225b3e7d9334b418925eccaafce94001b42d340fcc4ac512a8c5bf98ce7a4 +size 3281 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/operator_bool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/operator_bool.hpp new file mode 100644 index 0000000..c4de196 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/operator_bool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b128b7a53a79c38dc568b589d60bdabfd6998e0e085498aa8d8e77ecb3cc1cef +size 1731 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/quick_allocator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/quick_allocator.hpp new file mode 100644 index 0000000..b76f49d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/quick_allocator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70c1eca92a89a5c898d59aa3b4d6966a0a37fc01c0e97fa7fba7eb55c2607a83 +size 5137 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/shared_count.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/shared_count.hpp new file mode 100644 index 0000000..40d21d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/shared_count.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b5475e42563aa1ebd9067c5fbde7cecfe1005b777a3ccb88f851e8c8b7b74e9 +size 14141 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_convertible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_convertible.hpp new file mode 100644 index 0000000..918af92 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_convertible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:508477b4d745355008594bad136a0fcc735f6ce6e9ba81573babc3989ca10064 +size 2153 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base.hpp new file mode 100644 index 0000000..63d1113 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:460971bb769fb4636bac082f8390669f149a59d0cd537c0fdcc6e6d3013c1354 +size 3494 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp new file mode 100644 index 0000000..d32a8a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_acc_ia64.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efdd6563330cf939e97c79d9fd353eb2463839f2de3dec03718ba326dfa7fb94 +size 3251 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_aix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_aix.hpp new file mode 100644 index 0000000..8053866 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_aix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdcedca5ed41fa6d9c64e5dfb4e24d26bec5d1f68020bb1939bffdc2dc46c800 +size 3110 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp new file mode 100644 index 0000000..1a20acf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_clang.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5043622e85491bb81986a5ab5ee17d54577be6ae2029c63c67248499466ad847 +size 3436 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp new file mode 100644 index 0000000..f4264d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_ppc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07adfcb87df3bce1404370a662c2f127592105dd81aec61f570b8a3a42abacba +size 3179 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp new file mode 100644 index 0000000..dc596a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_cw_x86.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3693ce419abfa4748bfee3973360d7901656e115a739bacbbd45b033286e6d2 +size 3293 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp new file mode 100644 index 0000000..6ba3a51 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ia64.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e3bd35e22475f7040385e1ed80b43f1f9dd0efb8c9ddaa95000018caae77c322 +size 3774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp new file mode 100644 index 0000000..2cd74ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_mips.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc58f4c838e66d098636741e0adc6942c2b46e5512823104e4cecfd7607d1d68 +size 3861 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp new file mode 100644 index 0000000..3fcb8c8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_ppc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bac010145a5817920e04108536ee6b57a2f4db1db19fcc93c1e30cd4de4a8439 +size 3638 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp new file mode 100644 index 0000000..8b8e40d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_sparc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:42756e1cbdd3cd882a9004bc30d95755b7f4877880e40871d73e2dad5144810a +size 3613 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp new file mode 100644 index 0000000..67723c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_gcc_x86.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f755420f41271f8ac362decc28d317c41ed3091646c0ba0a92ef9f0b04242e0b +size 3701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_nt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_nt.hpp new file mode 100644 index 0000000..55acfa1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_nt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73ee572d7e9d9ebc0ea2a6cb1b5bd3d04b841b9c033cbbc191cf1be1e35057fc +size 2255 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_pt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_pt.hpp new file mode 100644 index 0000000..97fb318 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_pt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fb663ed7364253a728a6bb793acfb3172798b30834530943bd72889cdf7c2e6 +size 3447 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp new file mode 100644 index 0000000..4a0f134 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_snc_ps3.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be071398671c312da28d123c23e866d11bd274c2b7f66ac0c23e4ad82c7f0ae3 +size 3551 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_solaris.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_solaris.hpp new file mode 100644 index 0000000..03ad812 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_solaris.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f25839e980fc42209a2a4dd4ee3d50c19783ec7651df1b4100649d11b77f1e8 +size 2676 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp new file mode 100644 index 0000000..5dc5a4b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_spin.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0d165243c8985b485bc2d4ea1e1b5f53a7484b64c66f404aca5954c93a4cd42 +size 2902 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp new file mode 100644 index 0000000..dbd01eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_std_atomic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd56f512318d16cfeced670c239c316712a40979db9bc2a311209d029d765198 +size 3124 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp new file mode 100644 index 0000000..041cb6c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_sync.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fe75ead522dbbbbeab4d54651d557cb8e61141442a014cb8bac5e5dcb32127a +size 3163 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp new file mode 100644 index 0000000..2036728 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_vacpp_ppc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97cd2ba0dbfce6af17f7fa009240a007181c9c772de637ad3722501a66e12570 +size 3458 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp new file mode 100644 index 0000000..a918a0e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_base_w32.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ffcc367bdf8ac85429082d0d3d978e041d8b255791745879d4aaf18e8b7a8e6f +size 3102 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_impl.hpp new file mode 100644 index 0000000..709a6a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_counted_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56c6abe414bd45b49591068126b9fca97d7afd7b849211753db082f2b3ff825a +size 6455 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp new file mode 100644 index 0000000..fcb7228 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_disable_deprecated.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99892f31f173d1de78e5af7d9e2231e16c307ee8f93d0ada22cbc4f5d67801df +size 983 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_forward.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_forward.hpp new file mode 100644 index 0000000..e285caa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_forward.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63e440d963541fcdb89b37f651508868656ecab7c265db7fc2224f27dc1a3eb7 +size 1180 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_has_sync.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_has_sync.hpp new file mode 100644 index 0000000..1b67bab --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_has_sync.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75da457cdc7c72a87328cb4a2b01d73d5d0af295509ab74b6a22531659de8136 +size 1605 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_interlocked.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_interlocked.hpp new file mode 100644 index 0000000..c0d2ac7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_interlocked.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b22e910b8381e7306eed7741da1a03b0b5f31ef789cb1acfe20cd1ff82fd326 +size 6567 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_noexcept.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_noexcept.hpp new file mode 100644 index 0000000..c152f8b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_noexcept.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ac5afbfab96f459b1431f3b610a7bbbdae741efc3adbed0e1a0656c6a13488e4 +size 1185 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_nullptr_t.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_nullptr_t.hpp new file mode 100644 index 0000000..2473a2e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/sp_nullptr_t.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dd97f75b2c1487171adc58855f41f5e5a0b0534a0e8e7603af72ba8c0eb6e52 +size 976 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock.hpp new file mode 100644 index 0000000..9e250d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86a13976eb3d0a28257be0ba91e5f3b7a3ca00b1661b92c6be38c8e49a9b61fa +size 1909 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp new file mode 100644 index 0000000..200ced3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_gcc_arm.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7c4fff3a9f0fc6e43f89affedf49d529f21ba7eaf336b7358abe5fc017ce5e7 +size 2557 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_nt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_nt.hpp new file mode 100644 index 0000000..5da8752 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_nt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9a9ca59229aa06500e9821b614c790d15251e31ed66666064e14b786ccf84649 +size 1464 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pool.hpp new file mode 100644 index 0000000..3a3efd6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:151ab5dd84fb410f0182afab573771bed459ed24147caf3ebfa2cf39b550ccb3 +size 2954 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pt.hpp new file mode 100644 index 0000000..b02bb81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_pt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e44a85dd82a286278ce691be41a73e44142878712a0b335b39405e5d1e1f298 +size 1314 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp new file mode 100644 index 0000000..ce10adc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_std_atomic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3080e6c0276b9701777d05e831bb008364a079d6a08438920baa3366668ec4b6 +size 1468 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_sync.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_sync.hpp new file mode 100644 index 0000000..f4ad5e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_sync.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd585f2fcbd6b9a42edff63174a33bb1b453027aa64c0e81800c53ac40b4b8c6 +size 1491 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_w32.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_w32.hpp new file mode 100644 index 0000000..758c7c7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/spinlock_w32.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4446e0321c3ebf34c7c7b94f4a3424fbc9810d89fd419c050b63b13f2663c1cf +size 1962 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/yield_k.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/yield_k.hpp new file mode 100644 index 0000000..e28cbb7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/detail/yield_k.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f281adc425c20a98d8eaf7abc3bab43cdb82f532dd90186156a7be7faedbabe3 +size 3304 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_raw.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_raw.hpp new file mode 100644 index 0000000..1d69e61 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_raw.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:73161035e0726e4ae9a25d3c3deee552f0604e28b0a394a94714603ffbb76603 +size 4517 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_this.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_this.hpp new file mode 100644 index 0000000..ee05c17 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/enable_shared_from_this.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35f4bc2853c9c24d81c4d1d2538e783a73fb292ccf9acda82806dd9585fc52cf +size 2175 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ptr.hpp new file mode 100644 index 0000000..24840b2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e8dbf0df44819a7c16876f0af74f634483b3cfe6e76c76d6418354f2739c35bd +size 8347 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ref_counter.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ref_counter.hpp new file mode 100644 index 0000000..5cec3eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/intrusive_ref_counter.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8d9b4e62c70d83a28513d49fb3aaba8c445641b0a38f8e33d713add8f3501e3 +size 5817 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/local_shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/local_shared_ptr.hpp new file mode 100644 index 0000000..5e39098 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/local_shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7887504b4d1d57764f8da55780ab815e8a7aa6e5834594f7470b8009b459f87 +size 18800 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared.hpp new file mode 100644 index 0000000..24d3b8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c16c0ee7cff40a3e9b0f9a6eeff0006142024c46bf1eef2685348aba5d2cd1ac +size 576 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_array.hpp new file mode 100644 index 0000000..260d699 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ec4209e46f9907a15f951fc839737eb88d12fc6b4411b1235a74e9a7875406f +size 1833 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_object.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_object.hpp new file mode 100644 index 0000000..6b50203 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_local_shared_object.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e7d4ca19262a94a7ccfdda7b53211390af63fb8263fca85d143be8faa9283223 +size 4629 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared.hpp new file mode 100644 index 0000000..a038392 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff5adf6ba04373a6aaefb0c2af601f8eac2ad4c5e4330ee4b5349c276e515d52 +size 707 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_array.hpp new file mode 100644 index 0000000..21dca82 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd5045e09e85281aec105e6f00c1e9313774944968a46017505525876ddaa90e +size 1715 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_object.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_object.hpp new file mode 100644 index 0000000..a1240f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_shared_object.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:36ee2444e84f9d7aca2bb70752a62989f029c3d763b0092ef9173c602c13223e +size 24618 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_unique.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_unique.hpp new file mode 100644 index 0000000..af677a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/make_unique.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f4304977dc2590e7a4147e1f14dcdaeff5a3bf3bee127d4c0af33c62bc7b64f +size 2103 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/owner_less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/owner_less.hpp new file mode 100644 index 0000000..39ab2a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/owner_less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ab6f311bc56a5bc1ff7cc1de21b45bdc05db942673a8b58ca94bfb0c08da344 +size 809 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_array.hpp new file mode 100644 index 0000000..625c70f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb2e656079efc11f342b067b829912e0995019b9608c7d95ab6ec84fda19cb7e +size 3301 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_ptr.hpp new file mode 100644 index 0000000..d6b9c48 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/scoped_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75c131252384b08dae1447bf37eeab27c152c0a0ece4d42b198249b06d10fc6b +size 4082 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_array.hpp new file mode 100644 index 0000000..a51befa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:56d21db2a7a79f319bc5cb74a950c3707b569d1c48ca696d8180f2e2acce19b2 +size 7250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_ptr.hpp new file mode 100644 index 0000000..0a57f7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/shared_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92c1999a29e2bd2208cc8562ac8c9ae579e9ff10ff7580855dbcd564906890d2 +size 30462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/weak_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/weak_ptr.hpp new file mode 100644 index 0000000..e7a486c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/smart_ptr/weak_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a6de130321915716fc59520123d69327b13705580459095eb36860c34d307a82 +size 5987 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/static_assert.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/static_assert.hpp new file mode 100644 index 0000000..530db74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/static_assert.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:52fb9e1150bfb923716ee72dd5add5045a2a56ee100487d0b42f80746e6ed49a +size 7243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/swap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/swap.hpp new file mode 100644 index 0000000..becfd9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/swap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:78f53231db6d94208b9cdc388659d7dec9576f7a55f43957c69c0b2d2090e106 +size 374 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/api_config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/api_config.hpp new file mode 100644 index 0000000..73ab17b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/api_config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa6ad663585b883f33bf73f4e181a69fab2b7d2aaf19cc062d9f240c3040e0e4 +size 1832 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/config.hpp new file mode 100644 index 0000000..1ed0aed --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb7bf37b73356d4b796d8569173af1f394244d8fe6805e15b7aa16db8448e6e0 +size 1771 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/cygwin_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/cygwin_error.hpp new file mode 100644 index 0000000..16f25b6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/cygwin_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77c019881d71c69692c6536b9487dee9122d00e3ac62dcfe6ae0775fe0e129a0 +size 1552 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/config.hpp new file mode 100644 index 0000000..87bb578 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e0fd47115f577879a684f1afb3670a97495995e664cc1c2d292cda14098507d +size 1466 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/generic_category.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/generic_category.hpp new file mode 100644 index 0000000..d9e8477 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/generic_category.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:35e50c753861f80eb8ef94e4d6548a0657329dcb7f9b55fea7d60c8bc8471513 +size 2200 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/std_interoperability.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/std_interoperability.hpp new file mode 100644 index 0000000..77987d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/std_interoperability.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d79c1b66a980ed588fa12037de1f4229d043769593ece4ae54159c52fe51857c +size 3707 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_posix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_posix.hpp new file mode 100644 index 0000000..9b10ee3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_posix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f047811eab148feef20342a5614b85211abfd154ada441fa65abc8f4f9077814 +size 3200 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_win32.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_win32.hpp new file mode 100644 index 0000000..0e731c2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/detail/system_category_win32.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a44a7612eb7e787e841d5cb43f8110af5bfc7349edb2dda21158a2bb7756a5e +size 11422 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/error_code.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/error_code.hpp new file mode 100644 index 0000000..78ab61a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/error_code.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1ab7aeb2379a6435493e1e9498d99290ceffe23d555d301286b4fe10aafd3e3 +size 25483 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/linux_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/linux_error.hpp new file mode 100644 index 0000000..dd21180 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/linux_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48af768d6ca5a232a6aa65ec87b08fd6623d887900416cd7f7a7eb72d50200e2 +size 3415 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/system_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/system_error.hpp new file mode 100644 index 0000000..8e7e4eb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/system_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db1addf319105eb125aadbaca29fa325deb8d1bfb793cf4bd4760bda052419c6 +size 2630 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/windows_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/windows_error.hpp new file mode 100644 index 0000000..a3ee6d5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/system/windows_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b23b2421973448bb124b4aa202d4b20f48a1843c49449071a177096055d9f8bf +size 4930 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/throw_exception.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/throw_exception.hpp new file mode 100644 index 0000000..da61549 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/throw_exception.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0434f7e4f4ab54cfef6f50b7df0d735188e839f1cc6fa8c80b30da97a1db2cc +size 2994 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/detail/tuple_basic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/detail/tuple_basic.hpp new file mode 100644 index 0000000..857f6d7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/detail/tuple_basic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0edeb48bdd9ac3b10cc9c78cae6bf0b4027a941623b036582ca41bdc453a04d5 +size 32332 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple.hpp new file mode 100644 index 0000000..6718932 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6098f93fcec9b605d5c12e252c719acf28f23b00cc4803ef43e1d7782015095 +size 1946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_comparison.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_comparison.hpp new file mode 100644 index 0000000..e614171 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_comparison.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6cd6837eea28cb3214dd1c3da0af6170cf8cd39e21a45e626942b86068d0caf +size 5578 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_io.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_io.hpp new file mode 100644 index 0000000..faef095 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/tuple/tuple_io.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b76f74a3793489c9ee24440bbcd84ecfaeb698c5e2d318970a8304c2db076436 +size 9030 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type.hpp new file mode 100644 index 0000000..8d18af4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c4b3b417c1c11424334d738032aa405b6d514fb97eddc92b166bba22c9fd16c +size 481 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits.hpp new file mode 100644 index 0000000..1d9b2be --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:963988949b24c3edb1304bf888d1bf08f3fa8329f6ba04f3ff13131bf4fc2037 +size 7051 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_const.hpp new file mode 100644 index 0000000..5771f1c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0097bd4b39041632548f9f7951edcfb229b908969120972560123366f3a114a +size 1439 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_cv.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_cv.hpp new file mode 100644 index 0000000..188e8a8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_cv.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1154473b47a9759875fcad90a66169783eef336226017c3a9f3b496a4331de3 +size 1399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_lvalue_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_lvalue_reference.hpp new file mode 100644 index 0000000..0f3e33c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_lvalue_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1392be5d4821be7826c6cbce8658bfb8626a30f09d8a9a2480b31a7e23a6c40c +size 768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_pointer.hpp new file mode 100644 index 0000000..07dfd5d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e679679dd0a54beba402a01d5784f8fcf11463b19c522eace9066925d759f45 +size 1501 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_reference.hpp new file mode 100644 index 0000000..a979c52 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f290cfa21db9b4a74cb034e1ba9acaf7fc1cc41697d9c374938306bdd411d579 +size 1709 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_rvalue_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_rvalue_reference.hpp new file mode 100644 index 0000000..ad5b4d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_rvalue_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:63434c1016fed7cd6101cddc9577aab469f53958db1f1808d07b8ff0d3608c57 +size 2395 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_volatile.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_volatile.hpp new file mode 100644 index 0000000..0e7d600 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/add_volatile.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7cdb4a75b87025798455461fe1b0f5228091fb95765ebc0f281ececbb130e9e +size 1424 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/aligned_storage.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/aligned_storage.hpp new file mode 100644 index 0000000..d4c9b5f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/aligned_storage.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0760e2fc0ad37e21931ac91b9eac9d339ef5d829d148b9cf89d56835903763ac +size 3348 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_of.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_of.hpp new file mode 100644 index 0000000..66e6aa6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_of.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:18171e6f8c694c62c550333b15011231890703be990690d975a6a4d8e2173af3 +size 3565 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_traits.hpp new file mode 100644 index 0000000..0786d7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/alignment_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97bf6a4fcb2d3cfc0da802afce8cd21d9e0c3fc5b98d554df11a65bd456072de +size 573 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/arithmetic_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/arithmetic_traits.hpp new file mode 100644 index 0000000..7aa5e3d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/arithmetic_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d003dfd952ba7ed2f8157736c7e72be252f0ebad9c9dd47ce3cc00145d4e27e8 +size 862 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/array_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/array_traits.hpp new file mode 100644 index 0000000..ffdc33f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/array_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:12ac0c0aa3cce1bd04f0a34aa13bb150eac12022e34a1f6766b9c893d9ef530a +size 569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/broken_compiler_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/broken_compiler_spec.hpp new file mode 100644 index 0000000..234a35c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/broken_compiler_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a551ec36af12738b762d70b0191336f777f451c86860422600f761af89bd92e3 +size 724 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/common_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/common_type.hpp new file mode 100644 index 0000000..bd63cc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/common_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:720c62f5a497101034c6b6cbb14419413c14725c1188aa80a856ec87fa118f1e +size 4555 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/composite_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/composite_traits.hpp new file mode 100644 index 0000000..223e97d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/composite_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7cef5cebba55a7158d06a47b28f50e361dc179a34d38a6e532ae95b757eae72a +size 1001 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conditional.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conditional.hpp new file mode 100644 index 0000000..b1d5e75 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conditional.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72744e48a710e2645ecc6a696b150c63d45507cb33b8090fbc7cb8827b2a3ba7 +size 843 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/config.hpp new file mode 100644 index 0000000..cbb247f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b7723f7f3c33829098ef1956eb9176af8800eaf3a9509aa8f5b38eba1565ee99 +size 708 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conversion_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conversion_traits.hpp new file mode 100644 index 0000000..d96f79c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/conversion_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7cc329b38b6b05eae5d519e230990961259962954142d815e517d8d58aee1c0 +size 658 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/copy_cv.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/copy_cv.hpp new file mode 100644 index 0000000..3f48296 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/copy_cv.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4c0fdb1476d4b7dc493fafbfe450196eb0891327043305485b54d33d0605fdb +size 1058 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/cv_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/cv_traits.hpp new file mode 100644 index 0000000..1528561 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/cv_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db4e332ea3ddb694d461a56860b532b9c2794099504874da2226f38398cd8122 +size 994 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/decay.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/decay.hpp new file mode 100644 index 0000000..c96cb1a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/decay.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd5243a2596de72a872a6e0991c244ed0a7d580ec7cc3aedbb43cf8f8fc2f9c0 +size 1496 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/declval.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/declval.hpp new file mode 100644 index 0000000..6da6bb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/declval.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:661a695996abdf2523d92fa1d7aa90b676d3439bc7a5bd4c993705b579b2a235 +size 1899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_def.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_def.hpp new file mode 100644 index 0000000..31a260b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_def.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:334a74db753ffc72ed97ca3eec2a35e16ab8d80ebaf00cfd8e478c09abb78c72 +size 4762 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_undef.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_undef.hpp new file mode 100644 index 0000000..a14e9d6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/bool_trait_undef.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3491b5db3254634b5385cf17de1796a265164d93920fc73d91eae0de24709ee +size 929 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_arithmetic_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_arithmetic_type.hpp new file mode 100644 index 0000000..cfedb15 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_arithmetic_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:339d69604c3c67b9733f2bf8ea927bc06d35ed42a561ea591e1810bd63468bd4 +size 5585 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_type_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_type_impl.hpp new file mode 100644 index 0000000..fc3f145 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/common_type_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f36fccbd789530c29571cde32a9e5d751eb90af002dd64ac2875d318fa5588ec +size 3028 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_member_pointer_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_member_pointer_type.hpp new file mode 100644 index 0000000..6bfa36c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_member_pointer_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3c9e8c0d5701d30bf51d1dd1bbfcf72522cf9d497947f525f5b0218a82cb6e5 +size 2823 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_pointer_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_pointer_type.hpp new file mode 100644 index 0000000..e307c3e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/composite_pointer_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d90268e6ccc39ecc612dfb63d50a94e94b370a400adfa9c5afd96831207d4e62 +size 3624 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/config.hpp new file mode 100644 index 0000000..e299c55 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fa1533b7cbdacf56c6dd58ea5b14365fef82dfeff04afe12be78c512da826d2 +size 3250 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/detector.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/detector.hpp new file mode 100644 index 0000000..87a4a5d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/detector.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fc85d1dd8021581645c53ff9bf1bc5f5284dad1aa42845218230d40e3fbccdc +size 915 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_binary_operator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_binary_operator.hpp new file mode 100644 index 0000000..4ad2951 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_binary_operator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:914d6d0e671cb49779e3aa306a64430ec970b237dffb69ae6cc94815042c3906 +size 12269 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_postfix_operator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_postfix_operator.hpp new file mode 100644 index 0000000..8e63c9f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_postfix_operator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bcf76d8b4e813ea3c8b55074c3de3a858f3b2582b40fca8b7abc733d8da486e8 +size 9991 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_prefix_operator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_prefix_operator.hpp new file mode 100644 index 0000000..b6c47ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/has_prefix_operator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9d1d8a48ba53e0b1999c021e73b97ce41f236bfe22ac429c558ad29afed73dd +size 10881 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_and.hpp new file mode 100644 index 0000000..1990d24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d8d4b441731865ee06d184101fe1ef8c06c7246ac9c5ca1d92a515a1f55e8993 +size 1190 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_eq.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_eq.hpp new file mode 100644 index 0000000..4aa4099 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_eq.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a2c78f1a567719a17dc1f66377611a55f591e32413c87b7dfa7d67f037813153 +size 1165 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_not.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_not.hpp new file mode 100644 index 0000000..62cf6c4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_not.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a286473315334ded917fe458898f8632614f91d5a05271c7f09d7ae4f3665be +size 971 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_or.hpp new file mode 100644 index 0000000..2ffdf24 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/ice_or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2792efb55ed5b4fe2c33e92126f8beed50151f0f5db2c3003a5f13113c1572bc +size 1192 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_03.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_03.hpp new file mode 100644 index 0000000..5877393 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_03.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b3e500269663eca5a3b03122b36be312bbf46e9b02c2e82d96841ce88a25a31e +size 3066 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_11.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_11.hpp new file mode 100644 index 0000000..5e21e67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_cxx_11.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066e84112265fdb38f4b789ff823496b1d1247096a16bf63434180418521439c +size 26932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_msvc10_fix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_msvc10_fix.hpp new file mode 100644 index 0000000..88f1cc1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_msvc10_fix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:088bed0e2d8398dc0c6809dcda27c8cad17513b067ffcbfacedb99eac3be759a +size 1925 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_helper.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_helper.hpp new file mode 100644 index 0000000..02062ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_helper.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c103dc55ee096b1256f28eb0b4c298de6f4d37b5f29c9db2cfad7cbc2c1dde6b +size 37000 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_tester.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_tester.hpp new file mode 100644 index 0000000..df18f50 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_function_ptr_tester.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da772b6e1302da3a8d388773015b6b43e1ee798f0a0db35b3e092cef6b76ccf8 +size 40432 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_likely_lambda.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_likely_lambda.hpp new file mode 100644 index 0000000..3c46f77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_likely_lambda.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40dba62b0a746a5a83471c91739445de1a919c3eb466e1de28ec176a612ecf93 +size 2574 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp new file mode 100644 index 0000000..0117b6c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fd83ff71d05e05b57811da04d55e054feb72ae59ebdb48335425bfbefa541c97 +size 145750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp new file mode 100644 index 0000000..a160650 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81c6b638e79b363c94da697b40219638fdf929deb004f2ab2fc1c19057bfdd19 +size 171760 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp new file mode 100644 index 0000000..9bcf9a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94f1e9604d9e0791ed6392ae64ed761cf6daddd7715a2c2e96c8d88e5b309553 +size 3665 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp new file mode 100644 index 0000000..02019ad --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61cc2ca915bb307d3a4d30820e623f83fb856158825077b0355e6ea08341a857 +size 36246 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp new file mode 100644 index 0000000..ed82485 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe5c2a7a85db6f37f0d5da916c2501c9c094fd6eb7b7e78fbf39e399032dcc3a +size 3510 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/mp_defer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/mp_defer.hpp new file mode 100644 index 0000000..3265bb3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/mp_defer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cbb1ce339acebc6bdf6082f8419b03dced71de0784c5b5a371e98ed31fcc5208 +size 1359 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/template_arity_spec.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/template_arity_spec.hpp new file mode 100644 index 0000000..b5d9188 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/template_arity_spec.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39dfd8b7372361f5fec566f46bea85d5a29456d6c3a6de5a017db5c6d58fd673 +size 535 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/yes_no_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/yes_no_type.hpp new file mode 100644 index 0000000..8ca4da7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detail/yes_no_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8918499722cabda0f0b27436fda75b240674c610b4338fbfd32bca073b83f655 +size 726 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected.hpp new file mode 100644 index 0000000..d86f88c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa2a63ed5cd905b54157b4639da8ee3d1d73eb11f3715fdd32d8901502da3a1a +size 569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected_or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected_or.hpp new file mode 100644 index 0000000..b6b732a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/detected_or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d432cb13b2b59769a768f671dfe5f8c128b3f3c4dc64e23ddae3d22261be70fd +size 670 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/enable_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/enable_if.hpp new file mode 100644 index 0000000..4a06ace --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/enable_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a9aa733f2c0abdcc2f0adc282525fbb7b465a053971e286287a6d9b5de2cb1a +size 829 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/extent.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/extent.hpp new file mode 100644 index 0000000..ccfc7a9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/extent.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ed6749f534bb9ec9ebf73baaf88e5b4a24e410c3599fd1806d6aee3e5340c19 +size 3747 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/floating_point_promotion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/floating_point_promotion.hpp new file mode 100644 index 0000000..d670a37 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/floating_point_promotion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9963916db2480641dbb71ae94d5ec5abe91eeac58a45aeccb3092e52626113b +size 1071 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/function_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/function_traits.hpp new file mode 100644 index 0000000..d850270 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/function_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50708cb1324635f5fd6eb87a3143423cd1f27626f045267baa5038fe634eb6a5 +size 4801 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and.hpp new file mode 100644 index 0000000..3789807 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd711f4d2b9250f180320b742d562a0707cb1f32ee42a6717cb45a85d7cc3e79 +size 1572 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and_assign.hpp new file mode 100644 index 0000000..ef80a65 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_and_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7fa25d79d2123b3cc469a090ffedd45b3660fe20fa9ceb63d9dfae793a72c19d +size 1841 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or.hpp new file mode 100644 index 0000000..fbd61e8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e5ddd85e6f933416819fbd613b8eb36a4758a1f07eb3c40383fa5e41c3fedb1 +size 1569 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or_assign.hpp new file mode 100644 index 0000000..c1af129 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_or_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61fe12aef4c90256d0d8d512e68f13c6ae8afe43cf8310227a7a3aeed11a966c +size 1839 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor.hpp new file mode 100644 index 0000000..1057a03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fdd35c345e22b718742483943819bc13b64651e76faad05027ae7b3e8d9e1413 +size 1571 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor_assign.hpp new file mode 100644 index 0000000..014eed6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_bit_xor_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1fcfdedbab2827e36aac30d19ccb82a502f014ef3b287ea9301b1a07daf3632d +size 1842 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_complement.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_complement.hpp new file mode 100644 index 0000000..09f6767 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_complement.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b2eb66d57039fb2a8a9bbce6d6b600309d7590f99611530112887f2a5c1e83de +size 936 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_dereference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_dereference.hpp new file mode 100644 index 0000000..5de7bfe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_dereference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2abe4d1d7c4a8271264f30324fc29dba7fe78596b13544388b53946de22efaea +size 16135 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides.hpp new file mode 100644 index 0000000..11f0d35 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55d230acee9fb04bfc9c98fdbfcb7e49f2be54d3a997a9d7106b44b2ad3ea6a6 +size 1156 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides_assign.hpp new file mode 100644 index 0000000..93d637e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_divides_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa96c4a73f5a75973f0d2a5c035d08894a5a72495535c6122503885dba76f2b +size 1513 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_equal_to.hpp new file mode 100644 index 0000000..5efef4b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:64ad5dcd147ef5b07aadacde986b1ff9bb07c949c88b6c53627dd886e6ebda3d +size 1762 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater.hpp new file mode 100644 index 0000000..cf97de5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5f5545ac3f191f31f698e5a91374292fa7f7cf101998b50c23f473d21172368 +size 1756 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater_equal.hpp new file mode 100644 index 0000000..ebedf93 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_greater_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:62f86c3cc267dff31af92eed419276132b0e1bc527c7306e7d8b25b220c86549 +size 1775 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift.hpp new file mode 100644 index 0000000..862d0a0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ff2ad89dd0d02066083614042214ae707a2c73aa5b069ae71feb23146ea752b +size 1581 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift_assign.hpp new file mode 100644 index 0000000..3db040a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_left_shift_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c061aba22a4b14e84de5f1e6a4b5b7ea1f185da33cc248aba2a81f419573dda +size 1851 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less.hpp new file mode 100644 index 0000000..0efa19c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de193961ed58d66de59b40d1a03db8e81e8d1f41c9ec1504de9f907e6c6f1d31 +size 1750 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less_equal.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less_equal.hpp new file mode 100644 index 0000000..9d32ee6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_less_equal.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82c395c2cfd84267272c9c6db924366ec897ee939f5ca3fb0b9aeb41d52fc34c +size 1769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_and.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_and.hpp new file mode 100644 index 0000000..b74eae0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_and.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dad29f6fc16da202b65e5098a3fc15b9e0826786021cd16d508e29eab740a094 +size 1212 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_not.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_not.hpp new file mode 100644 index 0000000..0423c46 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_not.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af478f0ba0658464f3b25909b6903b370de899c39d8c66c40e477a3c45d93755 +size 998 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_or.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_or.hpp new file mode 100644 index 0000000..3d27292 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_logical_or.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:393c30fe008d3e150213f59c44baeae5cd395ea5a065cf7a8b615b951067386a +size 1208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus.hpp new file mode 100644 index 0000000..14398f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:103f622be5cf69f61efc623da83d0b3524cbd39f5af60acf1d68f9e9f3b33f94 +size 6502 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus_assign.hpp new file mode 100644 index 0000000..39afe20 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_minus_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01b852fe1c27a5b0e474b3232a92cc949d4373afa5dd17afb3b342ccbc99e2d4 +size 6791 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus.hpp new file mode 100644 index 0000000..8ad960b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8af0dde137bbed2e30d9cf8df05dc41a1dfdb260a3a8c4c4b3d676dd534bbc67 +size 1570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus_assign.hpp new file mode 100644 index 0000000..9814fa2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_modulus_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:205f4ad2acee9d8cbc8be653d97b7f3f718360296b3917cc8e9d93f7bb3bf738 +size 1841 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies.hpp new file mode 100644 index 0000000..09ddf25 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ddb055bed7b7151bbf2148a30c15689d0136108a53dd15044327f8c51e4e51ea +size 1162 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies_assign.hpp new file mode 100644 index 0000000..99d25d9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_multiplies_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57274cff15b0b2f2971b2340cb1406e1d742863ee9e75d1a91370ca1e2be2532 +size 1521 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_negate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_negate.hpp new file mode 100644 index 0000000..4ce5155 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_negate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b7dfeec82bd923d419afe3df8ae69e98adf239a7d1e1bc8249b465f6a0a00a8 +size 731 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_new_operator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_new_operator.hpp new file mode 100644 index 0000000..ef6283e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_new_operator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0704e59cd2c3fd5319d0e42e97c0f15ade282c08c4d2c62d811e097e3726dfea +size 5166 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_not_equal_to.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_not_equal_to.hpp new file mode 100644 index 0000000..7be04f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_not_equal_to.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e9c904c44a907675c41322aa98df567c929d855523c2ced5051053abea6af8d +size 1774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_assign.hpp new file mode 100644 index 0000000..607b136 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adb9656fee502aa821b6767e094927b455a194b2c95b1a0fcf99844059af91db +size 3766 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_constructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_constructor.hpp new file mode 100644 index 0000000..02fa6fc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_constructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b20a0cdb1ef804b48ae6426e92aa440696f24e1599b0c783ecf387cc77a0b6e4 +size 2633 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_copy.hpp new file mode 100644 index 0000000..38688e9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d75487a5b5b186538775cacf0fc6b1323521593c452a9ff9a235e70309a65dc7 +size 3045 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_destructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_destructor.hpp new file mode 100644 index 0000000..be1ff2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_nothrow_destructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f675d095ecb35328dcca1785742ba80d0ebd462be9974d4c4de43f1c680e77a +size 2204 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_operator.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_operator.hpp new file mode 100644 index 0000000..864dfbc --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_operator.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adff5a7d8b41587530d9942b337b1c79a5f043e0b40c5de2ef313cb2edc18f1a +size 2282 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus.hpp new file mode 100644 index 0000000..15f0bd3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45484449ad255131f7768c5bc36ba9fd58595ef67d501fb72c488ae7a4442821 +size 1800 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus_assign.hpp new file mode 100644 index 0000000..aa93cb2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_plus_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9cc075a9dce9df5005d2c883fb74f183176983bb49e140e73bfa74c8a3efc8d8 +size 6873 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_decrement.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_decrement.hpp new file mode 100644 index 0000000..2caf98d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_decrement.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9b3eddfe41b275f7828671b4f1ffa7e24a66b482d4394a683c9140b4236b88e +size 1932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_increment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_increment.hpp new file mode 100644 index 0000000..9f25634 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_post_increment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e32e297f5cb824405d491b897b1909fdaff885933bea88160b3df40e32dea8a +size 1932 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_decrement.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_decrement.hpp new file mode 100644 index 0000000..9df91f4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_decrement.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0246c6468400753b51d0af290be2c0f89377f9771b55180d532acb8b4eddb85 +size 1922 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_increment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_increment.hpp new file mode 100644 index 0000000..b8c769b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_pre_increment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0cc939dfc662a9c35c6e47e56503d1189a5dd64efb9764379e26f334836137a +size 1923 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift.hpp new file mode 100644 index 0000000..332e10f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:95a1f03d19e116b3a61a5f5aec91b030919a9cbe989c8eb8337dce8dea4c4b17 +size 1584 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift_assign.hpp new file mode 100644 index 0000000..0b8b28a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_right_shift_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af17bcb6ada2a8535d413451beda6218693c52dd50d3a52a991a3adc785879be +size 1854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_assign.hpp new file mode 100644 index 0000000..37afb8f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7346975c8016dbfbfb284070cf877ada39fec29bc3ffe2135f7b9b9ebd04075 +size 2208 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_constructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_constructor.hpp new file mode 100644 index 0000000..a49176e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_constructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68e624633256edeb4c7642a656b8b10b4ca30bc22a4653bd0d9041ffc1a30e78 +size 2233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_copy.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_copy.hpp new file mode 100644 index 0000000..26d03c5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_copy.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1c456dfc611c41224cb86ed52cdc504240b5676b15ccb01907b1677b815d8a4c +size 2417 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_destructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_destructor.hpp new file mode 100644 index 0000000..f20a8dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_destructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7ab268fbadb07751ec8af0c41d9d08e5248f62a33fcad0b36ba53a8cf066065 +size 1683 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_assign.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_assign.hpp new file mode 100644 index 0000000..86f7a10 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_assign.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ab68b34ec3753ed849c6bf21bf03084ee75a9288bc59df0a8b5a6eedd8392170 +size 2666 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_constructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_constructor.hpp new file mode 100644 index 0000000..9fc0e55 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_trivial_move_constructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:92156eba953564588dda4e8ad9f85838ecde7a215421c5cbbe1e57385b498903 +size 2939 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_minus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_minus.hpp new file mode 100644 index 0000000..270a5ff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_minus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f078b70f3a3fc3d28f37226850e1159fbf7f23e3e2c0b6fd2b55be04e1ac0669 +size 746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_plus.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_plus.hpp new file mode 100644 index 0000000..f5bb9da --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_unary_plus.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:398bf6db3ed373117bd9b63594b7d8a3e87aa108ec5527660af92ab86a6c886a +size 690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_virtual_destructor.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_virtual_destructor.hpp new file mode 100644 index 0000000..4b09f87 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/has_virtual_destructor.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5fd143c99c3ce4e2850e511e96c316c7c59fc337a71968166bbb419321524d5c +size 901 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/ice.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/ice.hpp new file mode 100644 index 0000000..b35a765 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/ice.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f8ec35f2c11fa849e9ce04164ecafe9108b32399fa9009f7c48586bed8d4d79b +size 768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_constant.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_constant.hpp new file mode 100644 index 0000000..560b3ff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_constant.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc7f03edbae4296217543685f0ca327a6ed729268377b62026b57b8bc6078fb8 +size 2544 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_promotion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_promotion.hpp new file mode 100644 index 0000000..f5fa10b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/integral_promotion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1728cfec0f8819e5f9fb798024c37e74870d7a47be9b5c5b9e4f9935eb38a0a0 +size 6262 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/intrinsics.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/intrinsics.hpp new file mode 100644 index 0000000..ae459f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/intrinsics.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:099331191588a8ce92b244819ac3294f0d8ac052f77b6ec6ddf9f95758606c3c +size 22016 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_abstract.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_abstract.hpp new file mode 100644 index 0000000..8d56fd9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_abstract.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a60091f7e3077f187ff7e1e67ad59e1a8a1d7f03f44eeefe16cd09f645d5981e +size 4501 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_arithmetic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_arithmetic.hpp new file mode 100644 index 0000000..bd50dca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_arithmetic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f937c0f8958d61efc196a30838fbfc085e6ed6a862fed86bec42e671e5ebe7f3 +size 778 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_array.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_array.hpp new file mode 100644 index 0000000..e349461 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_array.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69816daa883727a251d0b8f4bce93fb1108a1b95706d54fb40e3beb9a5785d81 +size 1751 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_assignable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_assignable.hpp new file mode 100644 index 0000000..273833e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_assignable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:490a8e1ed5a76a3f77b5acdc22d2efc04a711aec867e070dfa5eafd0391b7603 +size 3925 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_and_derived.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_and_derived.hpp new file mode 100644 index 0000000..fa9d4c3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_and_derived.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:624d114045eccafa87df76bc041b223c7cfc4bca776f81e0bc90eb94ce03a9a3 +size 7993 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of.hpp new file mode 100644 index 0000000..02bd091 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86715166c7ffb4dfc41d8f6ba3d3c87c8e0960ef36254d25324c44df4aac8172 +size 1500 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of_tr1.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of_tr1.hpp new file mode 100644 index 0000000..3481e1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_base_of_tr1.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:45489c82acee21a4cf30783ebaa422ffd0cd80f5d2f0bc8753f94a3436cc0196 +size 1486 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_class.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_class.hpp new file mode 100644 index 0000000..b476336 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_class.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db5ddec8ad15395bd4383f4265adad1f2d4e3cf51575a3ba2e4c8ebec6f5f12d +size 3595 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complete.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complete.hpp new file mode 100644 index 0000000..02adf8a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complete.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5467734a28b3e70f19901e40dbc52b911d49db78ad5b7d6030f40d40e16de939 +size 2796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complex.hpp new file mode 100644 index 0000000..02b7ac8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_complex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:544480f21cd386a339efdeb9bde04e7c7769818c35fb124ade8db8bb656c455b +size 952 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_compound.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_compound.hpp new file mode 100644 index 0000000..5387861 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_compound.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76ca370248367ae8a31fe021bc86433742f2d6f39cad8d716dcde45881c666be +size 846 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_const.hpp new file mode 100644 index 0000000..d5e414f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33dfdd4f82b6d9abec1a98fa2901b3112d4fba4db11e06a6cd1502274f9cb566 +size 1628 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_constructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_constructible.hpp new file mode 100644 index 0000000..9592da3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_constructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7afddfd2d42f27303b8cfeb24887e8dcdf014d934a525e1e5d3cda2154e0dbe1 +size 4343 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_convertible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_convertible.hpp new file mode 100644 index 0000000..ae8936a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_convertible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22f80da4fe9cb179615339d5108f0606109f6c665fde7b0d5b2c79a333051303 +size 18660 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_assignable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_assignable.hpp new file mode 100644 index 0000000..7fac34d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_assignable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbc0fc202c05a2bcedd1bda3e2354b2913d28363f71dc62959e48ede43b146a3 +size 4904 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_constructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_constructible.hpp new file mode 100644 index 0000000..9af9d2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_copy_constructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dfaee898aa7a02c6d8297c47ccc2ba076939a8cba833ae3c022536395c94bcf4 +size 6813 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_default_constructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_default_constructible.hpp new file mode 100644 index 0000000..299c3c1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_default_constructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:afa995ce9d71a0568b96b7dd5ae18a899a7744b25af0f56127044253c9810977 +size 4519 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_destructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_destructible.hpp new file mode 100644 index 0000000..17e03bf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_destructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:43faea468650f1ce5e19c2c380f028917feb778aacd192891946ff6826d6b217 +size 2565 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected.hpp new file mode 100644 index 0000000..a8214b3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11845c95bb85844e98c37fd29c4aab3b8a9dd40cd0d31f2341e379300253d15e +size 752 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_convertible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_convertible.hpp new file mode 100644 index 0000000..f36257b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_convertible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:40d660116b3e93b60c0f245d5a9447a6c32afc5742a3d0b76697d95d30fbeaf4 +size 815 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_exact.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_exact.hpp new file mode 100644 index 0000000..7a8230a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_detected_exact.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdd5049a394eee756703a7c401d419d495d5a518116e9662a31915b121ef4aa2 +size 796 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_empty.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_empty.hpp new file mode 100644 index 0000000..9e95bd5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_empty.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:68d77f7444950e753f59f73ede2f1b808461062fc39469a374f12ad8ea649d82 +size 2998 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_enum.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_enum.hpp new file mode 100644 index 0000000..993d475 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_enum.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b8390edc5a7b81d1beb69058865eae9b2add8672069bc08afa10328a79e0a9bd +size 4986 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_final.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_final.hpp new file mode 100644 index 0000000..9759690 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_final.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:508b8b7ff4512402e6e5e45525a7d58419e711d33111336fd1c13974e2c49063 +size 868 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_float.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_float.hpp new file mode 100644 index 0000000..727fb60 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_float.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21db01f64bfdd9ee24d57a0191814601a064ea05bff5f6b1f6606d9029619fd7 +size 789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_floating_point.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_floating_point.hpp new file mode 100644 index 0000000..a1d68b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_floating_point.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8a9d06be1269ab736f90908dbba242f998c4e4020add765ae7b669506ce2ffa0 +size 1374 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_function.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_function.hpp new file mode 100644 index 0000000..45cd3d1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_function.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f2b0be866c26e43af6d808c67b3f8146078a6be5284b17f198eb3fb41b98947 +size 808 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_fundamental.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_fundamental.hpp new file mode 100644 index 0000000..6e967b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_fundamental.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8cf3a3ac24d17d6ae55b71b97efe4347b517c88ada49aa64f26c928011083ebe +size 994 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_integral.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_integral.hpp new file mode 100644 index 0000000..ac72f2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_integral.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c7b11e7058b74413d9934cdf64b0e3ab354cb88bc1681899c8121a4cada0425 +size 3837 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_list_constructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_list_constructible.hpp new file mode 100644 index 0000000..b6d78b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_list_constructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b0b1d66c18b4736cf84cbb3259e0167f27319ea29551409f03968839f826912c +size 1746 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_lvalue_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_lvalue_reference.hpp new file mode 100644 index 0000000..d122fb6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_lvalue_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f28f2092d4af57d3b42a452dc46e34bf5a21ab97a3e30e4828c417db4a8ef2c8 +size 2010 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_function_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_function_pointer.hpp new file mode 100644 index 0000000..f293a2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_function_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6621df4e09e3480f9aed3ca4f50fb9a2a9ba3614a04406c1ab926e97fa49fb16 +size 825 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_object_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_object_pointer.hpp new file mode 100644 index 0000000..7346d3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_object_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b58f49769dd5e3fdafbd2ed104fcde9fa29f9308019a4d8f92ce0ff3eec51139 +size 839 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_pointer.hpp new file mode 100644 index 0000000..4629930 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_member_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5291cf985ca7549400dfd82ecfb03c3e09c00ebc81e0cae22d75759081046b36 +size 1967 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_noncopyable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_noncopyable.hpp new file mode 100644 index 0000000..4413ca0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_noncopyable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bbe939fce07ccb45e32aeb106a7f2fbd2c0cb8e005ec86076392599eab1b8a1 +size 1067 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_assignable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_assignable.hpp new file mode 100644 index 0000000..8ebe498 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_assignable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d3b3d460221f8de6e5b2d16e59fc74d0bb10ac530212cbceccaa326738c8e7c8 +size 3964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_constructible.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_constructible.hpp new file mode 100644 index 0000000..16e0a2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_move_constructible.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6863a9bf0048e64b6e67734868292758e4eb9fae2ab85b5e3b2d75b57712e156 +size 4043 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_swappable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_swappable.hpp new file mode 100644 index 0000000..5a96d65 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_nothrow_swappable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c73bda83bafea169f3cecdcf7859cc52fd1a7c636d642c1f6cbd11487533536 +size 2405 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_object.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_object.hpp new file mode 100644 index 0000000..aada4f7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_object.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff789c4695215ca4f6b403c8cc4231ff489ce799b8f1aca4317875c7b4eebe8d +size 907 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pod.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pod.hpp new file mode 100644 index 0000000..2b8f701 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pod.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:75f2db547a494219e7584ac998dd84486e6558b7b804fcdb273bae5d3876693c +size 1809 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pointer.hpp new file mode 100644 index 0000000..ccead2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a1d4f1c691928497519fb591c875d6661a5e58b826a8946d9e7ad8ef0392878f +size 1899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_polymorphic.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_polymorphic.hpp new file mode 100644 index 0000000..6d4448e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_polymorphic.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8fac15eee3da5df7aecb179f55504ff4ad0848a8c12efb04bc77a2a0b9dc312c +size 3187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_reference.hpp new file mode 100644 index 0000000..bce852d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:068dcf0a2c20efa45a587ad6c9b8d331f700d153cf35461da3d386fae1d10e35 +size 938 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_rvalue_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_rvalue_reference.hpp new file mode 100644 index 0000000..62e2017 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_rvalue_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48a7ff6930da2d3e6a79042f8105f8c70a6f39c6f202e98b4961f7b5fa5463f5 +size 981 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_same.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_same.hpp new file mode 100644 index 0000000..3679ae8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_same.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48296c6d7fffa9107258006507c4fd54f4dd15ac4de4053917e8bc3d2048e975 +size 1509 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_scalar.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_scalar.hpp new file mode 100644 index 0000000..969d88a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_scalar.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0b1de36f8f54fbd342fae4dd7ce27fa26887e1150828121c3cb4618ed08287a6 +size 966 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_signed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_signed.hpp new file mode 100644 index 0000000..caa675e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_signed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6989bb571382565a633ee0e1afced2645a17aa146a011e9453b875e103f534c5 +size 6648 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_stateless.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_stateless.hpp new file mode 100644 index 0000000..5966a99 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_stateless.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a62f76c91a3a49cca0d3852d3b339e8aac1d2e73d20cf8fcbc283bd0d4f0991b +size 1127 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_union.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_union.hpp new file mode 100644 index 0000000..eb19cdd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_union.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa7b8d4e60bca1109e96c301e6fc1f379d1056aeb62a1ff659bba8da3d8f5459 +size 1075 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_unsigned.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_unsigned.hpp new file mode 100644 index 0000000..fc843c6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_unsigned.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a49796d168efaf99123d72f2a10ac8b8f097d51a5ffbedb609f11c148d94ca21 +size 6768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_virtual_base_of.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_virtual_base_of.hpp new file mode 100644 index 0000000..cc507d4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_virtual_base_of.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:850e948036e6164395d795eddf05a8fd56fab4213643b9d54219461ed79d0df6 +size 6126 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_void.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_void.hpp new file mode 100644 index 0000000..ceb4fa4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_void.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e043155d858ee74fb856cfb228922e4b9fff5fbe6dc0cc4f3ad28bdf55ba2aa +size 890 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_volatile.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_volatile.hpp new file mode 100644 index 0000000..c77f959 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/is_volatile.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c81a9dbeacc47097d90c88c52aec98f4073456d25d3e567645b69dc4262a98d +size 1663 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_signed.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_signed.hpp new file mode 100644 index 0000000..9156d7b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_signed.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ea2e0c94337a163bc87eaf1dd9c0f086b50ea304f833ce038f464c32226c2c14 +size 4621 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_unsigned.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_unsigned.hpp new file mode 100644 index 0000000..692891d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_unsigned.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8bf849ed921e4ed701f418ca8c290916a490b55f24d10ee309a4be77ad4522ae +size 4691 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_void.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_void.hpp new file mode 100644 index 0000000..b4175f0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/make_void.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f791e8956d2dbfbaa118aae3bb7e6efa0fb29780016ce4dcf2be7c4fa1c7fcf5 +size 1052 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/nonesuch.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/nonesuch.hpp new file mode 100644 index 0000000..d475262 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/nonesuch.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf7d52873bfa3925c2aaf7f330338163f3842e579ebd6e1284187376cac43f17 +size 702 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/object_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/object_traits.hpp new file mode 100644 index 0000000..f2fd33c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/object_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d867fa35a09908251c4437d49396375ff500cb69c09ad5294bd9c3b7474885ef +size 1441 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/promote.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/promote.hpp new file mode 100644 index 0000000..10f3433 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/promote.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:388919cc7b455522f1b49c172c3855a518f6bf557a7ce22cd6a30292e9abe5c8 +size 755 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/rank.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/rank.hpp new file mode 100644 index 0000000..f97d6dd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/rank.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97919bbf464fe0c23fe44ac0bfe786e1af948e85a718f0e4338a8a685ce852f9 +size 2577 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/reference_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/reference_traits.hpp new file mode 100644 index 0000000..47784c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/reference_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:21be71a3adc2544ac654b9e683bd992df482e800334e5a72a9a357d047363a4d +size 590 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_all_extents.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_all_extents.hpp new file mode 100644 index 0000000..8978ef5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_all_extents.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:15f3d9fba8b832975b673e0e53a9126fc207fdd01e779b6ea71319ae026354fa +size 1883 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_bounds.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_bounds.hpp new file mode 100644 index 0000000..4a9d42b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_bounds.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a26fe9a563a5e6a0e7e8736fef937c90a137d9561c4820229bb6892c9ef69f97 +size 802 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_const.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_const.hpp new file mode 100644 index 0000000..18e0b3b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_const.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33151b6f70c6f954ce230209dbc77aad94b0dc079961e9025d41ec1838f251e6 +size 1357 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv.hpp new file mode 100644 index 0000000..1319820 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dc8fd5739ddd65b6a558c95941939cb0ab9cff356c028bc8a18792530d04d1e +size 1792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv_ref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv_ref.hpp new file mode 100644 index 0000000..6f9b854 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_cv_ref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33b4187033b2aa28c8c057522cae06284bed11d9f2691b962b3804281ee9395f +size 859 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_extent.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_extent.hpp new file mode 100644 index 0000000..6e1af53 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_extent.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50053ad662cb777e9323913d3ec0275e699b72fe499010b365fa38ea6e29eb4d +size 1789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_pointer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_pointer.hpp new file mode 100644 index 0000000..1d8e8e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_pointer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e0b898bb01e3acd0c5a0b79e3c33d62965f010a561946d538cc9752f985cfb9a +size 2203 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_reference.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_reference.hpp new file mode 100644 index 0000000..8b97d5c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_reference.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5556a8862b4134de42763ac42fae1958b7ab00a4897b89286ca0c3328be8308b +size 1783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_volatile.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_volatile.hpp new file mode 100644 index 0000000..008de00 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/remove_volatile.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55792b123ad1789aa184175b491705bb3566ad98397c29c4b97de84c2c19dfdc +size 1396 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/same_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/same_traits.hpp new file mode 100644 index 0000000..d39690d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/same_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dd3c7d28b1226eda25c25b0aa2badc635aa0fd16b28594461bfe30a48c42dc4b +size 586 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/transform_traits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/transform_traits.hpp new file mode 100644 index 0000000..ee5f858 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/transform_traits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8642fb03f15b60a13396e616466e0ccbc3d50904ff4dd0d26bbeb45ff182ceb +size 893 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_identity.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_identity.hpp new file mode 100644 index 0000000..a326f10 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_identity.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c9babe7d5bf2f7b6a711e226cb39af04ce3b7ba8fb18c2de71cf82a6a8960258 +size 636 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_with_alignment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_with_alignment.hpp new file mode 100644 index 0000000..b890d79 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/type_traits/type_with_alignment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1484b6ead726f9a093236dee047bd1d929f7c45ab201e98848deacb6ad5ff3b8 +size 10033 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/fwd.hpp new file mode 100644 index 0000000..9ec511f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:378e1faa9514cffb78a6650c8a9800301dbfc328d07e1bd07d6488fa16e195a8 +size 1972 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/implementation.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/implementation.hpp new file mode 100644 index 0000000..82a6b58 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/implementation.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff494aeda40831e65e4eb2a823afca0cbaf05fbcf1d4138e4e548d7f4d42461 +size 163989 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/map.hpp new file mode 100644 index 0000000..4fb17b7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5644b216146c8bc539bc3fb4d38fb3c13ccac473acd387f300ab6720bbe1473 +size 2473 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/set.hpp new file mode 100644 index 0000000..2eb48e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/detail/set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:065929928bd2acb221872a51d916da29ccb29528958308d13dfad2fa1c3aead0 +size 2399 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map.hpp new file mode 100644 index 0000000..9efc6e3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1734d02d0f804a6a32cd57960fb8c9d6ccee08407063f9ad329e1ff98bb1153a +size 90040 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map_fwd.hpp new file mode 100644 index 0000000..0ee440c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_map_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03ec7f713f2320950a0d5607a424979252dbefd2a26c5a1f8cc88468122b6d6a +size 2385 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set.hpp new file mode 100644 index 0000000..1f44456 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c3bc8d11cf94be89bb963804aacef64f19126557dec6bae74386f5208cf64ae +size 69345 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set_fwd.hpp new file mode 100644 index 0000000..5ef1a6a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered/unordered_set_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a4a65473c91c6e4e039a218a241b792bb759d66ccd158b57c0b404560d6f439 +size 2206 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_map.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_map.hpp new file mode 100644 index 0000000..5c5b849 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_map.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879aa17098356b52a293d241f751720f8f74456601e0e39746f8464a14589561 +size 568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_set.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_set.hpp new file mode 100644 index 0000000..1fb72bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/unordered_set.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcbf470ddf53d2d5af741e238608be2f6f9f84c45586bf96f1ecda4f02488c4f +size 568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility.hpp new file mode 100644 index 0000000..eb476e0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bc345a6ff4f0daf05ac964ee5713be7c8b0e5cc80b16f6ad4f0abb4c7dded017 +size 880 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/addressof.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/addressof.hpp new file mode 100644 index 0000000..7f68a69 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/addressof.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb86551a087e57d8efa1f1da683f90f5a0501d746f5a42340e86097c076f1169 +size 410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/base_from_member.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/base_from_member.hpp new file mode 100644 index 0000000..d0e3e80 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/base_from_member.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:977d104af9562677a98180eaf38e7af754517bfe872d730d295b318aeeb2cec2 +size 5701 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/binary.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/binary.hpp new file mode 100644 index 0000000..759f817 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/binary.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:19f8e6402d36d89050d92cd42d9de21d717a1f28074e828a7d66e03ce13590bf +size 47868 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/compare_pointees.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/compare_pointees.hpp new file mode 100644 index 0000000..59d3bc8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/compare_pointees.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9ec852cd0595fcf45a04d06fc84c11efdb78b7f38a596bb6de2318cb2465f64 +size 2290 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/declval.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/declval.hpp new file mode 100644 index 0000000..de67043 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/declval.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1271ac48f7930722ed8f7a264d5b0d828e8ad68ce0f1fe2f9d03ac820ba3457b +size 384 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_prefix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_prefix.hpp new file mode 100644 index 0000000..da3425d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_prefix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe8ce4dd39e136b2d8fa31321fd57627d818664d924af90e7650002db8d72515 +size 1428 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_suffix.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_suffix.hpp new file mode 100644 index 0000000..52ca99b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/in_place_factory_suffix.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:879d4dafd5f325960464ef671325c64ae8324b2093af4573a626f5b5e5be6e06 +size 793 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/minstd_rand.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/minstd_rand.hpp new file mode 100644 index 0000000..c6c6f71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/minstd_rand.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d08c4e6ea683db2a5ee6621c41078935eba84f752deed92c28f7dd0cdd685435 +size 1046 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/result_of_iterate.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/result_of_iterate.hpp new file mode 100644 index 0000000..1679d10 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/detail/result_of_iterate.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9491088782d9062d586b1cd9a15ef4a80fdff326a97d073af651b904008b10ba +size 8477 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/enable_if.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/enable_if.hpp new file mode 100644 index 0000000..ea14de9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/enable_if.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:82ca441edd4f8c603b956b36c76f7db4b7b1287e4e9399e15b918ff64f480fcb +size 410 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/explicit_operator_bool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/explicit_operator_bool.hpp new file mode 100644 index 0000000..cc13b2c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/explicit_operator_bool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:be708809716ceb97102f330bafb58a849e8d2e1a5fa1786cba3f6368760abe87 +size 462 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/identity_type.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/identity_type.hpp new file mode 100644 index 0000000..330e508 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/identity_type.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f0dcb5c8f78fbd469389e39c2a439aa8f2632d525fcb17a6ab49ff8c69412467 +size 1672 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/in_place_factory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/in_place_factory.hpp new file mode 100644 index 0000000..1b65698 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/in_place_factory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3e279cc3a1b7269a0116fbb1654a7a559360f7507fee3f0662a0d90d651a2a42 +size 2176 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/result_of.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/result_of.hpp new file mode 100644 index 0000000..31edb9a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/result_of.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d6d73f76485589d5a664311d3ec75566fb16f790535ec7b3151dd9881bc54303 +size 7386 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref.hpp new file mode 100644 index 0000000..d8f1571 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:81cf954d758e76d5b5d677685a8c0fa7162f62b1abe956a9ccbe2a693b21afe3 +size 22013 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref_fwd.hpp new file mode 100644 index 0000000..7330f67 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_ref_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f75d10a1431685f5a63d35b252e6d603a48e6a9a428ed917d9d7c43e49b1870 +size 1086 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view.hpp new file mode 100644 index 0000000..1658e83 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0eb53a4a8c7dcf22c55a951cabb7271fba953c5a8a5392841cea9514d4279e16 +size 31127 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view_fwd.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view_fwd.hpp new file mode 100644 index 0000000..4e62c1c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/string_view_fwd.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d2d573b90d1c9af9679016397b577bcd83ea383b01b5f3df9fddc9027ed7e214 +size 1233 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/swap.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/swap.hpp new file mode 100644 index 0000000..1b333fe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/swap.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:86d926c68f0e886ce02714450837ad08fd1fb12ec8ee64ba2df35dea43611600 +size 390 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/typed_in_place_factory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/typed_in_place_factory.hpp new file mode 100644 index 0000000..bf936ec --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/typed_in_place_factory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6241abd14ae83d7b18fd34cd90884d49292ec3175fa1bbf2bb202434b7e816e0 +size 2140 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/value_init.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/value_init.hpp new file mode 100644 index 0000000..5b2c8bb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/utility/value_init.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1adb619945d11a2b234ae436f37eccf4e5190a83f41e185a1bc0881928d16d9f +size 6369 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/version.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/version.hpp new file mode 100644 index 0000000..9dca5b5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/version.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4c32466a31373f045a076982a9b4877137b58b8fb779c4b607924e76056aa3ce +size 1117 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/visit_each.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/visit_each.hpp new file mode 100644 index 0000000..973de81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/visit_each.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d064c45f15a2f8ac056984994fd85d94b3321e29e74377065b72ba20760b0cc +size 690 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/access_rights.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/access_rights.hpp new file mode 100644 index 0000000..48e3336 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/access_rights.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50f028002990a73a26288de455587b288a0e435ce6eccf2cb3ddfe6868b00985 +size 2968 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/apc.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/apc.hpp new file mode 100644 index 0000000..77d829b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/apc.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed77502b300390b092c5fcfcf1fa8bf826c48b5fa50d47d491471e6e6e153786 +size 1073 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/basic_types.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/basic_types.hpp new file mode 100644 index 0000000..47ef7fa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/basic_types.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bb44b57a2206c058104dc1bff6a0f389d9819b8e1ae8d5c6d2523abd7dc86d70 +size 7423 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/bcrypt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/bcrypt.hpp new file mode 100644 index 0000000..02ff376 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/bcrypt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f67262a7b18e6bfb74655abf1e0ca47a4b2a0b459f07509e801f19d82372c39 +size 1953 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/character_code_conversion.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/character_code_conversion.hpp new file mode 100644 index 0000000..f003970 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/character_code_conversion.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:660bef939ea194024e4a9679ccfe695e66ceacb3b18a2f4cdcc9793c8f7ccc03 +size 3633 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/condition_variable.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/condition_variable.hpp new file mode 100644 index 0000000..f112192 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/condition_variable.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa098503dac0d2a8e4a03d074468ce7fda4c7be36a02b3d255d7d1f4fd691533 +size 3774 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/config.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/config.hpp new file mode 100644 index 0000000..2a5dcb9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/config.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e030780fab61ccc7891d3c9b34ee239a60464c964e3a3ea9abc474f00e93db7d +size 10254 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/critical_section.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/critical_section.hpp new file mode 100644 index 0000000..b81fcd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/critical_section.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4bccb6ffe826691f02fd18d7491af60d7e45ea986d694c4099fac2237d6498af +size 6505 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/crypt.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/crypt.hpp new file mode 100644 index 0000000..f97689a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/crypt.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2582e834a4a6e84fd77339b704dee5accfdb99e54ce9dbb4e07753b2e83ea5b8 +size 5862 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dbghelp.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dbghelp.hpp new file mode 100644 index 0000000..e240a5e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dbghelp.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:830f4b7e01be3894f015a7c98f72e2acd791fb35bf6bd0749f3ac56687a10196 +size 6485 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/debugapi.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/debugapi.hpp new file mode 100644 index 0000000..80e698a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/debugapi.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa1031a74ffc1501485d90422735a6d055905b2e91187a4f852e191ac27f2422 +size 1259 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/detail/cast_ptr.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/detail/cast_ptr.hpp new file mode 100644 index 0000000..adceedb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/detail/cast_ptr.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4a95f5a0e99230e8ac0ab122ff282a190fd8b55991b87707bd860c760e1222d7 +size 824 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/directory_management.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/directory_management.hpp new file mode 100644 index 0000000..3598c4e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/directory_management.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c97425cacd77b7ad5039c337bfcba2b30eb31e410c0e038ee8912fff52a634f +size 3286 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dll.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dll.hpp new file mode 100644 index 0000000..faf6959 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/dll.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7f958845213302513f966e8829f283921ab09c2349e045c1c8e5e33dc647d0e6 +size 7243 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/environment.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/environment.hpp new file mode 100644 index 0000000..954f44a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/environment.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6f32d710e4e807fd3a54b44f62bc8915453a40824274e2ffdde4b2e31ecfa731 +size 4345 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_codes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_codes.hpp new file mode 100644 index 0000000..0743482 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_codes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c19f36b16d273b202754876cbac09295034f5944dbafa6dbe6ca7ccd7d183c2 +size 218523 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_handling.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_handling.hpp new file mode 100644 index 0000000..d3a597d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/error_handling.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d7dae57f4a4c1b1e30e356df323867ab36fd10d9b78dc09333b97f72b6f321d +size 5175 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/event.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/event.hpp new file mode 100644 index 0000000..107f571 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/event.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:de5d5fc4669dd7db2ee881114074ff0edf0d5517f92ad53ad336bce9ca0656ca +size 7312 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_management.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_management.hpp new file mode 100644 index 0000000..1c56d74 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_management.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29a0343f8575ae553f7ca4df3ff7ad97b84a6b179f7aa69c24b8f17da389533e +size 21799 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_mapping.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_mapping.hpp new file mode 100644 index 0000000..d956e77 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/file_mapping.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b8e5bcfe4a53e44fcbbab8318fd82d45cc6cc034cec9753e331179b8b9e6b63 +size 9529 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process.hpp new file mode 100644 index 0000000..83d83ea --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2914aa900c54b7f2625bc245ba2d7d48f1fa6290e1efd5bf0f69167674070b79 +size 789 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process_id.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process_id.hpp new file mode 100644 index 0000000..45ed72c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_process_id.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f14f60a1b9b6fb02028c191d01c0af587e41f49d4be7065599adcbe8dc2059d9 +size 769 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread.hpp new file mode 100644 index 0000000..1b0d517 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84e12d4bbe44a9230dea0ed4238ee975264fbb688dd239ef4e90b1005913a19a +size 783 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread_id.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread_id.hpp new file mode 100644 index 0000000..0ba2bcb --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_current_thread_id.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50a3b1896bb7022c93bc005ea1ba893e8e21959dcf905a162ea9926bc3407e55 +size 797 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_last_error.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_last_error.hpp new file mode 100644 index 0000000..dd03fc1 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_last_error.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af4bd4425c6f5b0a99da9011ffcc7a7a451887f8b59b3a6d9d52f3b5a12fa261 +size 666 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_process_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_process_times.hpp new file mode 100644 index 0000000..afebe1e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_process_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9b18ae32835ea3e98b89257b4b71084d121282b07559bf928d6551cad7d9eb5 +size 1468 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_system_directory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_system_directory.hpp new file mode 100644 index 0000000..9d460d8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_system_directory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c715deaa9653f2c5d60e249a62f5166558ed5fed2956f331f73bcc7ac64b8ce +size 1379 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_thread_times.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_thread_times.hpp new file mode 100644 index 0000000..6eecf87 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/get_thread_times.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d5fb7b0eadff7fe0ff1e8afa382b79f4e6d53176a75f22c9e519c08829518eeb +size 1354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handle_info.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handle_info.hpp new file mode 100644 index 0000000..7883986 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handle_info.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1b4cb315a37d5d555766db550643fc14a9c68be2b77dc684bd7981dd9bb01cdc +size 1385 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handles.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handles.hpp new file mode 100644 index 0000000..4084688 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/handles.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4518f9bc446df1c63581a9f7b08d98a06b5319b86fee3a9747100db3bf3be34b +size 2187 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/heap_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/heap_memory.hpp new file mode 100644 index 0000000..26ee526 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/heap_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ebb4c5425d9bc1a5fb58263768b14795ef52c5898c17f8c3f4b6922197145395 +size 2180 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/init_once.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/init_once.hpp new file mode 100644 index 0000000..5be7045 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/init_once.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3ca4c71ec9dc1d8a58ed00161869fc093423111da61e2e7421a3142cd74294d5 +size 4009 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/jobs.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/jobs.hpp new file mode 100644 index 0000000..ed57c7e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/jobs.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c667c96e0e76e09fe29a413a35c160035c0f4cb4da24506fd740957ae6951810 +size 5502 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/limits.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/limits.hpp new file mode 100644 index 0000000..d50ee2b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/limits.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4ad29f8dfd161a2260f7ff0e1b38afed2f4a40ac74ac19fe814ffd9ef5fcfb3 +size 1193 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/local_memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/local_memory.hpp new file mode 100644 index 0000000..cfc053d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/local_memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53afd4eef35121870719f2e5e228f7701beb77c684be89eca3546005992caa07 +size 1262 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/memory.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/memory.hpp new file mode 100644 index 0000000..3c63ca8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/memory.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:70fe51126ee99a2395872839db95a24956fd76e0bd25bb5e745ab840a7c0ef74 +size 455 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/mutex.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/mutex.hpp new file mode 100644 index 0000000..ca1f3a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/mutex.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7de1ef1416a1ea70a09ca9d8d255a73ab57372bb5f334bfbbf1329e2623826a7 +size 6234 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/overlapped.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/overlapped.hpp new file mode 100644 index 0000000..b87a04b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/overlapped.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:297e3a62e3d79c5cbb8e3f6f39cf648e707f1bc3a694fdfb0fb2a14209ab6b18 +size 1044 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/page_protection_flags.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/page_protection_flags.hpp new file mode 100644 index 0000000..105ffbe --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/page_protection_flags.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e58b4c557cb3dfda1260d3b0e31435c1cf86dadabbecd573f7ade027ecb1ac9c +size 1938 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/pipes.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/pipes.hpp new file mode 100644 index 0000000..6efc027 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/pipes.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:09435de87763bdf7aa381baf49b703bf3e77b8266aa1ac13c28f957efc1c717a +size 11145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/priority_class.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/priority_class.hpp new file mode 100644 index 0000000..5fc3395 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/priority_class.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49227c0adb24a4ad43b9a28a11cfd976b3e7c84317ea28c9d35ae33dc851458d +size 2613 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/process.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/process.hpp new file mode 100644 index 0000000..edc2376 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/process.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1246fe30d9ecdaa84bd4da9488e47d4542af741d65da38fb9dcf0ff0b6f61bee +size 18145 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/security.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/security.hpp new file mode 100644 index 0000000..39316a6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/security.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1cfdb87785e6230162b3e164032c0c89b843e93e8604f7ca340d1d8a07fd64cf +size 2088 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/semaphore.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/semaphore.hpp new file mode 100644 index 0000000..c3bcae5 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/semaphore.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed20108da6d01c38e7975adda1ad56f7eaf0347e15cdf4e08b105a9aacfa26ef +size 6642 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/shell.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/shell.hpp new file mode 100644 index 0000000..3de5240 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/shell.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed4056ee998ad16469ad24bf8a544cb57e6752f87e82ccfc91e9b45958757a06 +size 6005 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/show_window.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/show_window.hpp new file mode 100644 index 0000000..0c7c190 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/show_window.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:013f1cf08f38ac01a4d23136538b75f5f0edcafd90da38ef49bbc9e2b279421e +size 4104 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/srw_lock.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/srw_lock.hpp new file mode 100644 index 0000000..1eabc71 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/srw_lock.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d4e762d012c3b22bda686319e9548b89d68377d436fc717b378f1ea407b3d3f0 +size 3258 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/stack_backtrace.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/stack_backtrace.hpp new file mode 100644 index 0000000..56a7825 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/stack_backtrace.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cfa3d6b7e82313d7d287f4ea31278cc89945b4c789ffaf761363ff80c926d764 +size 1416 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/synchronization.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/synchronization.hpp new file mode 100644 index 0000000..c68c62e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/synchronization.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b73e7275c727fbeafe543783f7aa4d29e58cb105906ef6575d3c2d51d83b4b56 +size 779 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/system.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/system.hpp new file mode 100644 index 0000000..57a10bd --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/system.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2fa5d5133283b0a4913b2e7c87cea7a623cdd0716382e0218a301680a8bfe81b +size 2241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread.hpp new file mode 100644 index 0000000..6408889 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e443edc24f6591e16e60a6f3f94ce278348e88d9de87c6707c517fc87875cc4a +size 1134 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread_pool.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread_pool.hpp new file mode 100644 index 0000000..571415b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/thread_pool.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6dd003713d4146c395d05f0293f62bf9de31191999373eda2a21b403c7249dde +size 5241 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/time.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/time.hpp new file mode 100644 index 0000000..40efd3d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/time.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93c0fa9dc55b440256664357e401a47e73a20e65ee4166f316b45130e0a77b55 +size 4332 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/timers.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/timers.hpp new file mode 100644 index 0000000..1a89dc3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/timers.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3901e9600700f2942375f8b00d6329582436e625de1220b38957a6b90979d6a6 +size 1143 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/tls.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/tls.hpp new file mode 100644 index 0000000..7643860 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/tls.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d742766dbc598f2e571b25169701511fe3ee44497619c70d9964a347990ef07 +size 1488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/wait.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/wait.hpp new file mode 100644 index 0000000..f9033e7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/wait.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f5f8cc96b1e9126797345a7c71f0b61c12d23ecfb2adcf3bdaed5ed43b10645 +size 3553 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/waitable_timer.hpp b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/waitable_timer.hpp new file mode 100644 index 0000000..63a6f03 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/boost/winapi/waitable_timer.hpp @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b3181d7643eaf64b23e60e2a10d1b162b3287d26579597284da3a4ebc8c32f8 +size 4980 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/unix.h b/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/unix.h new file mode 100644 index 0000000..36fc8f2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/unix.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b5fb6fe5dc66aa262c4fcd602c677938bf9a65ddc2010c7b022c7aade1f36bc6 +size 4312 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/win.h b/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/win.h new file mode 100644 index 0000000..6145eaf --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/serial/impl/win.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:416e11faeaae7df28f47e801a58cb1d9ac78d7413a43cb70830a2d1271a889fc +size 3899 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/serial/serial.h b/Plugins/SenseGlove/Source/ThirdParty/include/serial/serial.h new file mode 100644 index 0000000..8f4656c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/serial/serial.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f4dcb008056f41fbb80357da817959e8cf5e2f6d04fb79a416b4fedd68a8a0d7 +size 23702 diff --git a/Plugins/SenseGlove/Source/ThirdParty/include/serial/v8stdint.h b/Plugins/SenseGlove/Source/ThirdParty/include/serial/v8stdint.h new file mode 100644 index 0000000..a662d12 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/include/serial/v8stdint.h @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1155ad61ee6583c90ce3abb174239fbb677627e8220fb8518c8d5e4d3d16e5d +size 2257 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libserial.a new file mode 100644 index 0000000..e14f982 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b934d7ffef60b7f545127257b83be50844e6b39bc2be284caf287aced3dcf2a +size 1201140 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgconnect.a new file mode 100644 index 0000000..ba35557 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3900644cfe60326eff031ea7a4072109ba20fcc93b7c90f7086911a38dc8409 +size 8998616 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a new file mode 100644 index 0000000..98c7fce --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2be7b7b9296d1b488b846cc3abd9dc4eedf983fb547777c6cc9e90d320310dbc +size 15512396 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libserial.a new file mode 100644 index 0000000..9f8b8c9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f1f4508e8fc48c72406b8e4877b0569a809217a6057368847acfbb9da10a839 +size 204780 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgconnect.a new file mode 100644 index 0000000..2a9a8ff --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7976d77a6eb7359b3375706115c829b8b8f84f97fed42b5d62bf1a18c86abfc +size 1223238 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a new file mode 100644 index 0000000..fd4ea86 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/arm64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6518a68c6b9b67f400467829461e74d9f71ef3e0401532fb0ff9915dc7402a5b +size 1945768 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a new file mode 100644 index 0000000..ada41a7 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6346fcc54b375d86ad6f0006c87b3c4fe6bfc412120a057fc178e317d042bdb2 +size 13603188 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a new file mode 100644 index 0000000..3beca45 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/armv7/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17aa47a3a0057bb811b4b4a5c840373fffdc34ce3ff90a930bc29d80f322e019 +size 1794094 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libserial.a new file mode 100644 index 0000000..bd17300 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0351595c5bde877356168c83949ea72d3ea2691b90d016660c401004a3199d3e +size 1180964 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgconnect.a new file mode 100644 index 0000000..cea72d2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c2d7dd37ee3340e4dc476510ba6ec9c143ac7d77a5a17eee94b5be4001c15bf +size 8802496 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a new file mode 100644 index 0000000..3bd2f81 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0302e0166fbd682c53ed15d068a73fe136a985058ac3227d4920505c47c4296 +size 15215756 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libserial.a new file mode 100644 index 0000000..9eb8987 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39b2f39bd96834bc386d5f035ed3a863ae9517df9cf621c7cbb6341b7e29956b +size 196980 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgconnect.a new file mode 100644 index 0000000..9f42325 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74e6ef5d07873d229ca3698220688c6e7757098ec6381cfa819cba1a8a6edb3e +size 1169478 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a new file mode 100644 index 0000000..4e27f13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c178f12a5adc41e798dbe1221c4488a18fc0f81fad801cad492b125a505f9b6 +size 1925080 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a new file mode 100644 index 0000000..d379a97 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:efe957e7c242a6414fbe4557895cd93f2e636be7d0c1672d79d503c014d11b68 +size 11725788 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a new file mode 100644 index 0000000..18aeffa --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/android/r25b/x86/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04949717bd709fdd44106606ccb1631974af97c5f15d7c1f3c7981d855a767b6 +size 1520218 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libserial.a new file mode 100644 index 0000000..0d7ce13 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0828434ae090a3d1c24b1b1f8ce5634f8d46713b3a1933a10c833f91743d109f +size 934754 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a new file mode 100644 index 0000000..4db2cd8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8f3d05717085db8bf36bdf8e71c23519a8ba5301bba6e81c691d202e209ca350 +size 7985868 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a new file mode 100644 index 0000000..e852b5c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f6ea342f1e0c31f4572513fd407d17078073cb9e9d44785bf3552ed0226d244 +size 12915568 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libserial.a new file mode 100644 index 0000000..e36e362 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:950e5c4f5f2b6fe4b8d5c46783cb197167b7e52c61f4503abd8f6ea9873fcdf4 +size 204488 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a new file mode 100644 index 0000000..a5dae2a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f9b9bb86320429f4cc6911f8524c06769c154bbb9d1b8f448993d90a7968073 +size 1165072 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a new file mode 100644 index 0000000..4f42e52 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/aarch64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:295ae77ba4495e1c39be34628a107b554bed16d5a53a753032107d699c15ebc3 +size 1868242 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libserial.a new file mode 100644 index 0000000..106e170 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b39cdadcafde46ce084d12516fab761d57cb4742a342620cb39dd718342ac771 +size 907570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a new file mode 100644 index 0000000..983928a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:934303ad77a3de6c61d1d1546123eea92fa322711069bb8e19b3af89241c94a4 +size 7690512 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a new file mode 100644 index 0000000..260d94e --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b57ddc939e5395eae48a36f6a9304dba3fa902a729d561d074d7054f3998413a +size 12587360 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libserial.a new file mode 100644 index 0000000..e435ea8 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:073672db98f3abee30f184cbf98f4ee0cac1c3342ddd9d727a686c0a64a87e12 +size 195792 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a new file mode 100644 index 0000000..2486cc0 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d9ee006ef54c7cba354c730364660886990f115fadf3202ac99cf19e0c206369 +size 1048738 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a new file mode 100644 index 0000000..5ad54f9 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v21/x86-64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e34fbe92b07d08f3d07b11a1124dcff6df46de1a82cbe786ce5bc535288bb2b +size 1856946 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libserial.a new file mode 100644 index 0000000..138fc42 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9aeebd82f3b53a1b4dbb3a17e9ca7beecb001f52a55694821faeed023e05da9e +size 1097926 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a new file mode 100644 index 0000000..2463383 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0a3db038abb8924a9ef5bcf88fb3adef870ac7bbfbc0a414fdc37c7d386b3bf4 +size 8679302 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a new file mode 100644 index 0000000..1660c3f --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:72ef6ed02c4f494e1096cbd9f3697fac475e9f17454443c39c6ea1a46c09b726 +size 15165786 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libserial.a new file mode 100644 index 0000000..e354d34 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01e571a6922f37e7c242e51e400a7ce3d0317a7717cceac6d230560d1f7e9e64 +size 205888 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a new file mode 100644 index 0000000..ff6d8ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c092e9dbba39666c08955dcd6e2005977ad740d62c613af2ffae6df078227c20 +size 1170642 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a new file mode 100644 index 0000000..7c5f315 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/aarch64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8913711e855e2c6b673c2dbbf20ddb8dab45766459e582df329c26977660641c +size 1896810 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libserial.a new file mode 100644 index 0000000..d7889a2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80df4cb95a70019765501330796578dd0c0bbcf396614f4bc0c7217930d0f40 +size 1068878 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a new file mode 100644 index 0000000..6601537 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23a10d83a398a6d1a607d1dd7b9826013207cc0e98704388fd824b46ea7aafa2 +size 8378530 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a new file mode 100644 index 0000000..977b41b --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/debug/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:38ca2737165138e440fa6947329b5d6c9f70880ae2d301cf73c64208aed50ab3 +size 14806354 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libserial.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libserial.a new file mode 100644 index 0000000..51996ca --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libserial.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1885945651f58c73ead6f778f2f0e387a5fe6aff6eda5fc675f7ec3d7385d0bc +size 195912 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a new file mode 100644 index 0000000..e51f9e2 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgconnect.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2dd48fee4d45fdfd91d571b6ca03912a4055cce1fe1157f3093b91b4b3afde67 +size 1051468 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a new file mode 100644 index 0000000..d429cee --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/linux/v22/x86-64/release/libsgcore.a @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5003a60b372ed8c66c0830da8cc7b01812b900d73d998b9735d75af90b573634 +size 1877854 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib new file mode 100644 index 0000000..5e57e70 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/serial.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:642e994e9470c792ad44534ced6531fd730baada038bd28a89c87fdb6fee1303 +size 1219882 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib new file mode 100644 index 0000000..6ddda12 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgconnect.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f1bd67e1017462095717fe13442ef8e08f679a785a2e05c5a619cb96a7a54d7 +size 14380012 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib new file mode 100644 index 0000000..5edcc32 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/debug/sgcore.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3fe86062ce7c71bf6c409eb73e5eb24254d558687da71c05753d7310e37a267d +size 22157554 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/serial.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/serial.lib new file mode 100644 index 0000000..7fcd85c --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/serial.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ae50be0d9a4dd6a7098cf1d4ea8c4e8361ce0031b0bbb9c7f69e5ea20824e314 +size 351186 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib new file mode 100644 index 0000000..cfa95e4 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgconnect.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:693f01b86788daeb6e3df3798b187826faaa96687f1ea3f561914e6987dd5cdc +size 3003480 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib new file mode 100644 index 0000000..b9def2d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc142/release/sgcore.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5a3e37a3f92548af5e8b92fed1d7748029e704ce795ba3dad14f97eccc8b2af +size 5216342 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib new file mode 100644 index 0000000..05d59e6 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/serial.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f140e19294971633cce413c1c6877570195d5c6d11722e18629738f7989e5f44 +size 1208570 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib new file mode 100644 index 0000000..e82a00d --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgconnect.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d0a14e538b4ec493561fdd9045b4b2a207e4d609933eecb9dd9b7e4d93331ff0 +size 14860872 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib new file mode 100644 index 0000000..d99d5f3 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/debug/sgcore.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ae197772d74a8812b493b4b9a7f2108f96607f6c465440e4cea5d06b0d9a132 +size 22322200 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/serial.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/serial.lib new file mode 100644 index 0000000..57c0400 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/serial.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f831d0cc9ae77b5ee1b35993fd6d0caeff7ddc6b249cb591acf2cd2eb736eb99 +size 340006 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib new file mode 100644 index 0000000..313b120 --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgconnect.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:05585e58b1229c8bf8308a851facc2e8baa8da9a829f21624fbe2e973e5fe8c4 +size 2878342 diff --git a/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib new file mode 100644 index 0000000..a14966a --- /dev/null +++ b/Plugins/SenseGlove/Source/ThirdParty/lib/win64/msvc143/release/sgcore.lib @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4da14278f7d1d0a92f3cf469d7ff8f25aba282162fb84819e6003a64343645a9 +size 4989732