更新说明
This commit is contained in:
@@ -170,6 +170,25 @@ SfxSystem manages: throttle (`ThrottleCount`), min interval (`MinInterval`), pri
|
||||
- `HapticSystem.Instance.Stop(uint? hapticId = null)` — stops current haptic playback
|
||||
- Supports four `HapticType`s: `Preset`, `Emphasis`, `Constant`, `Advance` (`.haptic` file)
|
||||
|
||||
#### Device capability & fallback
|
||||
|
||||
`HapticController.Play()` (`Lofelt/.../HapticController.cs:350`) uses a three-tier decision chain:
|
||||
|
||||
1. **Advanced device** (`DeviceCapabilities.meetsAdvancedRequirements`) → full `.haptic` playback via `LofeltHaptics`
|
||||
2. **Gamepad** (`GamepadRumbler.CanPlay()`) → gamepad rumble
|
||||
3. **Basic OS support** (`DeviceCapabilities.isVersionSupported`) → **always falls back to a Preset**
|
||||
4. None of above → silent no-op
|
||||
|
||||
**Advance (`.haptic` file) fallback is Preset-only** — it never degrades to Emphasis or Constant. The fallback Preset is configured via `HapticObject.FallbackPreset` in the data table.
|
||||
|
||||
| HapticType | Advanced | Android basic | iOS basic |
|
||||
|------------|----------|---------------|-----------|
|
||||
| **Advance** | Full `.haptic` | → Preset | → Preset |
|
||||
| **Emphasis** | JSON clip | 50ms max-amplitude pulse | → amplitude-mapped Preset |
|
||||
| **Constant** | JSON clip with modulation | max-amplitude for `duration` | → hardcoded `HeavyImpact` |
|
||||
|
||||
Emphasis and Constant have their own internal fallback chains (template-based JSON clips on advanced, raw motor patterns or Presets on basic), but these are independent direct-invoke paths — they are never used as fallback targets for Advance.
|
||||
|
||||
---
|
||||
|
||||
## Interactive Music System
|
||||
|
||||
Reference in New Issue
Block a user