mirror of
https://github.com/DrBeef/QuestZDoom.git
synced 2024-11-10 15:01:48 +00:00
Early impl of bHaptics
Just copied some stuff from Doom3Quest to see how well it works
This commit is contained in:
parent
4680b56dff
commit
7cde9314f7
86 changed files with 3298 additions and 86 deletions
|
@ -10,12 +10,16 @@
|
|||
<uses-feature android:name="android.hardware.vr.headtracking" android:version="1"
|
||||
android:required="true" />
|
||||
|
||||
<!-- Network access needed for OVRMonitor -->
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<!-- Volume Control -->
|
||||
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
<uses-permission android:name="android.permission.BLUETOOTH" />
|
||||
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
||||
|
||||
<application android:allowBackup="false" android:icon="@drawable/ic_qquest" android:label="@string/qzdoom">
|
||||
<meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only"/>
|
||||
<meta-data android:name="com.oculus.supportedDevices" android:value="quest|quest2"/>
|
||||
|
|
|
@ -57,6 +57,7 @@ android {
|
|||
dependencies {
|
||||
implementation "com.android.support:support-compat:24.2.0"
|
||||
implementation "com.android.support:support-core-utils:24.2.0"
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
|
@ -876,6 +876,37 @@ void QzDoom_Vibrate(float duration, int channel, float intensity )
|
|||
vibration_channel_intensity[channel] = intensity;
|
||||
}
|
||||
|
||||
void jni_haptic_event(const char* event, int position, int intensity, float angle, float yHeight);
|
||||
void jni_haptic_stopevent(const char* event);
|
||||
void jni_haptic_stopall();
|
||||
void jni_haptic_enable();
|
||||
void jni_haptic_disable();
|
||||
|
||||
void QzDoom_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight )
|
||||
{
|
||||
jni_haptic_event(event, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
void QzDoom_HapticStopAll()
|
||||
{
|
||||
jni_haptic_stopall();
|
||||
}
|
||||
|
||||
void QzDoom_HapticStopEvent(const char* event)
|
||||
{
|
||||
jni_haptic_stopevent(event);
|
||||
}
|
||||
|
||||
void QzDoom_HapticEnable()
|
||||
{
|
||||
jni_haptic_enable();
|
||||
}
|
||||
|
||||
void QzDoom_HapticDisable()
|
||||
{
|
||||
jni_haptic_disable();
|
||||
}
|
||||
|
||||
void VR_DoomMain(int argc, char** argv);
|
||||
|
||||
void VR_GetMove( float *joy_forward, float *joy_side, float *hmd_forward, float *hmd_side, float *up, float *yaw, float *pitch, float *roll )
|
||||
|
@ -1728,8 +1759,13 @@ Activity lifecycle
|
|||
*/
|
||||
|
||||
jmethodID android_shutdown;
|
||||
jmethodID android_haptic_event;
|
||||
jmethodID android_haptic_stopevent;
|
||||
jmethodID android_haptic_stopall;
|
||||
jmethodID android_haptic_enable;
|
||||
jmethodID android_haptic_disable;
|
||||
static JavaVM *jVM;
|
||||
static jobject shutdownCallbackObj=0;
|
||||
static jobject jniCallbackObj=0;
|
||||
|
||||
void jni_shutdown()
|
||||
{
|
||||
|
@ -1740,7 +1776,77 @@ void jni_shutdown()
|
|||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
return (*env)->CallVoidMethod(env, shutdownCallbackObj, android_shutdown);
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_shutdown);
|
||||
}
|
||||
|
||||
|
||||
void jni_haptic_event(const char* event, int position, int intensity, float angle, float yHeight)
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_event");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
jstring StringArg1 = (*env)->NewStringUTF(env, event);
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_event, StringArg1, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
void jni_haptic_stopevent(const char* event)
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_stopevent");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
jstring StringArg1 = (*env)->NewStringUTF(env, event);
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_stopevent, StringArg1);
|
||||
}
|
||||
|
||||
void jni_haptic_stopall()
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_stopall");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_stopall);
|
||||
}
|
||||
|
||||
void jni_haptic_enable()
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_enable");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_enable);
|
||||
}
|
||||
|
||||
void jni_haptic_disable()
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_disable");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_disable);
|
||||
}
|
||||
|
||||
int JNI_OnLoad(JavaVM* vm, void* reserved)
|
||||
|
@ -1842,10 +1948,15 @@ JNIEXPORT void JNICALL Java_com_drbeef_questzdoom_GLES3JNILib_onStart( JNIEnv *
|
|||
{
|
||||
ALOGV( " GLES3JNILib::onStart()" );
|
||||
|
||||
shutdownCallbackObj = (jobject)(*env)->NewGlobalRef(env, obj1);
|
||||
jclass callbackClass = (*env)->GetObjectClass(env, shutdownCallbackObj);
|
||||
jniCallbackObj = (jobject)(*env)->NewGlobalRef(env, obj1);
|
||||
jclass callbackClass = (*env)->GetObjectClass(env, jniCallbackObj);
|
||||
|
||||
android_shutdown = (*env)->GetMethodID(env,callbackClass,"shutdown","()V");
|
||||
android_haptic_event = (*env)->GetMethodID(env, callbackClass, "haptic_event", "(Ljava/lang/String;IIFF)V");
|
||||
android_haptic_stopevent = (*env)->GetMethodID(env, callbackClass, "haptic_stopevent", "(Ljava/lang/String;)V");
|
||||
android_haptic_stopall = (*env)->GetMethodID(env, callbackClass, "haptic_stopall", "()V");
|
||||
android_haptic_enable = (*env)->GetMethodID(env, callbackClass, "haptic_enable", "()V");
|
||||
android_haptic_disable = (*env)->GetMethodID(env, callbackClass, "haptic_disable", "()V");
|
||||
|
||||
ovrAppThread * appThread = (ovrAppThread *)((size_t)handle);
|
||||
ovrMessage message;
|
||||
|
|
|
@ -93,6 +93,10 @@ void QzDoom_processHaptics();
|
|||
void QzDoom_getHMDOrientation(ovrTracking2 *tracking);
|
||||
void QzDoom_getTrackedRemotesOrientation(int vr_control_scheme);
|
||||
|
||||
void QzDoom_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight );
|
||||
void QzDoom_HapticEnable();
|
||||
void QzDoom_HapticDisable();
|
||||
|
||||
void incrementFrameIndex();
|
||||
|
||||
void QzDoom_prepareEyeBuffer(int eye );
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
//---------------------------------------------------------------------------
|
||||
//
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
#include "templates.h"
|
||||
#include "p_local.h"
|
||||
#include "t_script.h"
|
||||
|
@ -2080,6 +2081,7 @@ void FParser::SF_CloseDoor(void)
|
|||
else speed = 1; // 1= normal speed
|
||||
|
||||
EV_DoDoor(DDoor::doorClose, NULL, NULL, sectag, 2.*clamp(speed, 1, 127), 0, 0, 0);
|
||||
QzDoom_HapticEvent("doorclose", 0, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@
|
|||
#include "d_net.h"
|
||||
#include "serializer.h"
|
||||
#include "vm.h"
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
//===========================================================================
|
||||
//
|
||||
|
@ -107,6 +108,9 @@ bool FWeaponSlot::AddWeapon(PClassActor *type)
|
|||
}
|
||||
WeaponInfo info = { type, -1 };
|
||||
Weapons.Push(info);
|
||||
|
||||
QzDoom_HapticEvent("pickup_weapon", 0, 100, 0, 0);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,6 +43,8 @@
|
|||
#include "r_utility.h"
|
||||
#include "actorinlines.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
#define ST_RAMPAGEDELAY (2*TICRATE)
|
||||
#define ST_MUCHPAIN 20
|
||||
|
||||
|
@ -339,8 +341,6 @@ bool FMugShot::SetState(const char *state_name, bool wait_till_done, bool reset)
|
|||
//
|
||||
//===========================================================================
|
||||
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
|
||||
CVAR(Bool,st_oldouch,false,CVAR_ARCHIVE)
|
||||
int FMugShot::UpdateState(player_t *player, StateFlags stateflags)
|
||||
{
|
||||
|
@ -356,6 +356,8 @@ int FMugShot::UpdateState(player_t *player, StateFlags stateflags)
|
|||
if (vr_pickup_haptic_level > 0.0) {
|
||||
QzDoom_Vibrate(80, 0, vr_pickup_haptic_level); // left
|
||||
QzDoom_Vibrate(80, 1, vr_pickup_haptic_level); // right
|
||||
|
||||
QzDoom_HapticEvent("pickup", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
SetState("grin", false);
|
||||
|
|
|
@ -70,6 +70,7 @@ EXTERN_CVAR(Bool, vr_teleport);
|
|||
EXTERN_CVAR(Bool, vr_switch_sticks);
|
||||
EXTERN_CVAR(Bool, vr_secondary_button_mappings);
|
||||
EXTERN_CVAR(Bool, vr_two_handed_weapons);
|
||||
EXTERN_CVAR (Bool, vr_bhaptics)
|
||||
|
||||
//HUD control
|
||||
EXTERN_CVAR(Float, vr_hud_scale);
|
||||
|
@ -434,6 +435,14 @@ namespace s3d
|
|||
|
||||
QzDoom_FrameSetup();
|
||||
|
||||
if (vr_bhaptics)
|
||||
{
|
||||
QzDoom_HapticEnable();
|
||||
} else
|
||||
{
|
||||
QzDoom_HapticDisable();
|
||||
}
|
||||
|
||||
if (shutdown)
|
||||
{
|
||||
ST_Endoom();
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
#include "gl/system/gl_cvars.h"
|
||||
#include "version.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
// Set up 3D-specific console variables:
|
||||
CVAR(Int, vr_mode, 15, CVAR_GLOBALCONFIG)
|
||||
|
||||
|
@ -74,6 +76,16 @@ CVAR(Bool, vr_momentum, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG) // Only used in
|
|||
|
||||
CVAR(Float, vr_pickup_haptic_level, 0.2, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
CVAR(Float, vr_quake_haptic_level, 0.8, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
CUSTOM_CVAR(Bool, vr_bhaptics, false, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
{
|
||||
if (self)
|
||||
{
|
||||
QzDoom_HapticEnable();
|
||||
} else
|
||||
{
|
||||
QzDoom_HapticDisable();
|
||||
}
|
||||
}
|
||||
|
||||
//HUD control
|
||||
CVAR(Float, vr_hud_scale, 0.25f, CVAR_ARCHIVE | CVAR_GLOBALCONFIG)
|
||||
|
|
|
@ -67,6 +67,8 @@
|
|||
#include "events.h"
|
||||
#include "actorinlines.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
static FRandom pr_botrespawn ("BotRespawn");
|
||||
static FRandom pr_killmobj ("ActorDie");
|
||||
FRandom pr_damagemobj ("ActorTakeDamage");
|
||||
|
@ -1000,8 +1002,6 @@ static int hasBuddha(player_t *player)
|
|||
return 0;
|
||||
}
|
||||
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
|
||||
// Returns the amount of damage actually inflicted upon the target, or -1 if
|
||||
// the damage was cancelled.
|
||||
static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int damage, FName mod, int flags, DAngle angle, bool& needevent)
|
||||
|
@ -1356,6 +1356,20 @@ static int DamageMobj (AActor *target, AActor *inflictor, AActor *source, int da
|
|||
float level = (float)(0.4 + (0.6 * (temp / 100.0)));
|
||||
QzDoom_Vibrate(200, 0, level); // left
|
||||
QzDoom_Vibrate(200, 1, level); // right
|
||||
|
||||
DAngle attackAngle = angle.Degrees - player->mo->Angles.Yaw;
|
||||
|
||||
if (mod == NAME_None)
|
||||
{
|
||||
if (damage >= 15) {
|
||||
QzDoom_HapticEvent("shotgun", 0, 100, attackAngle.Normalized360().Degrees, 0);
|
||||
}
|
||||
else {
|
||||
QzDoom_HapticEvent("bullet", 0, 100, attackAngle.Normalized360().Degrees, 0);
|
||||
}
|
||||
} else {
|
||||
QzDoom_HapticEvent(mod, 0, 100, attackAngle.Normalized360().Degrees, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1763,6 +1777,18 @@ void P_PoisonDamage (player_t *player, AActor *source, int damage, bool playPain
|
|||
P_AutoUseHealth(player, damage - player->health+1);
|
||||
}
|
||||
player->health -= damage; // mirror mobj health here for Dave
|
||||
|
||||
if (player == &players[consoleplayer])
|
||||
{
|
||||
//Haptic feedback when hurt - level indicates amount of damage
|
||||
float temp = damage < 100 ? damage : 100;
|
||||
float level = (float)(0.4 + (0.6 * (temp / 100.0)));
|
||||
QzDoom_Vibrate(500, 0, level); // left
|
||||
QzDoom_Vibrate(500, 1, level); // right
|
||||
|
||||
QzDoom_HapticEvent(player->poisontype, 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
if (player->health < 50 && !deathmatch)
|
||||
{
|
||||
P_AutoUseStrifeHealth(player);
|
||||
|
|
|
@ -102,6 +102,8 @@
|
|||
#include "g_levellocals.h"
|
||||
#include "actorinlines.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
CVAR(Bool, cl_bloodsplats, true, CVAR_ARCHIVE)
|
||||
CVAR(Int, sv_smartaim, 0, CVAR_ARCHIVE | CVAR_SERVERINFO)
|
||||
CVAR(Bool, cl_doautoaim, false, CVAR_ARCHIVE)
|
||||
|
@ -4445,7 +4447,6 @@ static ETraceStatus CheckForActor(FTraceResults &res, void *userdata)
|
|||
//
|
||||
//==========================================================================
|
||||
EXTERN_CVAR(Int, vr_control_scheme)
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
extern bool weaponStabilised;
|
||||
|
||||
AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
|
||||
|
@ -4490,8 +4491,11 @@ AActor *P_LineAttack(AActor *t1, DAngle angle, double distance,
|
|||
//Haptics
|
||||
long rightHanded = vr_control_scheme < 10;
|
||||
QzDoom_Vibrate(150, rightHanded ? 1 : 0, 0.8);
|
||||
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100, 0, 0);
|
||||
|
||||
if (weaponStabilised) {
|
||||
QzDoom_Vibrate(150, rightHanded ? 0 : 1, 0.6);
|
||||
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -109,6 +109,8 @@
|
|||
#include "actorinlines.h"
|
||||
#include "a_dynlight.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
// MACROS ------------------------------------------------------------------
|
||||
|
||||
#define WATER_SINK_FACTOR 0.125
|
||||
|
@ -915,6 +917,16 @@ bool P_GiveBody(AActor *actor, int num, int max)
|
|||
{
|
||||
player->health = max;
|
||||
}
|
||||
|
||||
if (player == &players[consoleplayer])
|
||||
{
|
||||
float level = (float)(0.4 + (0.6 * (num / 100.0)));
|
||||
QzDoom_Vibrate(100, 0, level); // left
|
||||
QzDoom_Vibrate(100, 1, level); // right
|
||||
|
||||
QzDoom_HapticEvent("healstation", 0, 100 * level, 0, 0);
|
||||
}
|
||||
|
||||
actor->health = player->health;
|
||||
return true;
|
||||
}
|
||||
|
@ -6727,7 +6739,6 @@ DEFINE_ACTION_FUNCTION(AActor, SpawnSubMissile)
|
|||
================
|
||||
*/
|
||||
EXTERN_CVAR(Int, vr_control_scheme)
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
extern bool weaponStabilised;
|
||||
|
||||
AActor *P_SpawnPlayerMissile (AActor *source, double x, double y, double z,
|
||||
|
@ -6848,9 +6859,11 @@ AActor *P_SpawnPlayerMissile (AActor *source, double x, double y, double z,
|
|||
//Haptics
|
||||
long rightHanded = vr_control_scheme < 10;
|
||||
QzDoom_Vibrate(150, rightHanded ? 1 : 0, 0.8);
|
||||
QzDoom_HapticEvent("fire_weapon", rightHanded ? 2 : 1, 100, 0, 0);
|
||||
if (weaponStabilised)
|
||||
{
|
||||
QzDoom_Vibrate(150, rightHanded ? 0 : 1, 0.6);
|
||||
QzDoom_HapticEvent("fire_weapon", rightHanded ? 1 : 2, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -58,6 +58,7 @@
|
|||
**
|
||||
*/
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
#include "templates.h"
|
||||
#include "doomdef.h"
|
||||
#include "d_event.h"
|
||||
|
@ -1259,6 +1260,22 @@ void P_PlayerThink (player_t *player)
|
|||
I_Error ("No player %td start\n", player - players + 1);
|
||||
}
|
||||
|
||||
static int previous_health = 0;
|
||||
|
||||
if (previous_health != player->health)
|
||||
{
|
||||
if (player->health > previous_health)
|
||||
{
|
||||
QzDoom_HapticEvent("healstation", 0, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
else if (player->health > 0 && player->health < 40)
|
||||
{
|
||||
//heartbeat is a special case that uses intensity for a different purpose
|
||||
QzDoom_HapticEvent("heartbeat", 0, player->health, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
if (player->SubtitleCounter > 0)
|
||||
{
|
||||
player->SubtitleCounter--;
|
||||
|
@ -1285,11 +1302,14 @@ void P_PlayerThink (player_t *player)
|
|||
// Don't interpolate the view for more than one tic
|
||||
player->cheats &= ~CF_INTERPVIEW;
|
||||
|
||||
|
||||
IFVIRTUALPTRNAME(player->mo, NAME_PlayerPawn, PlayerThink)
|
||||
{
|
||||
VMValue param = player->mo;
|
||||
VMCall(func, ¶m, 1, nullptr, 0);
|
||||
}
|
||||
|
||||
previous_health = player->health;
|
||||
}
|
||||
|
||||
void P_PredictionLerpReset()
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
#include "i_time.h"
|
||||
#include "actorinlines.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
// EXTERNAL DATA DECLARATIONS ----------------------------------------------
|
||||
|
||||
|
@ -748,7 +749,6 @@ static double QuakePower(double factor, double intensity, double offset)
|
|||
return factor * (offset + randumb);
|
||||
}
|
||||
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
|
||||
//==========================================================================
|
||||
//
|
||||
|
@ -928,6 +928,9 @@ void R_SetupFrame (FRenderViewpoint &viewpoint, FViewWindow &viewwindow, AActor
|
|||
double right = QuakePower(vr_quake_haptic_level, jiggers.Intensity.Y, jiggers.Offset.Y);
|
||||
QzDoom_Vibrate(10, 0, (float)left); // left
|
||||
QzDoom_Vibrate(10, 1, (float)right); // right
|
||||
|
||||
QzDoom_HapticEvent("rumble_front", 0, 100 * left, 120, 0);
|
||||
QzDoom_HapticEvent("rumble_back", 0, 100 * right, 120, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -54,6 +54,8 @@
|
|||
#include "g_levellocals.h"
|
||||
#include "vm.h"
|
||||
|
||||
#include <QzDoom/VrCommon.h>
|
||||
|
||||
CVAR( Float, blood_fade_scalar, 0.0f, CVAR_ARCHIVE ) // Default ro 0.0 for VR
|
||||
CVAR( Float, pickup_fade_scalar, 0.0f, CVAR_ARCHIVE ) // Default ro 0.0 for VR
|
||||
|
||||
|
@ -101,8 +103,6 @@ void V_AddBlend (float r, float g, float b, float a, float v_blend[4])
|
|||
//
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
extern "C" void QzDoom_Vibrate(float duration, int channel, float intensity );
|
||||
|
||||
void V_AddPlayerBlend (player_t *CPlayer, float blend[4], float maxinvalpha, int maxpainblend)
|
||||
{
|
||||
int cnt;
|
||||
|
@ -134,6 +134,8 @@ void V_AddPlayerBlend (player_t *CPlayer, float blend[4], float maxinvalpha, int
|
|||
if (vr_pickup_haptic_level > 0.0) {
|
||||
QzDoom_Vibrate(50, 0, vr_pickup_haptic_level); // left
|
||||
QzDoom_Vibrate(50, 1, vr_pickup_haptic_level); // right
|
||||
|
||||
QzDoom_HapticEvent("pickup", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
// [SP] Allow player to tone down intensity of pickup flash.
|
||||
|
|
|
@ -2345,6 +2345,8 @@ OptionMenu VROptionsMenu protected
|
|||
StaticText "Haptics"
|
||||
Slider "Item Pickup Haptic Level", "vr_pickup_haptic_level", 0.0, 1.0, 0.1, 2
|
||||
Slider "Quake Haptic Level", "vr_quake_haptic_level", 0.0, 1.0, 0.1, 2
|
||||
StaticText ""
|
||||
Option "bHaptics Support", "vr_bhaptics", "OnOff"
|
||||
|
||||
StaticText ""
|
||||
StaticText "Weapon"
|
||||
|
|
BIN
Projects/Android/libs/bhaptics_ble.aar
Normal file
BIN
Projects/Android/libs/bhaptics_ble.aar
Normal file
Binary file not shown.
BIN
Projects/Android/libs/bhaptics_commons.aar
Normal file
BIN
Projects/Android/libs/bhaptics_commons.aar
Normal file
Binary file not shown.
BIN
Projects/Android/libs/bhaptics_core.aar
Normal file
BIN
Projects/Android/libs/bhaptics_core.aar
Normal file
Binary file not shown.
BIN
Projects/Android/libs/bhaptics_manager.aar
Normal file
BIN
Projects/Android/libs/bhaptics_manager.aar
Normal file
Binary file not shown.
1
assets/bHaptics/Damage/Body_DMG_Bullet.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Bullet.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614045611893,"description":"","id":"-MUBbNia2pxTI9bYQH4k","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":0.21,"name":"Body_DMG_Bullet","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.496,"y":0.499}],"visible":true}]}}},"name":"path","offsetTime":100,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.7,"time":0,"x":0.496,"y":0.502},{"intensity":0.7,"time":200,"x":0.803,"y":0.116}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.7,"time":0,"x":0.499,"y":0.502},{"intensity":0.7,"time":200,"x":0.8,"y":0.87}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.7,"time":0,"x":0.499,"y":0.503},{"intensity":0.7,"time":200,"x":0.197,"y":0.112}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.7,"time":0,"x":0.498,"y":0.502},{"intensity":0.7,"time":200,"x":0.197,"y":0.87}],"visible":true}]}}},"name":"path","offsetTime":200,"startTime":10}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614046809138},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_DMG_Electric.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Electric.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Damage/Body_DMG_Falling.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Falling.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614061945366,"description":"","id":"-MUC_gA_V0xawHHkzj_V","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_DMG_Falling","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":160,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.5},{"index":17,"intensity":0.5},{"index":13,"intensity":0.5},{"index":14,"intensity":0.5},{"index":18,"intensity":0.5},{"index":19,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0,"y":1},{"intensity":0.5,"time":160,"x":0.31,"y":1}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":160,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.5},{"index":17,"intensity":0.5},{"index":13,"intensity":0.5},{"index":14,"intensity":0.5},{"index":18,"intensity":0.5},{"index":19,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":160,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":73,"playbackType":"FADE_IN_OUT","pointList":[{"index":16,"intensity":0.4},{"index":17,"intensity":0.4},{"index":18,"intensity":0.4},{"index":19,"intensity":0.4}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0,"y":1},{"intensity":0.5,"time":73,"x":0.31,"y":1}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":73,"playbackType":"FADE_IN_OUT","pointList":[{"index":16,"intensity":0.4},{"index":17,"intensity":0.4},{"index":18,"intensity":0.4},{"index":19,"intensity":0.4}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 1","offsetTime":73,"startTime":125,"trackIndex":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":234,"playbackType":"FADE_IN_OUT","pointList":[{"index":16,"intensity":0.8},{"index":17,"intensity":0.8},{"index":13,"intensity":0.8},{"index":14,"intensity":0.8},{"index":18,"intensity":0.8},{"index":19,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0,"y":1},{"intensity":0.5,"time":234,"x":0.31,"y":1}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":234,"playbackType":"FADE_IN_OUT","pointList":[{"index":16,"intensity":0.8},{"index":17,"intensity":0.8},{"index":13,"intensity":0.8},{"index":14,"intensity":0.8},{"index":18,"intensity":0.8},{"index":19,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 2","offsetTime":234,"startTime":183,"trackIndex":0}],"enable":true},{"enable":true,"effects":[]}],"type":"project","updatedAt":1614062086876},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_DMG_Fire.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Fire.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Damage/Body_DMG_Fireball.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Fireball.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Damage/Body_DMG_Melee1.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Melee1.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614048794073,"description":"","id":"-MUBnWcADf5KMVyhKI-w","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_DMG_Melee1","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":301,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":301,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.05,"y":0.05},{"intensity":1,"time":202,"x":0.36,"y":0.61},{"intensity":1,"time":301,"x":0.36,"y":0.92}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.9,"time":0,"x":0.36,"y":0.02},{"intensity":0.9,"time":177,"x":0.67,"y":0.56},{"intensity":0.9,"time":301,"x":0.56,"y":0.98}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.8,"time":0,"x":0.52,"y":0},{"intensity":0.8,"time":164,"x":0.95,"y":0.49},{"intensity":0.8,"time":301,"x":0.74,"y":0.99}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.21,"y":0.01},{"intensity":1,"time":186,"x":0.52,"y":0.59},{"intensity":1,"time":301,"x":0.45,"y":0.99}],"visible":true}]}}},"name":"Effect 1","offsetTime":301,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614048846823},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_DMG_Melee2.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Melee2.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614048803886,"description":"","id":"-MUBnZ0WpNnym9JDjO35","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_DMG_Melee2","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":353,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":353,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":1,"time":0,"x":0.14,"y":0.1},{"intensity":1,"time":112,"x":0.19,"y":0.64},{"intensity":1,"time":170,"x":0.04,"y":0.4},{"intensity":1,"time":230,"x":0.33,"y":0.37},{"intensity":1,"time":285,"x":0.39,"y":0.63},{"intensity":1,"time":353,"x":0.39,"y":0.95}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":1,"time":0,"x":0.6,"y":0.02},{"intensity":1,"time":105,"x":0.86,"y":0.46},{"intensity":1,"time":166,"x":0.84,"y":0.16},{"intensity":1,"time":231,"x":0.57,"y":0.33},{"intensity":1,"time":289,"x":0.68,"y":0.59},{"intensity":1,"time":353,"x":0.82,"y":0.86}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.33,"y":0},{"intensity":1,"time":353,"x":0.64,"y":0.99}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.14,"y":0},{"intensity":1,"time":353,"x":0.49,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0},{"intensity":1,"time":353,"x":0.8,"y":0.95}],"visible":true}]}}},"name":"Effect 1","offsetTime":353,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614048856777},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_DMG_Shotgun.tact
Normal file
1
assets/bHaptics/Damage/Body_DMG_Shotgun.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614045602307,"description":"","id":"-MUBbLNpMc_4cg2om2f6","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":0.226,"name":"Body_DMG_Shotgun","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":9,"intensity":1},{"index":10,"intensity":1},{"index":6,"intensity":1},{"index":5,"intensity":1},{"index":13,"intensity":1},{"index":14,"intensity":1},{"index":0,"intensity":1},{"index":3,"intensity":1},{"index":16,"intensity":1},{"index":19,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"path","offsetTime":150,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_IN","pointList":[{"index":10,"intensity":1},{"index":9,"intensity":1},{"index":14,"intensity":1},{"index":13,"intensity":1},{"index":5,"intensity":1},{"index":6,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.357,"y":0.017},{"intensity":0.5,"time":150,"x":0.69,"y":0.021}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"path","offsetTime":150,"startTime":76}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614046862534},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_Heartbeat.tact
Normal file
1
assets/bHaptics/Damage/Body_Heartbeat.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614060274647,"description":"","id":"-MUCUJH_9e0MdvLOR8ly","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Heartbeat","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":true,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":88,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":176,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.4},{"index":5,"intensity":0.4},{"index":0,"intensity":0.4}],"startTime":88},{"endTime":265,"playbackType":"NONE","startTime":176,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":265,"startTime":0}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":true,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":74,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":148,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.4},{"index":5,"intensity":0.4}],"startTime":74},{"endTime":223,"playbackType":"NONE","startTime":148,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":223,"startTime":266}],"enable":true}],"updatedAt":1614060291468},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Damage/Body_Shield_Break.tact
Normal file
1
assets/bHaptics/Damage/Body_Shield_Break.tact
Normal file
File diff suppressed because one or more lines are too long
167
assets/bHaptics/Interaction/Arms/Ammo_L.tact
Normal file
167
assets/bHaptics/Interaction/Arms/Ammo_L.tact
Normal file
|
@ -0,0 +1,167 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588717308064,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Arm_Ammo_L",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 208,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.22,
|
||||
"y": 0.66
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 95,
|
||||
"x": 0.98,
|
||||
"y": 0.36
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 154,
|
||||
"x": 0.48,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 208,
|
||||
"x": 0.2,
|
||||
"y": 0.12
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 208,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 208,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588717323608
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
173
assets/bHaptics/Interaction/Arms/Ammo_R.tact
Normal file
173
assets/bHaptics/Interaction/Arms/Ammo_R.tact
Normal file
|
@ -0,0 +1,173 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588717167212,
|
||||
"description": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Arm_Ammo_R",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 208,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"visible": true,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 208,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.22,
|
||||
"y": 0.66
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 95,
|
||||
"x": 0.98,
|
||||
"y": 0.36
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 154,
|
||||
"x": 0.48,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 208,
|
||||
"x": 0.2,
|
||||
"y": 0.12
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 208,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588717291718
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Interaction/Arms/Healthstation_L.tact
Normal file
1
assets/bHaptics/Interaction/Arms/Healthstation_L.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Interaction/Arms/Healthstation_R.tact
Normal file
1
assets/bHaptics/Interaction/Arms/Healthstation_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1588851459789,"description":"","id":"","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"HealthStationUseRightArm_1","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":308,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":308,"startTime":0},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":302,"playbackType":"FADE_IN_OUT","pointList":[{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 3","offsetTime":302,"startTime":219},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":301,"playbackType":"FADE_IN_OUT","pointList":[{"index":1,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 5","offsetTime":301,"startTime":467},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":303,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 7","offsetTime":303,"startTime":616}],"enable":true},{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":308,"playbackType":"FADE_IN_OUT","pointList":[{"index":4,"intensity":0.5}],"startTime":0}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":308,"startTime":86},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":309,"playbackType":"FADE_IN_OUT","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 4","offsetTime":309,"startTime":465},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":301,"playbackType":"FADE_IN_OUT","pointList":[{"index":4,"intensity":0.5}],"startTime":0}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 6","offsetTime":301,"startTime":274},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":301,"playbackType":"FADE_IN_OUT","pointList":[{"index":5,"intensity":0.5}],"startTime":0}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 8","offsetTime":301,"startTime":694}],"enable":true}],"updatedAt":1588851566466},"durationMillis":0,"intervalMillis":20,"size":20}
|
193
assets/bHaptics/Interaction/Arms/Pickup_L.tact
Normal file
193
assets/bHaptics/Interaction/Arms/Pickup_L.tact
Normal file
|
@ -0,0 +1,193 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588700875148,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Arm_Pickup_L",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 250,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.02
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0,
|
||||
"y": 0.56
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0.5,
|
||||
"y": 0.01
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0.49,
|
||||
"y": 0.55
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0.99,
|
||||
"y": 0.02
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0.98,
|
||||
"y": 0.54
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 250,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 250,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588700906413
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
199
assets/bHaptics/Interaction/Arms/Pickup_R.tact
Normal file
199
assets/bHaptics/Interaction/Arms/Pickup_R.tact
Normal file
|
@ -0,0 +1,199 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588700778838,
|
||||
"description": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Arm_Pickup_R",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 250,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"visible": true,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 250,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.02
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0,
|
||||
"y": 0.56
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0.5,
|
||||
"y": 0.01
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0.49,
|
||||
"y": 0.55
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 0,
|
||||
"x": 0.99,
|
||||
"y": 0.02
|
||||
},
|
||||
{
|
||||
"intensity": 0.6,
|
||||
"time": 250,
|
||||
"x": 0.98,
|
||||
"y": 0.54
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 250,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1589043737549
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Interaction/Vest/Body_Chamber_Down.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Chamber_Down.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Interaction/Vest/Body_Chamber_Up.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Chamber_Up.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Interaction/Vest/Body_Door_Close.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Door_Close.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614063336654,"description":"","id":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Door_Close","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":230,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":230,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0.5},{"intensity":0.5,"time":230,"x":0.33,"y":0.26}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0.5},{"intensity":0.5,"time":230,"x":0.67,"y":0.26}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0.76},{"intensity":0.5,"time":230,"x":0.33,"y":0.5}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0.75},{"intensity":0.5,"time":230,"x":0.67,"y":0.5}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":1},{"intensity":0.5,"time":230,"x":0.34,"y":0.75}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":1,"y":1},{"intensity":0.5,"time":230,"x":0.66,"y":0.75}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":1},{"intensity":0.5,"time":230,"x":0.33,"y":1}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":1,"y":1},{"intensity":0.5,"time":230,"x":0.66,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0.26},{"intensity":0.5,"time":230,"x":0.66,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0.25},{"intensity":0.5,"time":230,"x":0.33,"y":0}],"visible":true}]}}},"name":"Effect 1 copy 1","offsetTime":230,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614063362236},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_Door_Open.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Door_Open.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614063063033,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Door_Open","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":217,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":217,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_TDM","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.34,"y":0.24},{"intensity":0.5,"time":217,"x":0,"y":0.51}],"visible":true},{"movingPattern":"CONST_TDM","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.65,"y":0.24},{"intensity":0.5,"time":217,"x":1,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.33,"y":0.5},{"intensity":0.5,"time":217,"x":0.01,"y":0.75}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.65,"y":0.49},{"intensity":0.5,"time":217,"x":1,"y":0.73}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.34,"y":0.75},{"intensity":0.5,"time":217,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.67,"y":0.76},{"intensity":0.5,"time":217,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.32,"y":1},{"intensity":0.5,"time":217,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.66,"y":1},{"intensity":0.5,"time":217,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.33,"y":0},{"intensity":0.5,"time":217,"x":0,"y":0.25}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.67,"y":0},{"intensity":0.5,"time":217,"x":1,"y":0.25}],"visible":true}]}}},"name":"Effect 1 copy 2","offsetTime":217,"startTime":0,"trackIndex":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614063346600,"id":"-MUCdx25tnUtC83vU_O_"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_Healstation.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Healstation.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614048923930,"description":"","id":"-MUBo0KAj1FzMlYj4yfu","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":0.35,"name":"Body_Healstation","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":350,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":350,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.3,"time":0,"x":0.51,"y":0.23},{"intensity":0.3,"time":350,"x":0.52,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.3,"time":0,"x":0.49,"y":0.72},{"intensity":0.3,"time":350,"x":0.49,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.3,"time":0,"x":0.73,"y":0.5},{"intensity":0.3,"time":350,"x":1,"y":0.49}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.3,"time":0,"x":0.27,"y":0.49},{"intensity":0.3,"time":350,"x":0,"y":0.49}],"visible":true}]}}},"name":"path","offsetTime":350,"startTime":0}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":350,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":350,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.3,"time":0,"x":0.72,"y":0.25},{"intensity":0.3,"time":350,"x":0.99,"y":0.01}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.3,"time":0,"x":0.3,"y":0.74},{"intensity":0.3,"time":350,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.3,"time":0,"x":0.67,"y":0.75},{"intensity":0.3,"time":350,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.3,"time":0,"x":0.31,"y":0.24},{"intensity":0.3,"time":350,"x":0.03,"y":0.01}],"visible":true}]}}},"name":"path","offsetTime":350,"startTime":0}],"enable":true}],"updatedAt":1614049113924},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_Machine.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Machine.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614063413232,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Machine","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"FADE_IN_OUT","pointList":[{"index":13,"intensity":0.5},{"index":14,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":298,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"FADE_IN_OUT","pointList":[{"index":13,"intensity":0.5},{"index":14,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 1","offsetTime":298,"startTime":347,"trackIndex":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":298,"playbackType":"FADE_IN_OUT","pointList":[{"index":13,"intensity":0.5},{"index":14,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 2","offsetTime":298,"startTime":702,"trackIndex":0}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":1000,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":1000,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.3},{"index":17,"intensity":0.3},{"index":18,"intensity":0.3},{"index":19,"intensity":0.3}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 3","offsetTime":1000,"startTime":0}],"enable":true}],"updatedAt":1614063705984,"id":"-MUCfHXx-zz4KoeRP_v1"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_PDA_Alarm.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_PDA_Alarm.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614048441563,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_PDA_Alarm","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":202,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":40,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":80,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.6}],"startTime":40},{"endTime":121,"playbackType":"NONE","startTime":80,"pointList":[]},{"endTime":161,"playbackType":"NONE","startTime":121,"pointList":[]},{"endTime":202,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.6}],"startTime":161}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":202,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614048508550,"id":"-MUBmAZBAeIZNmVj8k8a"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_PDA_Finger.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_PDA_Finger.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614060143447,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_PDA_Finger","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":347,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":86,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":173,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":86},{"endTime":260,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":173},{"endTime":347,"playbackType":"NONE","startTime":260,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0},{"intensity":0.5,"time":347,"x":0.9,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":347,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614060200236,"id":"-MUCToF_mIXDgIceXCaj"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_PDA_Open.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_PDA_Open.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614048554978,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_PDA_Open","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":163,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":163,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0},{"intensity":0.5,"time":163,"x":0,"y":0.29}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0},{"intensity":0.5,"time":163,"x":0.16,"y":0.14}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0},{"intensity":0.5,"time":163,"x":0.34,"y":0.01}],"visible":true}]}}},"name":"Effect 1","offsetTime":163,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614048660495,"id":"-MUBmbFHP9bG-hyPjr1Z"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_PDA_Touch.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_PDA_Touch.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614060214763,"description":"","id":"-MUCU4esW4e8vBZrNQJ9","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_PDA_Touch","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":347,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":69,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":138,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":69},{"endTime":208,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":138},{"endTime":277,"playbackType":"NONE","startTime":208,"pointList":[]},{"endTime":347,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":277}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0},{"intensity":0.5,"time":347,"x":0.9,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":347,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614060229676},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Interaction/Vest/Body_Rumble.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Rumble.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Interaction/Vest/Body_Scan.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Scan.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Interaction/Vest/Body_Shield_Get.tact
Normal file
1
assets/bHaptics/Interaction/Vest/Body_Shield_Get.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614045491186,"description":"","id":"-MUBavF_CdJJCd6uDvQ1","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Shield_Get","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":70,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.3},{"index":16,"intensity":0.3},{"index":10,"intensity":0.3},{"index":19,"intensity":0.3},{"index":3,"intensity":0.3},{"index":9,"intensity":0.3}],"startTime":0},{"endTime":141,"playbackType":"NONE","startTime":70,"pointList":[]},{"endTime":211,"playbackType":"NONE","startTime":141,"pointList":[]},{"endTime":282,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.3},{"index":9,"intensity":0.3},{"index":0,"intensity":0.3},{"index":10,"intensity":0.3},{"index":3,"intensity":0.3},{"index":19,"intensity":0.3}],"startTime":211},{"endTime":353,"playbackType":"NONE","startTime":282,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":88,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.3},{"index":16,"intensity":0.3},{"index":10,"intensity":0.3},{"index":19,"intensity":0.3},{"index":3,"intensity":0.3},{"index":9,"intensity":0.3}],"startTime":0},{"endTime":176,"playbackType":"NONE","startTime":88,"pointList":[]},{"endTime":264,"playbackType":"NONE","startTime":176,"pointList":[]},{"endTime":353,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.3},{"index":9,"intensity":0.3},{"index":0,"intensity":0.3},{"index":10,"intensity":0.3},{"index":3,"intensity":0.3},{"index":19,"intensity":0.3}],"startTime":264},{"endTime":353,"playbackType":"NONE","startTime":353,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":353,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"type":"project","updatedAt":1614047144270},"durationMillis":0,"intervalMillis":20,"size":20}
|
409
assets/bHaptics/Interaction/Vest/Body_Weapon_Get.tact
Normal file
409
assets/bHaptics/Interaction/Vest/Body_Weapon_Get.tact
Normal file
|
@ -0,0 +1,409 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1589029601439,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"VestBack": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 0.667,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 0.333,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 6,
|
||||
"x": 0.667,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 7,
|
||||
"x": 1,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 8,
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 9,
|
||||
"x": 0.333,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 10,
|
||||
"x": 0.667,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 11,
|
||||
"x": 1,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 12,
|
||||
"x": 0,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 13,
|
||||
"x": 0.333,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 14,
|
||||
"x": 0.667,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 15,
|
||||
"x": 1,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 16,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 17,
|
||||
"x": 0.333,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 18,
|
||||
"x": 0.667,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 19,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"VestFront": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.333,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 0.667,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 0.333,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 6,
|
||||
"x": 0.667,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 7,
|
||||
"x": 1,
|
||||
"y": 0.25
|
||||
},
|
||||
{
|
||||
"index": 8,
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 9,
|
||||
"x": 0.333,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 10,
|
||||
"x": 0.667,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 11,
|
||||
"x": 1,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"index": 12,
|
||||
"x": 0,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 13,
|
||||
"x": 0.333,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 14,
|
||||
"x": 0.667,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 15,
|
||||
"x": 1,
|
||||
"y": 0.75
|
||||
},
|
||||
{
|
||||
"index": 16,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 17,
|
||||
"x": 0.333,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 18,
|
||||
"x": 0.667,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 19,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactot",
|
||||
"type": "Tactot"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Body_Weapon_Get",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"VestBack": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 502,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.95,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 502,
|
||||
"x": 0.77,
|
||||
"y": 0.61
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.65,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 502,
|
||||
"x": 0.54,
|
||||
"y": 0.57
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.79,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 502,
|
||||
"x": 0.65,
|
||||
"y": 0.57
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"VestFront": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 502,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 502,
|
||||
"startTime": 152
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"VestBack": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 197,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"visible": true,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"VestFront": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 197,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.95,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.73,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 2",
|
||||
"offsetTime": 197,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
}
|
||||
],
|
||||
"updatedAt": 1589029660469
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Weapon/Arms/Assault_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Assault_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168634289,"description":"","id":"-MSRjGmM2ytqgSqK-Apw","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Assault_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0,"y":0},{"intensity":1,"time":200,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0},{"intensity":1,"time":200,"x":0.5,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":1,"y":0},{"intensity":1,"time":200,"x":1,"y":1}],"visible":true}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168897099},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Assault_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Assault_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168878235,"description":"","id":"-MSRkCL-SqYQqdGzNNLy","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Assault_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0,"y":0},{"intensity":1,"time":200,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0},{"intensity":1,"time":200,"x":0.5,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":1,"y":0},{"intensity":1,"time":200,"x":1,"y":1}],"visible":true}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168895697},"durationMillis":0,"intervalMillis":20,"size":20}
|
231
assets/bHaptics/Weapon/Arms/Grenade_L.tact
Normal file
231
assets/bHaptics/Weapon/Arms/Grenade_L.tact
Normal file
|
@ -0,0 +1,231 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588694961787,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Grenade_L",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 296,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.75,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 296,
|
||||
"x": 0.75,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.24,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 296,
|
||||
"x": 0.25,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 296,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 296,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588694984637
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
237
assets/bHaptics/Weapon/Arms/Grenade_R.tact
Normal file
237
assets/bHaptics/Weapon/Arms/Grenade_R.tact
Normal file
|
@ -0,0 +1,237 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588694896713,
|
||||
"description": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Grenade_R",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 296,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"visible": true,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 296,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 296,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.75,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 296,
|
||||
"x": 0.75,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN_OUT",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0.24,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 296,
|
||||
"x": 0.25,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 296,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588694953997
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Weapon/Arms/Melee_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Melee_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612169017940,"description":"","id":"-MSRkjRx7H_VMcLDlMGJ","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Melee_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0,"y":0.02},{"intensity":0.6,"time":250,"x":0,"y":0.56}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0.5,"y":0.01},{"intensity":0.6,"time":250,"x":0.49,"y":0.55}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0.99,"y":0.02},{"intensity":0.6,"time":250,"x":0.98,"y":0.54}],"visible":true}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":250,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612169050094},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Melee_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Melee_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612169035205,"description":"","id":"-MSRknefee1BQCXRSIas","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Melee_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0,"y":0.02},{"intensity":0.6,"time":250,"x":0,"y":0.56}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0.5,"y":0.01},{"intensity":0.6,"time":250,"x":0.49,"y":0.55}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.6,"time":0,"x":0.99,"y":0.02},{"intensity":0.6,"time":250,"x":0.98,"y":0.54}],"visible":true}]}}},"name":"Effect 1","offsetTime":250,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612169051456},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Pistol_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Pistol_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168622867,"description":"","id":"-MSRjDzsElxGVdblUldv","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Pistol_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":1},{"index":4,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":5,"intensity":0.5},{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1 copy","offsetTime":200,"startTime":0}],"enable":true}],"updatedAt":1612168793157},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Pistol_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Pistol_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168768710,"description":"","id":"-MSRjmagjbBkdUAA6DCa","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Pistol_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":1},{"index":4,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]},{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":5,"intensity":0.5},{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1 copy","offsetTime":200,"startTime":0}],"enable":true}],"updatedAt":1612168794884},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Reload_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Reload_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612169309013,"description":"","id":"-MSRlqVvfsiS46-TvT0U","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Reload_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":75,"startTime":25},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1 copy 1","offsetTime":75,"startTime":125}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612169355742},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Reload_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Reload_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612169321640,"description":"","id":"-MSRltaCurrZp-ouVkRI","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Reload_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":75,"startTime":25},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1 copy 1","offsetTime":75,"startTime":125}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612169357359},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/SMG_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/SMG_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168639167,"description":"","id":"-MSRjHy_nY7M9d-TFLpV","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"SMG_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0,"y":0.01},{"intensity":1,"time":200,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0},{"intensity":1,"time":200,"x":0.49,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":1,"y":0},{"intensity":1,"time":200,"x":1,"y":1}],"visible":true}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168853826},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/SMG_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/SMG_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168835321,"description":"","id":"-MSRk1rT8vxyttjGlqeE","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"SMG_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0,"y":0.01},{"intensity":1,"time":200,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0},{"intensity":1,"time":200,"x":0.49,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":1,"y":0},{"intensity":1,"time":200,"x":1,"y":1}],"visible":true}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168852326},"durationMillis":0,"intervalMillis":20,"size":20}
|
211
assets/bHaptics/Weapon/Arms/ShootDefault_L.tact
Normal file
211
assets/bHaptics/Weapon/Arms/ShootDefault_L.tact
Normal file
|
@ -0,0 +1,211 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588695063234,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "ShootDefault_L",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 300,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.4,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 127,
|
||||
"x": 0.39,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.51,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 144,
|
||||
"x": 0.5,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.62,
|
||||
"y": 0.01
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 129,
|
||||
"x": 0.6,
|
||||
"y": 0.49
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0.98,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 300,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 300,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588695081620
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
210
assets/bHaptics/Weapon/Arms/ShootDefault_R.tact
Normal file
210
assets/bHaptics/Weapon/Arms/ShootDefault_R.tact
Normal file
|
@ -0,0 +1,210 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588695017725,
|
||||
"description": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "ShootDefault_R",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 300,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 300,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.4,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 127,
|
||||
"x": 0.39,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.51,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 144,
|
||||
"x": 0.5,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 0,
|
||||
"x": 0.62,
|
||||
"y": 0.01
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 129,
|
||||
"x": 0.6,
|
||||
"y": 0.49
|
||||
},
|
||||
{
|
||||
"intensity": 0.5,
|
||||
"time": 300,
|
||||
"x": 0.98,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 300,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588695033727
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Weapon/Arms/Shotgun_L.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Shotgun_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168599227,"description":"","id":"-MSRj8DWBkveLxlt0UZu","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Shotgun_L","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":200,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":100},{"endTime":300,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":200},{"endTime":300,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":300}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":300,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":300,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168696673},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Arms/Shotgun_R.tact
Normal file
1
assets/bHaptics/Weapon/Arms/Shotgun_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1612168664668,"description":"","id":"-MSRjOC0HhHT_qp4y07x","layout":{"layouts":{"ForearmL":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}],"ForearmR":[{"index":0,"x":0,"y":0},{"index":1,"x":0.5,"y":0},{"index":2,"x":1,"y":0},{"index":3,"x":0,"y":1},{"index":4,"x":0.5,"y":1},{"index":5,"x":1,"y":1}]},"name":"Tactosy2","type":"Tactosy2"},"mediaFileDuration":1,"name":"Shotgun_R","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":200,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":100},{"endTime":300,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":200},{"endTime":300,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":300}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":300,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1612168694571},"durationMillis":0,"intervalMillis":20,"size":20}
|
231
assets/bHaptics/Weapon/Arms/Swap_L.tact
Normal file
231
assets/bHaptics/Weapon/Arms/Swap_L.tact
Normal file
|
@ -0,0 +1,231 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588698755921,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Swap_L",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 400,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.45
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.49
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 1,
|
||||
"y": 0.73
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 1,
|
||||
"y": 0.25
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 0,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 1,
|
||||
"y": 0.48
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 400,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 400,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588698839150
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
238
assets/bHaptics/Weapon/Arms/Swap_R.tact
Normal file
238
assets/bHaptics/Weapon/Arms/Swap_R.tact
Normal file
|
@ -0,0 +1,238 @@
|
|||
{
|
||||
"project": {
|
||||
"createdAt": 1588605979046,
|
||||
"description": "",
|
||||
"id": "",
|
||||
"layout": {
|
||||
"layouts": {
|
||||
"ForearmL": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"ForearmR": [
|
||||
{
|
||||
"index": 0,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 1,
|
||||
"x": 0.5,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 2,
|
||||
"x": 1,
|
||||
"y": 0
|
||||
},
|
||||
{
|
||||
"index": 3,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 4,
|
||||
"x": 0.5,
|
||||
"y": 1
|
||||
},
|
||||
{
|
||||
"index": 5,
|
||||
"x": 1,
|
||||
"y": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"name": "Tactosy2",
|
||||
"type": "Tactosy2"
|
||||
},
|
||||
"mediaFileDuration": 1,
|
||||
"name": "Swap_R",
|
||||
"tracks": [
|
||||
{
|
||||
"effects": [
|
||||
{
|
||||
"modes": {
|
||||
"ForearmL": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 400,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "NONE",
|
||||
"visible": true,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"ForearmR": {
|
||||
"dotMode": {
|
||||
"dotConnected": false,
|
||||
"feedback": [
|
||||
{
|
||||
"endTime": 400,
|
||||
"playbackType": "NONE",
|
||||
"startTime": 0,
|
||||
"pointList": []
|
||||
}
|
||||
]
|
||||
},
|
||||
"mode": "PATH_MODE",
|
||||
"pathMode": {
|
||||
"feedback": [
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 0.45
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 0,
|
||||
"y": 0
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 0.49
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 0,
|
||||
"y": 1
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 0.5
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 0,
|
||||
"y": 0.73
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 0,
|
||||
"y": 0.25
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
},
|
||||
{
|
||||
"movingPattern": "CONST_SPEED",
|
||||
"playbackType": "FADE_IN",
|
||||
"pointList": [
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 0,
|
||||
"x": 1,
|
||||
"y": 0.48
|
||||
},
|
||||
{
|
||||
"intensity": 0.3,
|
||||
"time": 400,
|
||||
"x": 0,
|
||||
"y": 0.48
|
||||
}
|
||||
],
|
||||
"visible": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"name": "Effect 1",
|
||||
"offsetTime": 400,
|
||||
"startTime": 0
|
||||
}
|
||||
],
|
||||
"enable": true
|
||||
},
|
||||
{
|
||||
"enable": true,
|
||||
"effects": []
|
||||
}
|
||||
],
|
||||
"updatedAt": 1588622331006
|
||||
},
|
||||
"durationMillis": 0,
|
||||
"intervalMillis": 20,
|
||||
"size": 20
|
||||
}
|
1
assets/bHaptics/Weapon/Vest/Body_BFG9000_Charge.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_BFG9000_Charge.tact
Normal file
File diff suppressed because one or more lines are too long
1
assets/bHaptics/Weapon/Vest/Body_BFG9000_Fire.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_BFG9000_Fire.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614046102790,"description":"","id":"-MUBdFZsCvT3gpjtjJ32","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_BFG9000_Fire","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":235,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5},{"index":7,"intensity":0.5},{"index":0,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":235,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":7,"intensity":0.5},{"index":2,"intensity":0.5},{"index":6,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":235,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614046167212},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Chaingun_Fire.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Chaingun_Fire.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044667362,"description":"","id":"-MUBYm7JL408ebsluK6W","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Chaingun_Fire","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5},{"index":7,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":7,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":125,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614045745578},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Chaingun_Init.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Chaingun_Init.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044506094,"description":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Chaingun_Init","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":169,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":169,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0,"y":0},{"intensity":0.5,"time":169,"x":0.32,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.5,"time":0,"x":0.99,"y":0},{"intensity":0.5,"time":169,"x":0.65,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":169,"startTime":34}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044660495,"id":"-MUBY9kUCX3tKQM0L4Ag"},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Grenade_Init.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Grenade_Init.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044314479,"description":"","id":"-MUBXQyWd34-ZarylCUG","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Grenade_Init","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.16,"y":0.16},{"intensity":0.5,"time":100,"x":0,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":100,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044964990},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Grenade_Throw.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Grenade_Throw.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044993605,"description":"","id":"-MUB_0lqX_FXOJ79X20H","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Grenade_Throw","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":124,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.16},{"intensity":0.5,"time":124,"x":0.98,"y":0.01}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0.26},{"intensity":0.5,"time":124,"x":0.99,"y":0.01}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":124,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.01},{"intensity":0.5,"time":124,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.85,"y":0.24},{"intensity":0.5,"time":124,"x":1,"y":0.23}],"visible":true}]}}},"name":"Effect 1","offsetTime":124,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614045738313},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Machinegun.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Machinegun.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044069843,"description":"","id":"-MUBWVF29RqJdL63UJ75","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Machinegun","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.6}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.6},{"index":0,"intensity":0.6}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":125,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614045256511},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Pistol.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Pistol.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044803909,"description":"","id":"-MUBZISrHJDp0tWMsms1","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Pistol","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":159,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":159,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":159,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044982128},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Plasmagun.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Plasmagun.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614045170562,"description":"","id":"-MUB_gyoffdjEJ0iO-a8","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Plasmagun","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_IN_OUT","startTime":0,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":125,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.3},{"index":0,"intensity":0.3}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":125,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614045220917},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Punch_L.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Punch_L.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044008445,"description":"","id":"","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Punch_L","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.31999999999999995,"y":0},{"intensity":0.5,"time":150,"x":0,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.32999999999999996,"y":0.24},{"intensity":0.5,"time":150,"x":0,"y":0.23}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.01},{"intensity":0.5,"time":150,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.85,"y":0.24},{"intensity":0.5,"time":150,"x":1,"y":0.23}],"visible":true}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044021035},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Punch_R.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Punch_R.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614043862868,"description":"","id":"-MUBVhi4KHm-3pLhKeb9","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Punch_R","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.68,"y":0},{"intensity":0.5,"time":150,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.67,"y":0.24},{"intensity":0.5,"time":150,"x":1,"y":0.23}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.01},{"intensity":0.5,"time":150,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.85,"y":0.24},{"intensity":0.5,"time":150,"x":1,"y":0.23}],"visible":true}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044003255},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Reload.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Reload.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614063863216,"description":"","id":"-MUCh-OyqGJ1QiTCDLOU","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Reload","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":102,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.6}],"startTime":0},{"endTime":204,"playbackType":"FADE_IN","pointList":[{"index":3,"intensity":0.6}],"startTime":102}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":102,"playbackType":"NONE","pointList":[{"index":6,"intensity":0.6},{"index":7,"intensity":0.6}],"startTime":0},{"endTime":204,"playbackType":"FADE_IN","pointList":[{"index":2,"intensity":0.6},{"index":3,"intensity":0.6}],"startTime":102}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":204,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"type":"project","updatedAt":1614063881495},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_RocketLauncher.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_RocketLauncher.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614045286491,"description":"","id":"-MUBa8HBrDptYxPRWRgc","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_RocketLauncher","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":122,"playbackType":"FADE_IN","pointList":[{"index":3,"intensity":0.5},{"index":7,"intensity":0.5},{"index":0,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":122,"playbackType":"FADE_IN","pointList":[{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":7,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":122,"startTime":0}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":0.5},{"index":3,"intensity":0.5},{"index":7,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.48,"y":0.02}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":0.5},{"index":6,"intensity":0.5},{"index":7,"intensity":0.5},{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":75,"startTime":113}],"enable":true}],"updatedAt":1614045415315},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Shotgun.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Shotgun.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614044146881,"description":"","id":"-MUBWn2nWXGpK26cXeyP","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Shotgun","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":209,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5},{"index":7,"intensity":0.5},{"index":0,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":209,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.5},{"index":0,"intensity":0.5},{"index":7,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":209,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044262032},"durationMillis":0,"intervalMillis":20,"size":20}
|
1
assets/bHaptics/Weapon/Vest/Body_Swap.tact
Normal file
1
assets/bHaptics/Weapon/Vest/Body_Swap.tact
Normal file
|
@ -0,0 +1 @@
|
|||
{"project":{"createdAt":1614063916796,"description":"","id":"-MUChCU9pwtX6gNu8ZSr","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Swap","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":235,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":235,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.66,"y":0.53},{"intensity":0.5,"time":235,"x":1,"y":0.25}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.67,"y":0.28},{"intensity":0.5,"time":235,"x":1,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":235,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614064417056},"durationMillis":0,"intervalMillis":20,"size":20}
|
Binary file not shown.
|
@ -2,6 +2,22 @@
|
|||
package com.drbeef.questzdoom;
|
||||
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.os.Bundle;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.Log;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.bhaptics.commons.PermissionUtils;
|
||||
import com.drbeef.questzdoom.bhaptics.bHaptics;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
|
@ -11,23 +27,6 @@ import java.io.IOException;
|
|||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
|
||||
import android.media.AudioRecord;
|
||||
import android.media.AudioTrack;
|
||||
import android.os.Bundle;
|
||||
import android.util.Log;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
|
||||
@SuppressLint("SdCardPath") public class GLES3JNIActivity extends Activity implements SurfaceHolder.Callback
|
||||
{
|
||||
// Load the gles3jni library right away to make sure JNI_OnLoad() gets called as the very first thing.
|
||||
|
@ -52,6 +51,35 @@ import android.support.v4.content.ContextCompat;
|
|||
System.exit(0);
|
||||
}
|
||||
|
||||
/*
|
||||
position is used for weapon based haptics:
|
||||
0 - Will play on both arms if tactosy tact files present for both
|
||||
1 - Will play on left arm only if tactosy tact files present for left
|
||||
2 - Will play on right arm only if tactosy tact files present for right
|
||||
*/
|
||||
public void haptic_event(String event, int position, int intensity, float angle, float yHeight) {
|
||||
|
||||
bHaptics.playHaptic(event, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
public void haptic_stopevent(String event) {
|
||||
|
||||
bHaptics.stopHaptic(event);
|
||||
}
|
||||
|
||||
public void haptic_stopall() {
|
||||
bHaptics.stopAll();
|
||||
}
|
||||
|
||||
public void haptic_enable() {
|
||||
bHaptics.enable(this);
|
||||
}
|
||||
|
||||
public void haptic_disable() {
|
||||
bHaptics.disable();
|
||||
}
|
||||
|
||||
|
||||
@Override protected void onCreate( Bundle icicle )
|
||||
{
|
||||
Log.v( TAG, "----------------------------------------------------------------" );
|
||||
|
@ -76,64 +104,43 @@ import android.support.v4.content.ContextCompat;
|
|||
|
||||
/** Initializes the Activity only if the permission has been granted. */
|
||||
private void checkPermissionsAndInitialize() {
|
||||
// Boilerplate for checking runtime permissions in Android.
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED){
|
||||
ActivityCompat.requestPermissions(
|
||||
GLES3JNIActivity.this,
|
||||
new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
||||
WRITE_EXTERNAL_STORAGE_PERMISSION_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
permissionCount++;
|
||||
}
|
||||
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED)
|
||||
{
|
||||
ActivityCompat.requestPermissions(
|
||||
GLES3JNIActivity.this,
|
||||
new String[] {Manifest.permission.READ_EXTERNAL_STORAGE},
|
||||
READ_EXTERNAL_STORAGE_PERMISSION_ID);
|
||||
}
|
||||
else
|
||||
{
|
||||
permissionCount++;
|
||||
}
|
||||
|
||||
if (permissionCount == 2) {
|
||||
// Permissions have already been granted.
|
||||
if (PermissionUtils.hasFilePermissions(this)) {
|
||||
create();
|
||||
onStart();
|
||||
}
|
||||
else
|
||||
{
|
||||
requestPermissions();
|
||||
}
|
||||
}
|
||||
|
||||
private void requestPermissions() {
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
||||
1);
|
||||
}
|
||||
|
||||
|
||||
/** Handles the user accepting the permission. */
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
|
||||
if (requestCode == READ_EXTERNAL_STORAGE_PERMISSION_ID) {
|
||||
if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
permissionCount++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (requestCode == 1) {
|
||||
//Quit for now
|
||||
finish();
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_ID) {
|
||||
//Was this a bHaptics FINE LOCATION perms request?
|
||||
else if (requestCode == 2) {
|
||||
if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
permissionCount++;
|
||||
//call enable again
|
||||
bHaptics.enable(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
finish();
|
||||
System.exit(0);
|
||||
//Don't do anything here, we can't enable if permissions were denied
|
||||
}
|
||||
}
|
||||
|
||||
checkPermissionsAndInitialize();
|
||||
}
|
||||
|
||||
private boolean isPackageInstalled(String packageName, PackageManager packageManager) {
|
||||
|
@ -246,7 +253,10 @@ import android.support.v4.content.ContextCompat;
|
|||
Log.v( TAG, "GLES3JNIActivity::onStart()" );
|
||||
super.onStart();
|
||||
|
||||
GLES3JNILib.onStart( mNativeHandle, this );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onStart(mNativeHandle, this);
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void onResume()
|
||||
|
@ -254,20 +264,29 @@ import android.support.v4.content.ContextCompat;
|
|||
Log.v( TAG, "GLES3JNIActivity::onResume()" );
|
||||
super.onResume();
|
||||
|
||||
GLES3JNILib.onResume( mNativeHandle );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onResume(mNativeHandle);
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void onPause()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onPause()" );
|
||||
GLES3JNILib.onPause( mNativeHandle );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onPause(mNativeHandle);
|
||||
}
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override protected void onStop()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onStop()" );
|
||||
GLES3JNILib.onStop( mNativeHandle );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onStop(mNativeHandle);
|
||||
}
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
|
@ -275,12 +294,17 @@ import android.support.v4.content.ContextCompat;
|
|||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onDestroy()" );
|
||||
|
||||
bHaptics.destroy();
|
||||
|
||||
if ( mSurfaceHolder != null )
|
||||
{
|
||||
GLES3JNILib.onSurfaceDestroyed( mNativeHandle );
|
||||
}
|
||||
|
||||
GLES3JNILib.onDestroy( mNativeHandle );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onDestroy(mNativeHandle);
|
||||
}
|
||||
|
||||
super.onDestroy();
|
||||
mNativeHandle = 0;
|
||||
|
|
418
java/com/drbeef/questzdoom/bhaptics/bHaptics.java
Normal file
418
java/com/drbeef/questzdoom/bhaptics/bHaptics.java
Normal file
|
@ -0,0 +1,418 @@
|
|||
package com.drbeef.questzdoom.bhaptics;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import com.bhaptics.bhapticsmanger.BhapticsManager;
|
||||
import com.bhaptics.bhapticsmanger.BhapticsManagerCallback;
|
||||
import com.bhaptics.bhapticsmanger.BhapticsModule;
|
||||
import com.bhaptics.bhapticsmanger.HapticPlayer;
|
||||
import com.bhaptics.commons.PermissionUtils;
|
||||
import com.bhaptics.commons.model.BhapticsDevice;
|
||||
import com.bhaptics.commons.model.DotPoint;
|
||||
import com.bhaptics.commons.model.PositionType;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
|
||||
public class bHaptics {
|
||||
|
||||
public static class Haptic
|
||||
{
|
||||
Haptic(PositionType type, String key, String altKey, float intensity, float duration) {
|
||||
this.type = type;
|
||||
this.key = key;
|
||||
this.altKey = altKey;
|
||||
this.intensity = intensity;
|
||||
this.duration = duration;
|
||||
}
|
||||
|
||||
public final String key;
|
||||
public final String altKey;
|
||||
public final float intensity;
|
||||
public final float duration;
|
||||
public final PositionType type;
|
||||
};
|
||||
|
||||
private static final String TAG = "Doom3Quest.bHaptics";
|
||||
|
||||
private static Random rand = new Random();
|
||||
|
||||
private static boolean hasPairedDevice = false;
|
||||
|
||||
private static boolean enabled = false;
|
||||
private static boolean requestingPermission = false;
|
||||
private static boolean initialised = false;
|
||||
|
||||
private static HapticPlayer player;
|
||||
|
||||
private static Context context;
|
||||
|
||||
private static Map<String, Vector<Haptic>> eventToEffectKeyMap = new HashMap<>();
|
||||
|
||||
public static void initialise()
|
||||
{
|
||||
if (initialised)
|
||||
{
|
||||
//Already initialised, but might need to rescan
|
||||
scanIfNeeded();
|
||||
return;
|
||||
}
|
||||
|
||||
BhapticsModule.initialize(context);
|
||||
|
||||
scanIfNeeded();
|
||||
|
||||
player = BhapticsModule.getHapticPlayer();
|
||||
|
||||
/*
|
||||
DAMAGE
|
||||
*/
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Heartbeat.tact", PositionType.Vest, "heartbeat", 1.0f, 1.2f);
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee1.tact", "melee_left");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee2.tact", "melee_right");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fireball.tact", "fireball");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Bullet.tact", "bullet");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Shotgun.tact", "shotgun");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "fire");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "poison"); // reuse
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Falling.tact", "fall");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Shield_Break.tact", "slime");
|
||||
|
||||
/*
|
||||
INTERACTIONS
|
||||
*/
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Healstation.tact", "healstation");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_L.tact", PositionType.ForearmL, "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_R.tact", PositionType.ForearmR, "pickup");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Shield_Get.tact", "pickup_weapon");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_L.tact", PositionType.ForearmL, "pickup_weapon");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_R.tact", PositionType.ForearmR, "pickup_weapon");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_L.tact", PositionType.ForearmL, "fire_weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_R.tact", PositionType.ForearmR, "fire_weapon");
|
||||
|
||||
initialised = true;
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, PositionType type, String key, float intensity, float duration)
|
||||
{
|
||||
String content = read(context, filename);
|
||||
if (content != null) {
|
||||
|
||||
String hapticKey = key + "_" + type.name();
|
||||
player.registerProject(hapticKey, content);
|
||||
|
||||
UUID uuid = UUID.randomUUID();
|
||||
Haptic haptic = new Haptic(type, hapticKey, uuid.toString(), intensity, duration);
|
||||
|
||||
Vector<Haptic> haptics;
|
||||
if (!eventToEffectKeyMap.containsKey(key))
|
||||
{
|
||||
haptics = new Vector<>();
|
||||
haptics.add(haptic);
|
||||
eventToEffectKeyMap.put(key, haptics);
|
||||
}
|
||||
else
|
||||
{
|
||||
haptics = eventToEffectKeyMap.get(key);
|
||||
haptics.add(haptic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, String key)
|
||||
{
|
||||
registerFromAsset(context, filename, PositionType.Vest, key, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, PositionType type, String key)
|
||||
{
|
||||
registerFromAsset(context, filename, type, key, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void destroy()
|
||||
{
|
||||
if (initialised) {
|
||||
BhapticsModule.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasPermissions() {
|
||||
boolean blePermission = PermissionUtils.hasBluetoothPermission(context);
|
||||
boolean filePermission = PermissionUtils.hasFilePermissions(context);
|
||||
return blePermission && filePermission;
|
||||
}
|
||||
|
||||
private static void requestPermissions() {
|
||||
if (!requestingPermission) {
|
||||
requestingPermission = true;
|
||||
ActivityCompat.requestPermissions((Activity) context,
|
||||
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
|
||||
2);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean checkPermissionsAndInitialize() {
|
||||
if (hasPermissions()) {
|
||||
// Permissions have already been granted.
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
requestPermissions();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void enable(Context ctx)
|
||||
{
|
||||
context = ctx;
|
||||
|
||||
if (!enabled)
|
||||
{
|
||||
if (checkPermissionsAndInitialize()) {
|
||||
initialise();
|
||||
|
||||
enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void disable()
|
||||
{
|
||||
enabled = false;
|
||||
requestingPermission = false;
|
||||
}
|
||||
|
||||
public static void playHaptic(String event, int position, float intensity, float angle, float yHeight)
|
||||
{
|
||||
|
||||
if (enabled && hasPairedDevice) {
|
||||
String key = getHapticEventKey(event);
|
||||
|
||||
//Log.v(TAG, event);
|
||||
|
||||
//Special rumble effect that changes intensity per frame
|
||||
if (key.contains("rumble"))
|
||||
{
|
||||
{
|
||||
float highDuration = angle;
|
||||
|
||||
List<DotPoint> vector = new Vector<>();
|
||||
int flipflop = 0;
|
||||
for (int d = 0; d < 20; d += 4) // Only select every other dot
|
||||
{
|
||||
vector.add(new DotPoint(d + flipflop, (int) intensity));
|
||||
vector.add(new DotPoint(d + 2 + flipflop, (int) intensity));
|
||||
flipflop = 1 - flipflop;
|
||||
}
|
||||
|
||||
if (key.contains("front")) {
|
||||
player.submitDot("rumble_front", PositionType.VestFront, vector, (int) highDuration);
|
||||
}
|
||||
else {
|
||||
player.submitDot("rumble_back", PositionType.VestBack, vector, (int) highDuration);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (eventToEffectKeyMap.containsKey(key)) {
|
||||
Vector<Haptic> haptics = eventToEffectKeyMap.get(key);
|
||||
|
||||
for (Haptic haptic : haptics) {
|
||||
|
||||
//Don't allow heartbeat haptic to interrupt itself if it is already playing
|
||||
if (haptic.key.contains("heartbeat") &&
|
||||
player.isPlaying(haptic.altKey))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//The following groups play at full intensity
|
||||
if (haptic.altKey.compareTo("environment") == 0) {
|
||||
intensity = 100;
|
||||
}
|
||||
|
||||
if (position > 0)
|
||||
{
|
||||
//If playing left position and haptic type is right, don;t play that one
|
||||
if (position == 1 && haptic.type == PositionType.ForearmR)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//If playing right position and haptic type is left, don;t play that one
|
||||
if (position == 2 && haptic.type == PositionType.ForearmL)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (haptic != null) {
|
||||
float flIntensity = ((intensity / 100.0F) * haptic.intensity);
|
||||
float duration = haptic.duration;
|
||||
|
||||
//Special hack for heartbeat
|
||||
if (haptic.key.contains("heartbeat"))
|
||||
{
|
||||
//The worse condition we are in, the faster the heart beats!
|
||||
float health = intensity;
|
||||
duration = 1.0f - (0.4f * ((40 - health) / 40));
|
||||
flIntensity = 1.0f;
|
||||
}
|
||||
|
||||
player.submitRegistered(haptic.key, haptic.altKey, flIntensity, duration, angle, yHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.i(TAG, "Unknown event: " + event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getHapticEventKey(String e) {
|
||||
String event = e.toLowerCase();
|
||||
String key = event;
|
||||
if (event.contains("melee") ||
|
||||
event.contains("strike") ||
|
||||
event.contains("rip") ||
|
||||
event.contains("tear") ||
|
||||
event.contains("slice") ||
|
||||
event.contains("claw")) {
|
||||
if (event.contains("right"))
|
||||
{
|
||||
key = "melee_right";
|
||||
}
|
||||
else if (event.contains("left"))
|
||||
{
|
||||
key = "melee_left";
|
||||
}
|
||||
else {
|
||||
key = rand.nextInt(2) == 0 ? "melee_right" : "melee_left";
|
||||
}
|
||||
} else if (event.contains("bullet")) {
|
||||
key = "bullet";
|
||||
} else if (event.contains("burn") ||
|
||||
event.contains("flame")) {
|
||||
key = "fireball";
|
||||
} else if (event.contains("shotgun")) {
|
||||
key = "shotgun";
|
||||
} else if (event.contains("fall")) {
|
||||
key = "fall";
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
public static void stopAll() {
|
||||
|
||||
if (hasPairedDevice) {
|
||||
player.turnOffAll();
|
||||
}
|
||||
}
|
||||
|
||||
public static void stopHaptic(String event) {
|
||||
|
||||
if (hasPairedDevice) {
|
||||
|
||||
String key = getHapticEventKey(event);
|
||||
{
|
||||
player.turnOff(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public static String read(Context context, String fileName) {
|
||||
try {
|
||||
InputStream is = context.getAssets().open(fileName);
|
||||
StringBuilder textBuilder = new StringBuilder();
|
||||
try (Reader reader = new BufferedReader(new InputStreamReader
|
||||
(is, Charset.forName(StandardCharsets.UTF_8.name())))) {
|
||||
int c = 0;
|
||||
while ((c = reader.read()) != -1) {
|
||||
textBuilder.append((char) c);
|
||||
}
|
||||
}
|
||||
|
||||
return textBuilder.toString();
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "read: ", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void scanIfNeeded() {
|
||||
BhapticsManager manager = BhapticsModule.getBhapticsManager();
|
||||
|
||||
List<BhapticsDevice> deviceList = manager.getDeviceList();
|
||||
for (BhapticsDevice device : deviceList) {
|
||||
if (device.isPaired()) {
|
||||
hasPairedDevice = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasPairedDevice) {
|
||||
manager.scan();
|
||||
|
||||
manager.addBhapticsManageCallback(new BhapticsManagerCallback() {
|
||||
@Override
|
||||
public void onDeviceUpdate(List<BhapticsDevice> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScanStatusChange(boolean b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeResponse() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnect(String s) {
|
||||
Thread t = new Thread(() -> {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
manager.ping(s);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(String s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue