mirror of
https://github.com/DrBeef/Doom3Quest.git
synced 2025-04-24 16:18:51 +00:00
More haptics support
Added some arm based tact files and increased number of body tact files. Improved the way that files are played
This commit is contained in:
parent
01b0de4ce4
commit
c934f1b61a
64 changed files with 2753 additions and 252 deletions
|
@ -955,15 +955,15 @@ void Doom3Quest_Vibrate(int channel, float low, float high)
|
|||
vibration_channel_intensity[channel][1] = high;
|
||||
}
|
||||
|
||||
void jni_haptic_event(const char* event, int intensity, float angle, float yHeight);
|
||||
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 Doom3Quest_HapticEvent(const char* event, int intensity, float angle, float yHeight )
|
||||
void Doom3Quest_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight )
|
||||
{
|
||||
jni_haptic_event(event, intensity, angle, yHeight);
|
||||
jni_haptic_event(event, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
void Doom3Quest_HapticStopAll()
|
||||
|
@ -1514,7 +1514,6 @@ bool Doom3Quest_processMessageQueue() {
|
|||
|
||||
|
||||
void shutdownVR() {
|
||||
vrapi_Shutdown();
|
||||
SDL_DestroyMutex(gAppState.RenderThreadFrameIndex_Mutex);
|
||||
ovrRenderer_Destroy( &gAppState.Renderer );
|
||||
ovrEgl_DestroyContext( &gAppState.Egl );
|
||||
|
@ -1969,7 +1968,7 @@ void jni_shutdown()
|
|||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_shutdown);
|
||||
}
|
||||
|
||||
void jni_haptic_event(const char* event, int intensity, float angle, float yHeight)
|
||||
void jni_haptic_event(const char* event, int position, int intensity, float angle, float yHeight)
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_event");
|
||||
JNIEnv *env;
|
||||
|
@ -1981,12 +1980,12 @@ void jni_haptic_event(const char* event, int intensity, float angle, float yHeig
|
|||
|
||||
jstring StringArg1 = (*env)->NewStringUTF(env, event);
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_event, StringArg1, intensity, angle, yHeight);
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_event, StringArg1, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
void jni_haptic_stopevent(const char* event)
|
||||
{
|
||||
ALOGV("Calling: jni_haptic_event");
|
||||
ALOGV("Calling: jni_haptic_stopevent");
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
|
@ -2111,7 +2110,7 @@ JNIEXPORT void JNICALL Java_com_drbeef_doom3quest_GLES3JNILib_onStart( JNIEnv *
|
|||
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;IFF)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");
|
||||
|
|
|
@ -61,7 +61,7 @@ extern bool inGameGuiActive;
|
|||
extern bool objectiveSystemActive;
|
||||
extern bool inCinematic;
|
||||
|
||||
void Doom3Quest_HapticEvent(const char* event, int intensity, float angle, float yHeight );
|
||||
void Doom3Quest_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight );
|
||||
|
||||
void HandleInput_Default( int controlscheme, int switchsticks, ovrInputStateGamepad *pFootTrackingNew, ovrInputStateGamepad *pFootTrackingOld, ovrInputStateTrackedRemote *pDominantTrackedRemoteNew, ovrInputStateTrackedRemote *pDominantTrackedRemoteOld, ovrTracking* pDominantTracking,
|
||||
ovrInputStateTrackedRemote *pOffTrackedRemoteNew, ovrInputStateTrackedRemote *pOffTrackedRemoteOld, ovrTracking* pOffTracking,
|
||||
|
@ -284,7 +284,14 @@ void HandleInput_Default( int controlscheme, int switchsticks, ovrInputStateGame
|
|||
|
||||
if (velocityTriggeredAttack)
|
||||
{
|
||||
Doom3Quest_HapticEvent(controlscheme == 0 ? "punchR" : "punchL", 100, 0, 0 );
|
||||
if (controlscheme == 0) {
|
||||
Doom3Quest_HapticEvent("punchR", 2, 100, 0,
|
||||
0);
|
||||
}
|
||||
else{
|
||||
Doom3Quest_HapticEvent("punchL", 1, 100, 0,
|
||||
0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -317,7 +324,14 @@ void HandleInput_Default( int controlscheme, int switchsticks, ovrInputStateGame
|
|||
|
||||
if (velocityTriggeredAttack)
|
||||
{
|
||||
Doom3Quest_HapticEvent(controlscheme == 1 ? "punchR" : "punchL", 100, 0, 0 );
|
||||
if (controlscheme == 1) {
|
||||
Doom3Quest_HapticEvent("punchR", 2, 100, 0,
|
||||
0);
|
||||
}
|
||||
else{
|
||||
Doom3Quest_HapticEvent("punchL", 1, 100, 0,
|
||||
0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -171,7 +171,7 @@ public:
|
|||
virtual int GetFrameNumber();
|
||||
|
||||
virtual void Vibrate(int channel, float low, float high );
|
||||
virtual void HapticEvent(const char* event, int intensity, float angle, float yHeight );
|
||||
virtual void HapticEvent(const char* event, int position, int intensity, float angle, float yHeight );
|
||||
virtual void HapticStopAll();
|
||||
virtual void HapticStopEvent(const char* event);
|
||||
virtual void HapticEnable();
|
||||
|
@ -2276,7 +2276,7 @@ void idCommonLocal::InitSIMD( void ) {
|
|||
|
||||
extern "C" void Doom3Quest_FrameSetup(int controlscheme, int switch_sticks, int refresh);
|
||||
extern "C" void Doom3Quest_Vibrate(int channel, float low, float high );
|
||||
extern "C" void Doom3Quest_HapticEvent(const char* event, int intensity, float angle, float yHeight );
|
||||
extern "C" void Doom3Quest_HapticEvent(const char* event, int position, int intensity, float angle, float yHeight );
|
||||
extern "C" void Doom3Quest_HapticStopAll();
|
||||
extern "C" void Doom3Quest_HapticStopEvent(const char* event);
|
||||
extern "C" void Doom3Quest_HapticEnable();
|
||||
|
@ -2287,9 +2287,9 @@ void idCommonLocal::Vibrate(int channel, float low, float high)
|
|||
Doom3Quest_Vibrate(channel, low, high);
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticEvent(const char* event, int intensity, float angle, float yHeight )
|
||||
void idCommonLocal::HapticEvent(const char* event, int position, int intensity, float angle, float yHeight )
|
||||
{
|
||||
Doom3Quest_HapticEvent(event, intensity, angle, yHeight);
|
||||
Doom3Quest_HapticEvent(event, position, intensity, angle, yHeight);
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticStopAll( )
|
||||
|
|
|
@ -220,7 +220,7 @@ public:
|
|||
|
||||
//Haptic Feedback
|
||||
virtual void Vibrate(int channel, float low, float high ) = 0;
|
||||
virtual void HapticEvent(const char* event, int intensity, float angle, float yHeight ) = 0;
|
||||
virtual void HapticEvent(const char* event, int position, int intensity, float angle, float yHeight ) = 0;
|
||||
virtual void HapticStopAll() = 0;
|
||||
virtual void HapticStopEvent(const char* event) = 0;
|
||||
virtual void HapticEnable() = 0;
|
||||
|
|
|
@ -1626,9 +1626,9 @@ bool idEntity::StartSoundShader( const idSoundShader *shader, const s_channelTyp
|
|||
idVec3 playerOrigin = gameLocal.GetLocalPlayer()->GetPlayerPhysics()->GetOrigin(0);
|
||||
idVec3 entityOrigin = GetPhysics()->GetOrigin(0);
|
||||
float distance = (playerOrigin - entityOrigin).Length();
|
||||
if (distance < 200.0F) {
|
||||
if (distance <= 400.0F) {
|
||||
//Pass sound on in case it can trigger a haptic event (like doors)
|
||||
common->HapticEvent(shader->GetName(), 200 - (distance * 2), 0, 0);
|
||||
common->HapticEvent(shader->GetName(), 0, (int)((400.0f - distance) / 4.0f), 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -989,7 +989,7 @@ bool idInventory::Give( idPlayer *owner, const idDict &spawnArgs, const char *st
|
|||
armor = maxarmor;
|
||||
}
|
||||
|
||||
common->HapticEvent("pickup_shield", amount * 5, 0, 0);
|
||||
common->HapticEvent("pickup_shield", 0, amount * 5, 0, 0);
|
||||
|
||||
nextArmorDepleteTime = 0;
|
||||
armorPulse = true;
|
||||
|
@ -1000,7 +1000,7 @@ bool idInventory::Give( idPlayer *owner, const idDict &spawnArgs, const char *st
|
|||
// set, don't add. not going over the clip size limit.
|
||||
clip[ i ] = atoi( value );
|
||||
|
||||
common->HapticEvent("pickup_ammo", 100, 0, 0);
|
||||
common->HapticEvent("pickup_ammo", 0, 100, 0, 0);
|
||||
}
|
||||
} else if ( !idStr::Icmp( statname, "berserk" ) ) {
|
||||
GivePowerUp( owner, BERSERK, SEC2MS( atof( value ) ) );
|
||||
|
@ -1047,7 +1047,7 @@ bool idInventory::Give( idPlayer *owner, const idDict &spawnArgs, const char *st
|
|||
if ( ( weapons & ( 1 << i ) ) == 0 || ( duplicateWeapons & ( 1 << i ) ) == 0 || gameLocal.isMultiplayer ) {
|
||||
tookWeapon = true;
|
||||
|
||||
common->HapticEvent("pickup_weapon", 100, 0, 0);
|
||||
common->HapticEvent("pickup_weapon", 0, 100, 0, 0);
|
||||
|
||||
if ( owner->GetUserInfo()->GetBool( "ui_autoSwitch" ) && idealWeapon ) {
|
||||
assert( !gameLocal.isClient );
|
||||
|
@ -4646,7 +4646,7 @@ bool idPlayer::GiveItem( idItem *item ) {
|
|||
|
||||
if (gave)
|
||||
{
|
||||
common->HapticEvent("pickup_weapon", 100, 0, 0);
|
||||
common->HapticEvent("pickup_weapon", 0, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5088,6 +5088,8 @@ void idPlayer::GiveSecurity( const char *security ) {
|
|||
hud->SetStateString( "pda_security", "1" );
|
||||
hud->HandleNamedEvent( "securityPickup" );
|
||||
}
|
||||
|
||||
common->HapticEvent("pda_alarm", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -5107,8 +5109,11 @@ void idPlayer::GiveEmail( const char *emailName ) {
|
|||
if ( hud ) {
|
||||
hud->HandleNamedEvent( "emailPickup" );
|
||||
}
|
||||
|
||||
common->HapticEvent("pda_alarm", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
===============
|
||||
idPlayer::GivePDA
|
||||
|
@ -5294,7 +5299,7 @@ idPlayer::NextBestWeapon
|
|||
void idPlayer::NextBestWeapon( void ) {
|
||||
hands[ vr_weaponHand.GetInteger() ].NextBestWeapon();
|
||||
|
||||
common->HapticEvent("weapon_switch", 100, 0, 0);
|
||||
common->HapticEvent("weapon_switch", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -5305,7 +5310,7 @@ idPlayer::NextWeapon
|
|||
void idPlayer::NextWeapon( void ) {
|
||||
hands[ vr_weaponHand.GetInteger() ].NextWeapon();
|
||||
|
||||
common->HapticEvent("weapon_switch", 100, 0, 0);
|
||||
common->HapticEvent("weapon_switch", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -5316,7 +5321,7 @@ idPlayer::PrevWeapon
|
|||
void idPlayer::PrevWeapon( void ) {
|
||||
hands[ vr_weaponHand.GetInteger() ].PrevWeapon();
|
||||
|
||||
common->HapticEvent("weapon_switch", 100, 0, 0);
|
||||
common->HapticEvent("weapon_switch", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -5330,7 +5335,7 @@ void idPlayer::SelectWeapon( int num, bool force, bool specific ) {
|
|||
else
|
||||
hands[1 - vr_weaponHand.GetInteger()].SelectWeapon( num, force, specific );
|
||||
|
||||
common->HapticEvent("weapon_switch", 100, 0, 0);
|
||||
common->HapticEvent("weapon_switch", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -7497,7 +7502,9 @@ bool idPlayer::HandleSingleGuiCommand( idEntity *entityGui, idLexer *src ) {
|
|||
}
|
||||
if (health < 100)
|
||||
{
|
||||
common->HapticEvent("healstation", 100, 0, 0);
|
||||
//Ass health increases, play the effect higher up the body
|
||||
float yHeight = -0.5f + ((float)(health+amt) / 100.0f);
|
||||
common->HapticEvent("healstation", 0, 100, 0, yHeight);
|
||||
}
|
||||
health += amt;
|
||||
if ( health > 100 ) {
|
||||
|
@ -8211,6 +8218,8 @@ void idPlayer::UpdateFocus( void ) {
|
|||
//Rumble the controller to let player know they scored a touch.
|
||||
hands[fingerHand].SetControllerShake( 0.1f, 12, 0.8f, 12 );
|
||||
|
||||
common->HapticEvent("pda_touch", 0, 100, 0, 0);
|
||||
|
||||
focusTime = gameLocal.time + FOCUS_GUI_TIME;
|
||||
break;
|
||||
|
||||
|
@ -9866,12 +9875,16 @@ void idPlayer::TogglePDA( int hand ) {
|
|||
objectiveSystem->Activate( true, gameLocal.time );
|
||||
hud->HandleNamedEvent( "pdaPickupHide" );
|
||||
hud->HandleNamedEvent( "videoPickupHide" );
|
||||
|
||||
common->HapticEvent("pda_open", 0, 100, 0, 0);
|
||||
} else {
|
||||
inventory.selPDA = objectiveSystem->State().GetInt( "listPDA_sel_0" );
|
||||
inventory.selVideo = objectiveSystem->State().GetInt( "listPDAVideo_sel_0" );
|
||||
inventory.selAudio = objectiveSystem->State().GetInt( "listPDAAudio_sel_0" );
|
||||
inventory.selEMail = objectiveSystem->State().GetInt( "listPDAEmail_sel_0" );
|
||||
objectiveSystem->Activate( false, gameLocal.time );
|
||||
|
||||
common->HapticEvent("pda_close", 0, 100, 0, 0);
|
||||
}
|
||||
//objectiveSystemOpen ^= 1;
|
||||
objectiveSystemOpen = !objectiveSystemOpen;
|
||||
|
@ -11781,9 +11794,9 @@ void idPlayer::Think( void ) {
|
|||
|
||||
UpdatePowerUps();
|
||||
|
||||
if (health < 20)
|
||||
if (health < 40)
|
||||
{
|
||||
common->HapticEvent("heartbeat", 100, 0, 0);
|
||||
common->HapticEvent("heartbeat", 0, 100, 0, 0);
|
||||
}
|
||||
|
||||
//UpdateFlashlightHolster();
|
||||
|
@ -12497,7 +12510,7 @@ void idPlayer::Damage( idEntity *inflictor, idEntity *attacker, const idVec3 &di
|
|||
if (inventory.armor == 0)
|
||||
{
|
||||
if ( IsType( idPlayer::Type ) ) {
|
||||
common->HapticEvent("shield_break", 100, 0, 0);
|
||||
common->HapticEvent("shield_break", 0, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12511,7 +12524,7 @@ void idPlayer::Damage( idEntity *inflictor, idEntity *attacker, const idVec3 &di
|
|||
StartSound( "snd_burn", SND_CHANNEL_BODY3, 0, false, NULL );
|
||||
|
||||
if ( IsType( idPlayer::Type ) ) {
|
||||
common->HapticEvent("fire", damage * 4, 0, 0);
|
||||
common->HapticEvent("fire", 0, damage * 4, 0, 0);
|
||||
}
|
||||
|
||||
} else if ( damageDef->dict.GetBool( "no_air" ) ) {
|
||||
|
@ -12600,7 +12613,7 @@ void idPlayer::Damage( idEntity *inflictor, idEntity *attacker, const idVec3 &di
|
|||
|
||||
if ( IsType( idPlayer::Type ) ) {
|
||||
//TODO: Sort angle and height
|
||||
common->HapticEvent(damageDefName, damage * 4, 0, 0);
|
||||
common->HapticEvent(damageDefName, 0, damage * 4, 0, 0);
|
||||
}
|
||||
|
||||
lastDamageDef = damageDef->Index();
|
||||
|
|
|
@ -431,7 +431,7 @@ void idPlayerView::CalculateShake() {
|
|||
player->hands[HAND_LEFT].SetControllerShake( highMag, highDuration, lowMag, lowDuration );
|
||||
|
||||
//generic rumbling
|
||||
common->HapticEvent("rumble", shakeVolume * 100, 0, 0);
|
||||
common->HapticEvent("rumble", 0, shakeVolume * 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1939,7 +1939,7 @@ void idWeapon::Reload( void ) {
|
|||
WEAPON_RELOAD = true;
|
||||
}
|
||||
|
||||
common->HapticEvent("weapon_reload", 100, 0,0);
|
||||
common->HapticEvent("weapon_reload", vr_weaponHand.GetInteger() ? 1 : 2, 100, 0,0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -2082,23 +2082,25 @@ void idWeapon::BeginAttack( void ) {
|
|||
}
|
||||
WEAPON_ATTACK = true;
|
||||
|
||||
int position = vr_weaponHand.GetInteger() ? 1 : 2;
|
||||
|
||||
weapon_t currentWeapon = WEAPON_NONE;
|
||||
currentWeapon = IdentifyWeapon();
|
||||
if (currentWeapon == WEAPON_HANDGRENADE)
|
||||
{
|
||||
common->HapticEvent("handgrenade_init", 100, 0, 0);
|
||||
common->HapticEvent("handgrenade_init", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeapon == WEAPON_CHAINGUN)
|
||||
{
|
||||
common->HapticEvent("chaingun_init", 100, 0, 0);
|
||||
common->HapticEvent("chaingun_init", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeapon == WEAPON_BFG)
|
||||
{
|
||||
common->HapticEvent("bfg_init", 100, 0, 0);
|
||||
common->HapticEvent("bfg_init", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeapon == WEAPON_HANDGRENADE)
|
||||
{
|
||||
common->HapticEvent("grenade_init", 100, 0, 0);
|
||||
common->HapticEvent("grenade_init", position, 100, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -4033,37 +4035,39 @@ void idWeapon::Event_LaunchProjectiles( int num_projectiles, float spread, float
|
|||
// Normal launch
|
||||
proj->Launch( muzzle_pos, dir, pushVelocity, fuseOffset, launchPower, dmgPower, speed );
|
||||
|
||||
int position = vr_weaponHand.GetInteger() ? 1 : 2;
|
||||
|
||||
if (currentWeap == WEAPON_PISTOL)
|
||||
{
|
||||
common->HapticEvent("pistol_fire", 100, 0, 0);
|
||||
common->HapticEvent("pistol_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_SHOTGUN)
|
||||
{
|
||||
common->HapticEvent("shotgun_fire", 100, 0, 0);
|
||||
common->HapticEvent("shotgun_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_PLASMAGUN)
|
||||
{
|
||||
common->HapticEvent("plasmagun_fire", 100, 0, 0);
|
||||
common->HapticEvent("plasmagun_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_HANDGRENADE)
|
||||
{
|
||||
common->HapticEvent("handgrenade_fire", 100, 0, 0);
|
||||
common->HapticEvent("handgrenade_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_MACHINEGUN)
|
||||
{
|
||||
common->HapticEvent("machinegun_fire", 100, 0, 0);
|
||||
common->HapticEvent("machinegun_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_CHAINGUN)
|
||||
{
|
||||
common->HapticEvent("chaingun_fire", 100, 0, 0);
|
||||
common->HapticEvent("chaingun_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_BFG)
|
||||
{
|
||||
common->HapticEvent("bfg_fire", 100, 0, 0);
|
||||
common->HapticEvent("bfg_fire", position, 100, 0, 0);
|
||||
}
|
||||
if (currentWeap == WEAPON_ROCKETLAUNCHER)
|
||||
{
|
||||
common->HapticEvent("rocket_fire", 100, 0, 0);
|
||||
common->HapticEvent("rocket_fire", position, 100, 0, 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
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
|
||||
}
|
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
|
||||
}
|
|
@ -68,9 +68,16 @@ import static android.system.Os.setenv;
|
|||
System.exit(0);
|
||||
}
|
||||
|
||||
public void haptic_event(String event, int intensity, float angle, float yHeight) {
|
||||
|
||||
bHaptics.playHaptic(event, intensity, angle, yHeight);
|
||||
/*
|
||||
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) {
|
||||
|
|
|
@ -1,27 +0,0 @@
|
|||
package com.drbeef.doom3quest.bhaptics;
|
||||
|
||||
public class TactFile {
|
||||
private String fileName;
|
||||
private String content;
|
||||
|
||||
public TactFile(String fileName, String content) {
|
||||
this.fileName = fileName;
|
||||
this.content = content;
|
||||
}
|
||||
|
||||
public String getFileName() {
|
||||
return fileName;
|
||||
}
|
||||
|
||||
public void setFileName(String fileName) {
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
public String getContent() {
|
||||
return content;
|
||||
}
|
||||
|
||||
public void setContent(String content) {
|
||||
this.content = content;
|
||||
}
|
||||
}
|
|
@ -29,23 +29,34 @@ import java.util.Vector;
|
|||
|
||||
|
||||
public class bHaptics {
|
||||
|
||||
public static enum HapticType {
|
||||
Vest,
|
||||
Tactosy_Left,
|
||||
Tactosy_Right
|
||||
};
|
||||
|
||||
public static class Haptic
|
||||
{
|
||||
Haptic(String key, String altKey) {
|
||||
Haptic(HapticType 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 HapticType type;
|
||||
};
|
||||
|
||||
private static final String TAG = "Doom3Quest.bHaptics";
|
||||
|
||||
private static Random rand = new Random();
|
||||
|
||||
private static String currentEffect = "";
|
||||
|
||||
private static boolean hasPairedDevice = false;
|
||||
|
||||
private static boolean enabled = false;
|
||||
|
@ -74,156 +85,141 @@ public class bHaptics {
|
|||
/*
|
||||
DAMAGE
|
||||
*/
|
||||
Vector<Haptic> heartBeat = new Vector<>();
|
||||
heartBeat.add(registerFromAsset(context, "bHaptics/Damage/Body_Heartbeat.tact", "heartbeat", "heartbeat"));
|
||||
eventToEffectKeyMap.put("heartbeat", heartBeat);
|
||||
|
||||
Vector<Haptic> damageMelee = new Vector<>();
|
||||
damageMelee.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee1.tact", "melee1", "damage"));
|
||||
damageMelee.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee2.tact", "melee2", "damage"));
|
||||
eventToEffectKeyMap.put("melee", damageMelee);
|
||||
|
||||
Vector<Haptic> damageFireball = new Vector<>();
|
||||
damageFireball.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fireball.tact", "fireball", "damage"));
|
||||
eventToEffectKeyMap.put("fireball", damageFireball);
|
||||
|
||||
Vector<Haptic> damageBullet = new Vector<>();
|
||||
damageBullet.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Bullet.tact", "bullet", "damage"));
|
||||
eventToEffectKeyMap.put("bullet", damageBullet);
|
||||
|
||||
Vector<Haptic> damageShotgun = new Vector<>();
|
||||
damageShotgun.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Shotgun.tact", "shotgun", "damage"));
|
||||
eventToEffectKeyMap.put("shotgun", damageShotgun);
|
||||
|
||||
Vector<Haptic> damageFire = new Vector<>();
|
||||
damageFire.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "fire", "damage"));
|
||||
eventToEffectKeyMap.put("fire", damageFire);
|
||||
|
||||
Vector<Haptic> damageFall = new Vector<>();
|
||||
damageFall.add(registerFromAsset(context, "bHaptics/Damage/Body_DMG_Falling.tact", "fall", "damage"));
|
||||
eventToEffectKeyMap.put("fall", damageFall);
|
||||
|
||||
Vector<Haptic> shieldBreak = new Vector<>();
|
||||
shieldBreak.add(registerFromAsset(context, "bHaptics/Damage/Body_Shield_Break.tact", "shield_break", "damage"));
|
||||
eventToEffectKeyMap.put("shield_break", shieldBreak);
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Heartbeat.tact", "heartbeat", "heartbeat");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee1.tact", "melee_left", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee2.tact", "melee_right", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fireball.tact", "fireball", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Bullet.tact", "bullet", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Shotgun.tact", "shotgun", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "fire", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Falling.tact", "fall", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Shield_Break.tact", "shield_break", "damage");
|
||||
|
||||
|
||||
/*
|
||||
INTERACTIONS
|
||||
*/
|
||||
Vector<Haptic> pickupShield = new Vector<>();
|
||||
pickupShield.add(registerFromAsset(context, "bHaptics/Interaction/Body_Shield_Get.tact", "pickup_shield", "pickup"));
|
||||
eventToEffectKeyMap.put("pickup_shield", pickupShield);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Shield_Get.tact", "pickup_shield", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_L.tact", HapticType.Tactosy_Left, "pickup_shield", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_R.tact", HapticType.Tactosy_Right, "pickup_shield", "pickup");
|
||||
|
||||
//Need a tact file for this
|
||||
// Vector<KeyPair> pickup_weapon = new Vector<>();
|
||||
// pickup_weapon.add(registerFromAsset(context, "bHaptics/Interaction/Body_Weapon_Get.tact", "pickup_weapon", "pickup"));
|
||||
// eventToEffectKeyMap.put("pickup_weapon", pickup_weapon);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Weapon_Get.tact", "pickup_weapon", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_L.tact", HapticType.Tactosy_Left, "pickup_weapon", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_R.tact", HapticType.Tactosy_Right, "pickup_weapon", "pickup");
|
||||
|
||||
// Vector<KeyPair> pickup_ammo = new Vector<>();
|
||||
// pickup_ammo.add(registerFromAsset(context, "bHaptics/Interaction/Body_Ammo_Get.tact", "pickup_ammo", "pickup"));
|
||||
// eventToEffectKeyMap.put("pickup_ammo", pickup_ammo);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Ammo_Get.tact", "pickup_ammo", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Ammo_L.tact", HapticType.Tactosy_Left, "pickup_ammo", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Ammo_R.tact", HapticType.Tactosy_Right, "pickup_ammo", "pickup");
|
||||
|
||||
Vector<Haptic> healstation = new Vector<>();
|
||||
healstation.add(registerFromAsset(context, "bHaptics/Interaction/Body_Healstation.tact", "healstation", "pickup"));
|
||||
eventToEffectKeyMap.put("healstation", healstation);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Healstation.tact", "healstation", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Healthstation_L.tact", HapticType.Tactosy_Left, "healstation", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Healthstation_R.tact", HapticType.Tactosy_Right, "healstation", "pickup");
|
||||
|
||||
Vector<Haptic> doorOpen = new Vector<>();
|
||||
doorOpen.add(registerFromAsset(context, "bHaptics/Interaction/Body_Door_Open.tact", "dooropen", "door"));
|
||||
eventToEffectKeyMap.put("dooropen", doorOpen);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Door_Open.tact", "dooropen", "door");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Door_Close.tact", "doorclose", "door");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Scan.tact", HapticType.Vest, "scan", "environment", 1.0f, 1.2f);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Rumble.tact", "rumble", "rumble");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Chamber_Up.tact", "liftup", "environment");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Chamber_Down.tact", "liftdown", "environment");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Machine.tact", "machine", "environment");
|
||||
|
||||
Vector<Haptic> doorClose = new Vector<>();
|
||||
doorClose.add(registerFromAsset(context, "bHaptics/Interaction/Body_Door_Close.tact", "doorclose", "door"));
|
||||
eventToEffectKeyMap.put("doorclose", doorClose);
|
||||
|
||||
Vector<Haptic> scan = new Vector<>();
|
||||
scan.add(registerFromAsset(context, "bHaptics/Interaction/Body_Scan.tact", "scan", "environment"));
|
||||
eventToEffectKeyMap.put("scan", scan);
|
||||
|
||||
Vector<Haptic> rumble = new Vector<>();
|
||||
rumble.add(registerFromAsset(context, "bHaptics/Interaction/Body_Rumble.tact", "rumble", "environment"));
|
||||
eventToEffectKeyMap.put("rumble", rumble);
|
||||
|
||||
Vector<Haptic> liftup = new Vector<>();
|
||||
liftup.add(registerFromAsset(context, "bHaptics/Interaction/Body_Chamber_Up.tact", "liftup", "environment"));
|
||||
eventToEffectKeyMap.put("liftup", liftup);
|
||||
|
||||
Vector<Haptic> liftdown = new Vector<>();
|
||||
liftdown.add(registerFromAsset(context, "bHaptics/Interaction/Body_Chamber_Down.tact", "liftdown", "environment"));
|
||||
eventToEffectKeyMap.put("liftdown", liftdown);
|
||||
|
||||
Vector<Haptic> machine = new Vector<>();
|
||||
machine.add(registerFromAsset(context, "bHaptics/Interaction/Body_Machine.tact", "machine", "environment"));
|
||||
eventToEffectKeyMap.put("machine", machine);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_PDA_Open.tact", "pda_open", "pda");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_PDA_Open.tact", "pda_close", "pda");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_PDA_Alarm.tact", "pda_alarm", "pda");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_PDA_Touch.tact", "pda_touch", "pda");
|
||||
|
||||
|
||||
/*
|
||||
WEAPONS
|
||||
*/
|
||||
|
||||
Vector<Haptic> weaponSwitch = new Vector<>();
|
||||
weaponSwitch.add(registerFromAsset(context, "bHaptics/Weapon/Body_Swap.tact", "weapon_switch", "weapon"));
|
||||
eventToEffectKeyMap.put("weapon_switch", weaponSwitch);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Swap.tact", "weapon_switch", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Swap_L.tact", HapticType.Tactosy_Left, "weapon_switch", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Swap_R.tact", HapticType.Tactosy_Right, "weapon_switch", "weapon");
|
||||
|
||||
Vector<Haptic> weaponReload = new Vector<>();
|
||||
weaponReload.add(registerFromAsset(context, "bHaptics/Weapon/Body_Reload.tact", "weapon_reload", "weapon"));
|
||||
eventToEffectKeyMap.put("weapon_reload", weaponReload);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Reload.tact", "weapon_reload", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Reload_L.tact", HapticType.Tactosy_Left, "weapon_reload", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Reload_R.tact", HapticType.Tactosy_Right, "weapon_reload", "weapon");
|
||||
|
||||
Vector<Haptic> punchL = new Vector<>();
|
||||
punchL.add(registerFromAsset(context, "bHaptics/Weapon/Body_Punch_L.tact", "punchL", "weapon"));
|
||||
eventToEffectKeyMap.put("punchL", punchL);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Punch_L.tact", "punchL", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Melee_L.tact", HapticType.Tactosy_Left, "punchL", "weapon");
|
||||
|
||||
Vector<Haptic> punchR = new Vector<>();
|
||||
punchR.add(registerFromAsset(context, "bHaptics/Weapon/Body_Punch_R.tact", "punchR", "weapon"));
|
||||
eventToEffectKeyMap.put("punchR", punchR);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Punch_R.tact", "punchR", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Melee_R.tact", HapticType.Tactosy_Right, "punchR", "weapon");
|
||||
|
||||
Vector<Haptic> weaponPistolFire = new Vector<>();
|
||||
weaponPistolFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Pistol.tact", "pistol_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("pistol_fire", weaponPistolFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Pistol.tact", "pistol_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Pistol_L.tact", HapticType.Tactosy_Left, "pistol_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Pistol_R.tact", HapticType.Tactosy_Right, "pistol_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponShotgunFire = new Vector<>();
|
||||
weaponShotgunFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Shotgun.tact", "shotgun_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("shotgun_fire", weaponShotgunFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Shotgun.tact", "shotgun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Shotgun_L.tact", HapticType.Tactosy_Left, "shotgun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Shotgun_R.tact", HapticType.Tactosy_Right, "shotgun_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponPlasmaFire = new Vector<>();
|
||||
weaponPlasmaFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Plasmagun.tact", "plasmagun_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("plasmagun_fire", weaponPlasmaFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Plasmagun.tact", "plasmagun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_L.tact", HapticType.Tactosy_Left, "plasmagun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_R.tact", HapticType.Tactosy_Right, "plasmagun_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponHandGrenadeInit = new Vector<>();
|
||||
weaponHandGrenadeInit.add(registerFromAsset(context, "bHaptics/Weapon/Body_Grenade_Init.tact", "handgrenade_init", "weapon_init"));
|
||||
eventToEffectKeyMap.put("handgrenade_init", weaponHandGrenadeInit);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Grenade_Init.tact", "handgrenade_init", "weapon_init");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Grenade_Throw.tact", "handgrenade_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Grenade_L.tact", HapticType.Tactosy_Left, "handgrenade_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Armd/Grenade_R.tact", HapticType.Tactosy_Right, "handgrenade_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponHandGrenadeFire = new Vector<>();
|
||||
weaponHandGrenadeFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Grenade_Throw.tact", "handgrenade_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("handgrenade_fire", weaponHandGrenadeFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Machinegun.tact", "machinegun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/SMG_L.tact", HapticType.Tactosy_Left, "machinegun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/SMG_R.tact", HapticType.Tactosy_Right, "machinegun_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponMachinegunFire = new Vector<>();
|
||||
weaponMachinegunFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Machinegun.tact", "machinegun_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("machinegun_fire", weaponMachinegunFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Chaingun_Init.tact", "chaingun_init", "weapon_init");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Chaingun_Fire.tact", "chaingun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Assault_L.tact", HapticType.Tactosy_Left, "chaingun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Assault_R.tact", HapticType.Tactosy_Right, "chaingun_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponChaingunInit = new Vector<>();
|
||||
weaponChaingunInit.add(registerFromAsset(context, "bHaptics/Weapon/Body_Chaingun_Init.tact", "chaingun_init", "weapon_init"));
|
||||
eventToEffectKeyMap.put("chaingun_init", weaponChaingunInit);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_BFG9000_Init.tact", "bfg_init", "weapon_init");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_BFG9000_Fire.tact", "bfg_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_L.tact", HapticType.Tactosy_Left, "bfg_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_R.tact", HapticType.Tactosy_Right, "bfg_fire", "weapon_fire");
|
||||
|
||||
Vector<Haptic> weaponChaingunFire = new Vector<>();
|
||||
weaponChaingunFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_Chaingun_Fire.tact", "chaingun_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("chaingun_fire", weaponChaingunFire);
|
||||
|
||||
Vector<Haptic> weaponBFGInit = new Vector<>();
|
||||
weaponBFGInit.add(registerFromAsset(context, "bHaptics/Weapon/Body_BFG9000_Init.tact", "bfg_init", "weapon_init"));
|
||||
eventToEffectKeyMap.put("bfg_init", weaponBFGInit);
|
||||
|
||||
Vector<Haptic> weaponBFGFire = new Vector<>();
|
||||
weaponBFGFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_BFG9000_Fire.tact", "bfg_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("bfg_fire", weaponBFGFire);
|
||||
|
||||
Vector<Haptic> weaponRocketFire = new Vector<>();
|
||||
weaponRocketFire.add(registerFromAsset(context, "bHaptics/Weapon/Body_RocketLauncher.tact", "rocket_fire", "weapon_fire"));
|
||||
eventToEffectKeyMap.put("rocket_fire", weaponRocketFire);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_RocketLauncher.tact", "rocket_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_L.tact", HapticType.Tactosy_Left, "rocket_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ShootDefault_R.tact", HapticType.Tactosy_Right, "rocket_fire", "weapon_fire");
|
||||
|
||||
initialised = true;
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, HapticType type, String key, String group, float intensity, float duration)
|
||||
{
|
||||
String content = read(context, filename);
|
||||
if (content != null) {
|
||||
|
||||
String hapticKey = key + "_" + type.name();
|
||||
player.registerProject(hapticKey, content);
|
||||
|
||||
Haptic haptic = new Haptic(type, hapticKey, group, 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, String group)
|
||||
{
|
||||
registerFromAsset(context, filename, HapticType.Vest, key, group, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, HapticType type, String key, String group)
|
||||
{
|
||||
registerFromAsset(context, filename, type, key, group, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void destroy()
|
||||
{
|
||||
if (initialised) {
|
||||
|
@ -278,7 +274,7 @@ public class bHaptics {
|
|||
enabled = false;
|
||||
}
|
||||
|
||||
public static void playHaptic(String event, float intensity, float angle, float yHeight)
|
||||
public static void playHaptic(String event, int position, float intensity, float angle, float yHeight)
|
||||
{
|
||||
if (enabled && hasPairedDevice) {
|
||||
String key = getHapticEventKey(event);
|
||||
|
@ -288,34 +284,53 @@ public class bHaptics {
|
|||
if (eventToEffectKeyMap.containsKey(key)) {
|
||||
Vector<Haptic> haptics = eventToEffectKeyMap.get(key);
|
||||
|
||||
Haptic haptic = haptics.get(rand.nextInt(haptics.size()));
|
||||
|
||||
//If another haptic of this group is playing then
|
||||
if (player.isPlaying(haptic.altKey)) {
|
||||
//we can't interrupt it
|
||||
//Don't allow a haptic to interrupt itself if it is already playing
|
||||
if (player.isPlaying(haptics.get(0).key)) {
|
||||
return;
|
||||
}
|
||||
|
||||
//The following groups play at full intensity
|
||||
if (haptic.altKey.compareTo("environment") == 0)
|
||||
{
|
||||
intensity = 100;
|
||||
}
|
||||
for (Haptic haptic : haptics) {
|
||||
|
||||
if (haptic != null) {
|
||||
float flIntensity = (intensity / 100.0F);
|
||||
player.submitRegistered(haptic.key, haptic.altKey, flIntensity, 1.0f, angle, yHeight);
|
||||
//The following groups play at full intensity
|
||||
if (haptic.altKey.compareTo("environment") == 0) {
|
||||
intensity = 100;
|
||||
}
|
||||
|
||||
currentEffect = key;
|
||||
if (position > 0)
|
||||
{
|
||||
//If playing left position and haptic type is right, don;t play that one
|
||||
if (position == 1 && haptic.type == HapticType.Tactosy_Right)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//If playing right position and haptic type is left, don;t play that one
|
||||
if (position == 2 && haptic.type == HapticType.Tactosy_Left)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (haptic != null) {
|
||||
float flIntensity = ((intensity / 100.0F) * haptic.intensity);
|
||||
player.submitRegistered(haptic.key, haptic.altKey, flIntensity, haptic.duration, angle, yHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getHapticEventKey(String event) {
|
||||
String key = event;
|
||||
String key = event.toLowerCase();
|
||||
if (event.contains("melee")) {
|
||||
key = "melee";
|
||||
if (event.contains("right"))
|
||||
{
|
||||
key = "melee_right";
|
||||
}
|
||||
else
|
||||
{
|
||||
key = "melee_left";
|
||||
}
|
||||
} else if (event.contains("damage") && event.contains("bullet")) {
|
||||
key = "bullet";
|
||||
} else if (event.contains("damage") && event.contains("fireball")) {
|
||||
|
@ -366,21 +381,12 @@ public class bHaptics {
|
|||
if (hasPairedDevice) {
|
||||
|
||||
String key = getHapticEventKey(event);
|
||||
if (currentEffect.compareTo(key) == 0) {
|
||||
{
|
||||
player.turnOff(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static Haptic registerFromAsset(Context context, String filename, String key, String group)
|
||||
{
|
||||
String content = read(context, filename);
|
||||
if (content != null) {
|
||||
player.registerProject(key, content);
|
||||
return new Haptic(key, group);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static String read(Context context, String fileName) {
|
||||
try {
|
||||
|
@ -413,34 +419,6 @@ public class bHaptics {
|
|||
}
|
||||
|
||||
if (hasPairedDevice) {
|
||||
|
||||
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) {
|
||||
manager.ping(s);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(String s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
manager.scan();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue