Added Feel plugin

This commit is contained in:
journaliciouz
2025-12-11 14:49:16 +01:00
parent 97dce4aaf6
commit 1942a531d4
2820 changed files with 257786 additions and 9 deletions

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9390e14b79696426d8527e368308b77c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c8e190729c262425ab13ea81b5b478c6
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,39 @@
fileFormatVersion: 2
guid: 4052800b132124e29b9627e77b348b41
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
Android: Android
second:
enabled: 1
settings: {}
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
DefaultValueInitialized: true
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 183370
packageName: Feel
packageVersion: 5.9.1
assetPath: Assets/Feel/NiceVibrations/Plugins/Android/libs/LofeltHaptics.aar
uploadId: 830868

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 04babe37531df1741bce773dd20ddca0
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d1cfa7fc0db963a4897d26b3d50d11ec
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,87 @@
fileFormatVersion: 2
guid: b177fc310544d6a4c94b26e23d9b31d1
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Editor: 0
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude WebGL: 1
Exclude Win: 1
Exclude Win64: 1
Exclude WindowsStoreApps: 1
- first:
Any:
second:
enabled: 1
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: x86_64
DefaultValueInitialized: true
OS: Windows
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
- first:
WebGL: WebGL
second:
enabled: 0
settings: {}
- first:
Windows Store Apps: WindowsStoreApps
second:
enabled: 0
settings:
CPU: X64
DontProcess: false
PlaceholderPath:
SDK: AnySDK
ScriptingBackend: AnyScriptingBackend
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 183370
packageName: Feel
packageVersion: 5.9.1
assetPath: Assets/Feel/NiceVibrations/Plugins/Windows/x64/nice_vibrations_editor_plugin.dll
uploadId: 830868

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3cc8ce9203c4a4d03b07e0ae9a3cf219
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,81 @@
fileFormatVersion: 2
guid: 3f3b3e40c5ec34183af765f15c1ce362
folderAsset: yes
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 0
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 1
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 0
- first:
Android: Android
second:
enabled: 0
settings:
CPU: ARMv7
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 0
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: AnyOS
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
- first:
iPhone: iOS
second:
enabled: 1
settings:
AddToEmbeddedBinaries: true
CPU: AnyCPU
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 744e99b0b7af43d43886762ae9a83fe9
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,163 @@
// Copyright (c) Meta Platforms, Inc. and affiliates.
#import <Foundation/Foundation.h>
#import <AVFoundation/AVFoundation.h>
NS_ASSUME_NONNULL_BEGIN
//! Project version number for LofeltHaptics.
FOUNDATION_EXPORT double LofeltHapticsVersionNumber;
//! Project version string for LofeltHaptics.
FOUNDATION_EXPORT const unsigned char LofeltHapticsVersionString[];
//! Custom error domain
extern NSString *_Nonnull const LofeltErrorDomain;
/*!
@class LofeltHaptics
@brief The LofeltHaptics class
@discussion Defines the API of Lofelt SDK for iOS.
The LofeltHaptics class is not thread safe and can only be used from
the main thread.
When the app is put into the background, Core Haptics will not allow
playing any haptics. LofeltHaptics will detect this situation and cease
all activity.
When the app is put into the foreground again, Core Haptics will allow
playing haptics again, and LofeltHaptics re-initalizes itself. However,
haptics that were interrupted when the app was backgrounded do not
automatically resume and need to be started again by calling @c play().
@author Joao Freire, James Kneafsey, Thomas McGuire, Tomash GHz
@copyright © 2020 Lofelt. All rights reserved.
*/
@interface LofeltHaptics : NSObject
{
void *_controller;
id<NSObject> _foregroundNotificationObserver;
id<NSObject> _backgroundNotificationObserver;
}
/*! @abstract Checks if the iPhone meets the minimum requirements
@discussion This allows for a runtime check on iPhones that won't
meet the requirements for Lofelt Haptics.
@return Whether the iPhone supports or not Lofelt Haptics
*/
+ (BOOL)deviceMeetsMinimumRequirement;
- (instancetype)init NS_UNAVAILABLE;
/*! @abstract Creates an instance of LofeltHaptics.
@discussion There should only be one instance of `LofeltHaptics` created in a given application.
@param error If the initialization fails, this will be set to a valid NSError describing the error.
*/
- (nullable instancetype)initAndReturnError:(NSError **)error API_AVAILABLE(ios(13)) NS_SWIFT_NAME(init());
/*! @abstract Loads a haptic clip from string data.
@discussion The data must be in a valid Lofelt JSON format.
If a haptic clip is currently playing, it will be stopped.
@param data The Lofelt JSON format string.
@param error If the load operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)load:(NSString *_Nonnull)data error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract A version of @c load() taking @c NSData instead of @c NSString.
@discussion This method can be faster than @c load(), as it avoids string conversions.
@param data The .haptic clip, as UTF-8 encoded JSON string without a null terminator.
@param error If the load operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)loadFromData:(NSData *_Nonnull)data error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Plays a loaded haptic clip.
@discussion The data must be preloaded using @c load() .
Only one haptic clip can play at a time.
Playback will start from the beginning of the haptic clip, or from the seek
position if seek() has been called before.
Calling play() if the clip is already playing has no effect.
@param error If the play operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)play:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Stops the haptic clip that is currently playing.
@discussion The call is ignored if no clip is loaded or no clip is playing.
@param error If the stop operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)stop:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Jumps to a time position in the haptic clip
@discussion The playback state (playing or stopped) will not be changed unless seeking
beyond the end of the haptic clip. Seeking beyond the end of the clip will stop
playback.
Seeking to a negative position will start playback after a delay.
@param time The new position within the clip, as seconds from the beginning of the clip
@param error If the seek operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)seek:(float)time error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Multiplies the amplitude of every breakpoint of the clip with the given
multiplication factor
@discussion In other words, this function applies a gain (for factors greater than 1.0)
or an attenuation (for factors less than 1.0) to the clip.
If the resulting amplitude of a breakpoint is greater than 1.0, it is
clipped to 1.0. The amplitude is clipped hard, no limiter is used.
The clip needs to be loaded with @c load() first. Loading a clip resets
the multiplication factor back to the default of 1.0.
If no clip is currently playing, the multiplication will take effect
once @c play() is called. If a clip is currently playing, the multiplication
will take effect immediately.
@param amplitudeMultiplication The factor by which each amplitude will be multiplied. This value is a
multiplication factor, it is not a dB value. The factor needs to be 0
or greater.
@param error If the operation fails, this will be set to a valid NSError describing
the error. An error can for example happen if no clip is loaded, or if
the factor is outside of the valid range.
@return Whether the operation succeeded
*/
- (BOOL)setAmplitudeMultiplication:(float)amplitudeMultiplication error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Adds the given shift to the frequency of every breakpoint in the clip,
including the emphasis.
@discussion In other words, this function shifts all frequencies of the clip.
If the resulting frequency of a breakpoint is smaller than 0.0 or
greater than 1.0, it is clipped to that range. The frequency is
clipped hard, no limiter is used.
The clip needs to be loaded with @c load() first. Loading a clip resets
the shift back to the default of 0.0.
If no clip is currently playing, the shift will take effect once @c play()
is called. If a clip is currently playing, the shift will take effect
immediately.
@param shift The amount by which each frequency should be shifted. This number is added
to each frequency value. The shift needs to be between -1.0 and 1.0.
@param error If the operation fails, this will be set to a valid NSError describing
the error. An error can for example happen if no clip is loaded, or if
the shift is outside of the valid range.
@return Whether the operation succeeded
*/
- (BOOL)setFrequencyShift:(float)shift error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Sets the playback to repeat from the start at the end of the clip.
@discussion Changes done with this function are only applied when @c play() is called.
When @c load() is called, looping is always disabled.
Playback will always start at the beginning of the clip, even if
@c seek() was used to jump to a different clip position before.
@param enabled When true, looping is set enabled; false disables looping.
@param error If the loop operation fails, this will be set to a valid NSError describing the error.
@return Whether the operation succeeded
*/
- (BOOL)loop:(BOOL)enabled error:(NSError *_Nullable *_Nullable)error API_AVAILABLE(ios(13));
/*! @abstract Returns the duration of the loaded clip
@discussion It will return 0.0 for an invalid clip
@return Duration of the loaded clip
*/
- (float)getClipDuration;
@end
NS_ASSUME_NONNULL_END

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 8fd4d5ba1395aa24b9c7cad0af296040
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,6 @@
framework module LofeltHaptics {
umbrella header "LofeltHaptics.h"
export *
module * { export * }
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d7aed595fe8f44c70b4bf38214153c03
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,87 @@
fileFormatVersion: 2
guid: 279c3792841e74f96b13b007d349facc
PluginImporter:
externalObjects: {}
serializedVersion: 2
iconMap: {}
executionOrder: {}
defineConstraints: []
isPreloaded: 1
isOverridable: 0
isExplicitlyReferenced: 0
validateReferences: 1
platformData:
- first:
: Any
second:
enabled: 0
settings:
Exclude Android: 1
Exclude Editor: 0
Exclude Linux64: 1
Exclude OSXUniversal: 1
Exclude Win: 1
Exclude Win64: 1
Exclude iOS: 1
- first:
Android: Android
second:
enabled: 0
settings:
CPU: ARMv7
- first:
Any:
second:
enabled: 0
settings: {}
- first:
Editor: Editor
second:
enabled: 1
settings:
CPU: AnyCPU
DefaultValueInitialized: true
OS: OSX
- first:
Standalone: Linux64
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: OSXUniversal
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win
second:
enabled: 0
settings:
CPU: None
- first:
Standalone: Win64
second:
enabled: 0
settings:
CPU: None
- first:
iPhone: iOS
second:
enabled: 0
settings:
AddToEmbeddedBinaries: false
CPU: AnyCPU
CompileFlags:
FrameworkDependencies:
userData:
assetBundleName:
assetBundleVariant:
AssetOrigin:
serializedVersion: 1
productId: 183370
packageName: Feel
packageVersion: 5.9.1
assetPath: Assets/Feel/NiceVibrations/Plugins/macOS/libnice_vibrations_editor_plugin.dylib
uploadId: 830868