Compare commits

...
13 Commits
67 changed files with 189 additions and 125 deletions
+31 -1
View File
@@ -5,6 +5,36 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.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.
@@ -22,7 +52,7 @@ This release breaks ABI/API compatibility with the previous versions in some are
### Changed
- Fully refactored the top-level configurations in the settings system into USTRUCTs.
- SenseGlove libraries have been updated to v.2.10.0-12133ac.
- SenseGlove libraries have been updated to v2.10.0-12133ac.
### Removed
+3 -3
View File
@@ -14,9 +14,9 @@ This repository relies on Git LFS for storing binary blobs (e.g. third-party lib
| **4.25** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ⚠️ v1.0.4 |
| **4.26** | ⚠️ v1.0.x | ⚠️ v1.0.x | ❌ | ⚠️ v1.0.x | ❌ | ❌ | ❌ | ⚠️ v1.0.4 |
| **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 |
| **5.0** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r21e) | ✅ v1.5.0 | ✅ v1.5.0 |
| **5.1** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r25b) | ✅ v1.5.0 | ✅ v1.5.0 |
| **5.2** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r25b) | ✅ v1.5.0 | ✅ v1.5.0 |
| **5.0** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r21e) | ✅ v1.5.3 | ✅ v1.5.0 |
| **5.1** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r25b) | ✅ v1.5.3 | ✅ v1.5.0 |
| **5.2** | ❌ | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x | ✅ v1.5.x (r25b) | ✅ v1.5.3 | ✅ v1.5.0 |
* <code>✅</code> Supported
* <code>⚠️</code> Not supported by the latest release and might be lacking features
+1 -1
View File
@@ -1,7 +1,7 @@
{
"FileVersion": 3,
"Version": 1,
"VersionName": "1.5.0",
"VersionName": "1.5.3",
"FriendlyName": "SenseGlove",
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
"Category": "Virtual Reality",
@@ -387,8 +387,8 @@ void USGWristTrackerComponent::FImpl::UpdateMotionSource() const
if (GEngine)
{
Owner->SetTrackingSource(Owner->IsRight()
? Owner->GetWristTrackingSettings().LeftHandMotionSource
: Owner->GetWristTrackingSettings().RightHandMotionSource);
? Owner->GetWristTrackingSettings().RightHandMotionSource
: Owner->GetWristTrackingSettings().LeftHandMotionSource);
}
}
@@ -435,7 +435,7 @@ ASGPawn::ASGPawn(const FObjectInitializer& ObjectInitializer)
LeftHandGrabState = FSGGrabState(HandLeft, nullptr, nullptr, nullptr, nullptr);
LeftHandTouchState = FSGTouchState(HandLeft, nullptr, nullptr, nullptr, nullptr, nullptr);
RightHandGrabState = FSGGrabState(HandLeft, nullptr, nullptr, nullptr, nullptr);
RightHandGrabState = FSGGrabState(HandRight, nullptr, nullptr, nullptr, nullptr);
RightHandTouchState = FSGTouchState(HandRight, nullptr, nullptr, nullptr, nullptr, nullptr);
}
@@ -1145,15 +1145,36 @@ void ASGPawn::Grab(USGVirtualHandComponent* Hand, AActor* Actor)
const bool bAttached = Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName);
if (bAttached)
{
LeftHandGrabState.GrabbedActor = Actor;
if (Hand->IsRight())
{
RightHandGrabState.GrabbedActor = Actor;
}
else
{
LeftHandGrabState.GrabbedActor = Actor;
}
}
else
{
SGLOG_ERROR("Failed to grab the actor with the left hand!", Actor, SocketName);
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);
}
}
#else
Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName);
LeftHandGrabState.GrabbedActor = Actor;
if (Hand->IsRight())
{
RightHandGrabState.GrabbedActor = Actor;
}
else
{
LeftHandGrabState.GrabbedActor = Actor;
}
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 2 */
}
@@ -573,19 +573,19 @@ public:
FORCEINLINE bool CanGrab(const USGVirtualHandComponent* Hand, const AActor* Actor) const
{
return Hand == HandLeft ? CanLeftHandGrab(Actor) : CanRightHandGrab(Actor);
return Hand == HandRight ? CanRightHandGrab(Actor) : CanLeftHandGrab(Actor);
}
FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand, const AActor* Actor) const
{
return Hand == HandLeft ? IsLeftHandGrabbing(Actor) : IsRightHandGrabbing(Actor);
return Hand == HandRight ? IsRightHandGrabbing(Actor) : IsLeftHandGrabbing(Actor);
}
bool IsGrabbing(const USGVirtualHandComponent* Hand, AActor*& OutActor) const;
FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand) const
{
return Hand == HandLeft ? IsLeftHandGrabbing() : IsRightHandGrabbing();
return Hand == HandRight ? IsRightHandGrabbing() : IsLeftHandGrabbing();
}
public:
@@ -607,6 +607,6 @@ public:
FORCEINLINE void Release(const USGVirtualHandComponent* Hand)
{
return Hand == HandLeft ? ReleaseLeft() : ReleaseRight();
return Hand == HandRight ? ReleaseRight() : ReleaseLeft();
}
};
@@ -59,12 +59,30 @@
<log text="SenseGloveAndroid [WARN]: this architecture is not supported!"/>
</false>
</if>
<setBoolFromProperty result="bCreateAFSProject" ini="Engine" section="/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings" property="bEnablePlugin" default="true"/>
</init>
<resourceCopies>
<copyFile src="$S(PluginDir)/../ThirdParty/android/sgconnect.jar" dst="$S(BuildDir)/gradle/app/libs/sgconnect.jar" />
</resourceCopies>
<gradleCopies>
<if condition="bCreateAFSProject">
<true>
<!-- Also copy into AFSProject -->
<!--
We have a dependency in the buildGradleAdditions which
isn't in the AFSProject which is compiled for shipping
builds when AndroidFileServer (AFS) is enabled. To keep
the size of the AFS APK small it doesn't automatically
copy all the libs over.
-->
<copyFile src="$S(PluginDir)/../ThirdParty/android/sgconnect.jar" dst="$S(BuildDir)/gradle/AFSProject/app/libs/sgconnect.jar" />
</true>
</if>
</gradleCopies>
<gradleProperties>
<insert>
kapt.incremental.apt=true
@@ -73,18 +91,15 @@
<proguardAdditions>
<insert>
<!-- Disable obfuscation for SenseGlove classes -->
-dontwarn com.senseglove.**
-keep class com.senseglove.** { *; }
-keep interface com.senseglove.** { *; }
-keep public class com.senseglove.sgconnect.** { public protected *; }
</insert>
</proguardAdditions>
<androidManifestUpdates>
<!-- For target SDK 31 update the SplashActivity activity -->
<loopElements tag="activity">
<setStringFromAttribute result="activityName" tag="$" name="android:name"/>
@@ -100,7 +115,6 @@
<addPermission android:name="android.permission.BLUETOOTH_ADMIN"/>
<addPermission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
<addPermission android:name="android.permission.ACCESS_FINE_LOCATION"/>
</androidManifestUpdates>
<buildGradleAdditions>
@@ -123,7 +137,6 @@
dependencies {
implementation files('libs/sgconnect.jar')
}
</insert>
</buildGradleAdditions>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.