Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4e92546e3
|
||
|
|
daa4031e6b
|
||
|
|
bc39905bc6
|
||
|
|
1fdb94d5c9
|
||
|
|
7c9e1b2462
|
||
|
|
ef6d5b6295
|
||
|
|
6794a36b0f
|
||
|
|
6c77fb0ca9
|
||
|
|
f5d9a02dab
|
||
|
|
75eaea13a4
|
||
|
|
b2f89c4694
|
||
|
|
b4e547f755
|
||
|
|
8125ad2fc6
|
+31
-1
@@ -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/),
|
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).
|
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
|
## [1.5.0] - 2023-06-16
|
||||||
|
|
||||||
This release breaks ABI/API compatibility with the previous versions in some areas as documented below.
|
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
|
### Changed
|
||||||
|
|
||||||
- Fully refactored the top-level configurations in the settings system into USTRUCTs.
|
- 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
|
### Removed
|
||||||
|
|
||||||
|
|||||||
@@ -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.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.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 |
|
| **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.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.0 | ✅ 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.0 | ✅ 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> Supported
|
||||||
* <code>⚠️</code> Not supported by the latest release and might be lacking features
|
* <code>⚠️</code> Not supported by the latest release and might be lacking features
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"FileVersion": 3,
|
"FileVersion": 3,
|
||||||
"Version": 1,
|
"Version": 1,
|
||||||
"VersionName": "1.5.0",
|
"VersionName": "1.5.3",
|
||||||
"FriendlyName": "SenseGlove",
|
"FriendlyName": "SenseGlove",
|
||||||
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
|
"Description": "Integrating the SenseGlove haptic controller into Unreal Engine",
|
||||||
"Category": "Virtual Reality",
|
"Category": "Virtual Reality",
|
||||||
|
|||||||
@@ -387,8 +387,8 @@ void USGWristTrackerComponent::FImpl::UpdateMotionSource() const
|
|||||||
if (GEngine)
|
if (GEngine)
|
||||||
{
|
{
|
||||||
Owner->SetTrackingSource(Owner->IsRight()
|
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);
|
LeftHandGrabState = FSGGrabState(HandLeft, nullptr, nullptr, nullptr, nullptr);
|
||||||
LeftHandTouchState = FSGTouchState(HandLeft, nullptr, 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);
|
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);
|
const bool bAttached = Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName);
|
||||||
if (bAttached)
|
if (bAttached)
|
||||||
{
|
{
|
||||||
LeftHandGrabState.GrabbedActor = Actor;
|
if (Hand->IsRight())
|
||||||
|
{
|
||||||
|
RightHandGrabState.GrabbedActor = Actor;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LeftHandGrabState.GrabbedActor = Actor;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
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
|
#else
|
||||||
Actor->AttachToComponent(Hand, MoveTemp(AttachmentRules), SocketName);
|
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 */
|
#endif /* ENGINE_MAJOR_VERSION >= 5 && ENGINE_MINOR_VERSION >= 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -573,19 +573,19 @@ public:
|
|||||||
|
|
||||||
FORCEINLINE bool CanGrab(const USGVirtualHandComponent* Hand, const AActor* Actor) const
|
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
|
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;
|
bool IsGrabbing(const USGVirtualHandComponent* Hand, AActor*& OutActor) const;
|
||||||
|
|
||||||
FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand) const
|
FORCEINLINE bool IsGrabbing(const USGVirtualHandComponent* Hand) const
|
||||||
{
|
{
|
||||||
return Hand == HandLeft ? IsLeftHandGrabbing() : IsRightHandGrabbing();
|
return Hand == HandRight ? IsRightHandGrabbing() : IsLeftHandGrabbing();
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
@@ -607,6 +607,6 @@ public:
|
|||||||
|
|
||||||
FORCEINLINE void Release(const USGVirtualHandComponent* Hand)
|
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!"/>
|
<log text="SenseGloveAndroid [WARN]: this architecture is not supported!"/>
|
||||||
</false>
|
</false>
|
||||||
</if>
|
</if>
|
||||||
|
|
||||||
|
<setBoolFromProperty result="bCreateAFSProject" ini="Engine" section="/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings" property="bEnablePlugin" default="true"/>
|
||||||
</init>
|
</init>
|
||||||
|
|
||||||
<resourceCopies>
|
<resourceCopies>
|
||||||
<copyFile src="$S(PluginDir)/../ThirdParty/android/sgconnect.jar" dst="$S(BuildDir)/gradle/app/libs/sgconnect.jar" />
|
<copyFile src="$S(PluginDir)/../ThirdParty/android/sgconnect.jar" dst="$S(BuildDir)/gradle/app/libs/sgconnect.jar" />
|
||||||
</resourceCopies>
|
</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>
|
<gradleProperties>
|
||||||
<insert>
|
<insert>
|
||||||
kapt.incremental.apt=true
|
kapt.incremental.apt=true
|
||||||
@@ -73,18 +91,15 @@
|
|||||||
|
|
||||||
<proguardAdditions>
|
<proguardAdditions>
|
||||||
<insert>
|
<insert>
|
||||||
|
|
||||||
<!-- Disable obfuscation for SenseGlove classes -->
|
<!-- Disable obfuscation for SenseGlove classes -->
|
||||||
-dontwarn com.senseglove.**
|
-dontwarn com.senseglove.**
|
||||||
-keep class com.senseglove.** { *; }
|
-keep class com.senseglove.** { *; }
|
||||||
-keep interface com.senseglove.** { *; }
|
-keep interface com.senseglove.** { *; }
|
||||||
-keep public class com.senseglove.sgconnect.** { public protected *; }
|
-keep public class com.senseglove.sgconnect.** { public protected *; }
|
||||||
|
|
||||||
</insert>
|
</insert>
|
||||||
</proguardAdditions>
|
</proguardAdditions>
|
||||||
|
|
||||||
<androidManifestUpdates>
|
<androidManifestUpdates>
|
||||||
|
|
||||||
<!-- For target SDK 31 update the SplashActivity activity -->
|
<!-- For target SDK 31 update the SplashActivity activity -->
|
||||||
<loopElements tag="activity">
|
<loopElements tag="activity">
|
||||||
<setStringFromAttribute result="activityName" tag="$" name="android:name"/>
|
<setStringFromAttribute result="activityName" tag="$" name="android:name"/>
|
||||||
@@ -100,7 +115,6 @@
|
|||||||
<addPermission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
<addPermission android:name="android.permission.BLUETOOTH_ADMIN"/>
|
||||||
<addPermission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
|
<addPermission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
|
||||||
<addPermission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
<addPermission android:name="android.permission.ACCESS_FINE_LOCATION"/>
|
||||||
|
|
||||||
</androidManifestUpdates>
|
</androidManifestUpdates>
|
||||||
|
|
||||||
<buildGradleAdditions>
|
<buildGradleAdditions>
|
||||||
@@ -123,7 +137,6 @@
|
|||||||
dependencies {
|
dependencies {
|
||||||
implementation files('libs/sgconnect.jar')
|
implementation files('libs/sgconnect.jar')
|
||||||
}
|
}
|
||||||
|
|
||||||
</insert>
|
</insert>
|
||||||
</buildGradleAdditions>
|
</buildGradleAdditions>
|
||||||
|
|
||||||
|
|||||||
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
BIN
Binary file not shown.
Reference in New Issue
Block a user