mirror of
https://github.com/DrBeef/Doom3Quest.git
synced 2024-11-10 06:41:36 +00:00
Update to use an external haptics service
completely decoupled from this project, so can be implemented entirely separately
This commit is contained in:
parent
674b30bc6f
commit
d1f570f09a
80 changed files with 189 additions and 942 deletions
|
@ -23,7 +23,7 @@ android {
|
|||
abiFilters 'arm64-v8a'
|
||||
}
|
||||
}
|
||||
minSdkVersion 24
|
||||
minSdkVersion 26
|
||||
targetSdkVersion 26
|
||||
}
|
||||
|
||||
|
@ -40,13 +40,19 @@ android {
|
|||
sourceCompatibility = '1.8'
|
||||
targetCompatibility = '1.8'
|
||||
}
|
||||
compileSdkVersion = 24
|
||||
compileSdkVersion = 26
|
||||
buildToolsVersion = '29.0.1'
|
||||
/* buildTypes {
|
||||
release {
|
||||
debuggable true
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation "com.android.support:support-compat:24.2.0"
|
||||
implementation "com.android.support:support-core-utils:24.2.0"
|
||||
implementation "com.android.support:support-compat:26.1.0"
|
||||
implementation "com.android.support:support-core-utils:26.1.0"
|
||||
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
14
Projects/Android/gradle.properties
Normal file
14
Projects/Android/gradle.properties
Normal file
|
@ -0,0 +1,14 @@
|
|||
## For more details on how to configure your build environment visit
|
||||
# http://www.gradle.org/docs/current/userguide/build_environment.html
|
||||
#
|
||||
# Specifies the JVM arguments used for the daemon process.
|
||||
# The setting is particularly useful for tweaking memory settings.
|
||||
# Default value: -Xmx1024m -XX:MaxPermSize=256m
|
||||
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
|
||||
#
|
||||
# When configured, Gradle will run in incubating parallel mode.
|
||||
# This option should only be used with decoupled projects. More details, visit
|
||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||
# org.gradle.parallel=true
|
||||
#Wed Mar 24 19:45:02 GMT 2021
|
||||
org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
|
|
@ -958,7 +958,6 @@ void Doom3Quest_Vibrate(int channel, float low, float high)
|
|||
void jni_haptic_event(const char* event, int position, int flags, int intensity, float angle, float yHeight);
|
||||
void jni_haptic_updateevent(const char* event, int intensity, float angle);
|
||||
void jni_haptic_stopevent(const char* event);
|
||||
void jni_haptic_beginframe();
|
||||
void jni_haptic_endframe();
|
||||
void jni_haptic_enable();
|
||||
void jni_haptic_disable();
|
||||
|
@ -973,11 +972,6 @@ void Doom3Quest_HapticUpdateEvent(const char* event, int intensity, float angle
|
|||
jni_haptic_updateevent(event, intensity, angle);
|
||||
}
|
||||
|
||||
void Doom3Quest_HapticBeginFrame()
|
||||
{
|
||||
jni_haptic_beginframe();
|
||||
}
|
||||
|
||||
void Doom3Quest_HapticEndFrame()
|
||||
{
|
||||
jni_haptic_endframe();
|
||||
|
@ -1742,8 +1736,6 @@ void Doom3Quest_processHaptics() {//Handle haptics
|
|||
else
|
||||
vrapi_SetHapticVibrationSimple(gAppState.Ovr, controllerIDs[1 - h], 0.0f);
|
||||
}
|
||||
|
||||
Doom3Quest_HapticBeginFrame();
|
||||
}
|
||||
|
||||
void showLoadingIcon()
|
||||
|
@ -1967,7 +1959,6 @@ jmethodID android_shutdown;
|
|||
jmethodID android_haptic_event;
|
||||
jmethodID android_haptic_updateevent;
|
||||
jmethodID android_haptic_stopevent;
|
||||
jmethodID android_haptic_beginframe;
|
||||
jmethodID android_haptic_endframe;
|
||||
jmethodID android_haptic_enable;
|
||||
jmethodID android_haptic_disable;
|
||||
|
@ -2029,18 +2020,6 @@ void jni_haptic_stopevent(const char* event)
|
|||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_stopevent, StringArg1);
|
||||
}
|
||||
|
||||
void jni_haptic_beginframe()
|
||||
{
|
||||
JNIEnv *env;
|
||||
jobject tmp;
|
||||
if (((*jVM)->GetEnv(jVM, (void**) &env, JNI_VERSION_1_4))<0)
|
||||
{
|
||||
(*jVM)->AttachCurrentThread(jVM,&env, NULL);
|
||||
}
|
||||
|
||||
return (*env)->CallVoidMethod(env, jniCallbackObj, android_haptic_beginframe);
|
||||
}
|
||||
|
||||
void jni_haptic_endframe()
|
||||
{
|
||||
JNIEnv *env;
|
||||
|
@ -2155,7 +2134,6 @@ JNIEXPORT void JNICALL Java_com_drbeef_doom3quest_GLES3JNILib_onStart( JNIEnv *
|
|||
android_haptic_event = (*env)->GetMethodID(env, callbackClass, "haptic_event", "(Ljava/lang/String;IIIFF)V");
|
||||
android_haptic_updateevent = (*env)->GetMethodID(env, callbackClass, "haptic_updateevent", "(Ljava/lang/String;IF)V");
|
||||
android_haptic_stopevent = (*env)->GetMethodID(env, callbackClass, "haptic_stopevent", "(Ljava/lang/String;)V");
|
||||
android_haptic_beginframe = (*env)->GetMethodID(env, callbackClass, "haptic_beginframe", "()V");
|
||||
android_haptic_endframe = (*env)->GetMethodID(env, callbackClass, "haptic_endframe", "()V");
|
||||
android_haptic_enable = (*env)->GetMethodID(env, callbackClass, "haptic_enable", "()V");
|
||||
android_haptic_disable = (*env)->GetMethodID(env, callbackClass, "haptic_disable", "()V");
|
||||
|
|
|
@ -481,8 +481,9 @@ void HandleInput_Default( int controlscheme, int switchsticks, ovrInputStateGame
|
|||
if (((offhandButtonsNew & ovrButton_Joystick) !=
|
||||
(offhandButtonsOld & ovrButton_Joystick)) &&
|
||||
(offhandButtonsNew & ovrButton_Joystick)) {
|
||||
|
||||
Android_SetCommand("give all");
|
||||
#ifdef DEBUG
|
||||
//Android_SetCommand("give all");
|
||||
if(give_weapon_count == 1){
|
||||
Android_SetCommand("give weapon_pistol");
|
||||
give_weapon_count = give_weapon_count + 1;
|
||||
|
|
|
@ -171,8 +171,13 @@ public:
|
|||
virtual int GetFrameNumber();
|
||||
|
||||
virtual void Vibrate(int channel, float low, float high );
|
||||
virtual void HapticEvent(const char* event, int position, int flags, int intensity, float angle, float yHeight );
|
||||
virtual void HapticStopEvent(const char* event);
|
||||
virtual void HapticEnable();
|
||||
virtual void HapticDisable();
|
||||
|
||||
// DG: hack to allow adding callbacks and exporting additional functions without breaking the game ABI
|
||||
|
||||
// DG: hack to allow adding callbacks and exporting additional functions without breaking the game ABI
|
||||
// see Common.h for longer explanation...
|
||||
|
||||
// returns true if setting the callback was successful, else false
|
||||
|
@ -2270,12 +2275,37 @@ 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 position, int flags, int intensity, float angle, float yHeight );
|
||||
extern "C" void Doom3Quest_HapticStopEvent(const char* event);
|
||||
extern "C" void Doom3Quest_HapticEnable();
|
||||
extern "C" void Doom3Quest_HapticDisable();
|
||||
|
||||
void idCommonLocal::Vibrate(int channel, float low, float high)
|
||||
{
|
||||
Doom3Quest_Vibrate(channel, low, high);
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticEvent(const char* event, int position, int flags, int intensity, float angle, float yHeight )
|
||||
{
|
||||
if (cvarSystem->GetCVarBool("vr_useHapticsService")) {
|
||||
Doom3Quest_HapticEvent(event, position, flags, intensity, angle, yHeight);
|
||||
}
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticStopEvent(const char* event)
|
||||
{
|
||||
Doom3Quest_HapticStopEvent(event);
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticEnable()
|
||||
{
|
||||
Doom3Quest_HapticEnable();
|
||||
}
|
||||
|
||||
void idCommonLocal::HapticDisable()
|
||||
{
|
||||
Doom3Quest_HapticDisable();
|
||||
}
|
||||
|
||||
/*
|
||||
=================
|
||||
|
|
|
@ -1622,7 +1622,7 @@ bool idEntity::StartSoundShader( const idSoundShader *shader, const s_channelTyp
|
|||
}
|
||||
|
||||
idPlayer *player = gameLocal.GetLocalPlayer();
|
||||
if (vr_bhaptics.GetBool() &&
|
||||
if (vr_useHapticsService.GetBool() &&
|
||||
player != NULL) {
|
||||
idVec3 playerOrigin = gameLocal.GetLocalPlayer()->GetPlayerPhysics()->GetOrigin(0);
|
||||
idVec3 entityOrigin = GetPhysics()->GetOrigin(0);
|
||||
|
|
|
@ -813,6 +813,20 @@ void idGameLocal::SetLocalClient( int clientNum ) {
|
|||
void idGameLocal::SetVRClientInfo(vrClientInfo *pVR)
|
||||
{
|
||||
pVRClientInfo = pVR;
|
||||
|
||||
//Only triggers haptic enabling if value of cvar changes or the first time this is called
|
||||
static bool firstTime = true;
|
||||
static bool lastUseHapticsService = false;
|
||||
if (firstTime || (lastUseHapticsService != vr_useHapticsService.GetBool())) {
|
||||
if (vr_useHapticsService.GetBool()) {
|
||||
common->HapticEnable();
|
||||
} else {
|
||||
common->HapticDisable();
|
||||
}
|
||||
|
||||
firstTime = false;
|
||||
lastUseHapticsService = vr_useHapticsService.GetBool();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -12630,8 +12630,8 @@ void idPlayer::Damage( idEntity *inflictor, idEntity *attacker, const idVec3 &di
|
|||
}
|
||||
|
||||
if ( IsType( idPlayer::Type ) &&
|
||||
//Save the effort of going through this code if bhaptics isn't enabled
|
||||
vr_bhaptics.GetBool()) {
|
||||
//Save the effort of going through this code if vr_useHapticsService isn't enabled
|
||||
vr_useHapticsService.GetBool()) {
|
||||
idVec3 bodyOrigin = vec3_zero;
|
||||
idMat3 bodyAxis;
|
||||
GetViewPos( bodyOrigin, bodyAxis );
|
||||
|
|
|
@ -163,8 +163,6 @@ public:
|
|||
void MotionControllerSetHapticOculus( float low, float hi );
|
||||
void MotionControllerSetHapticOpenVR( int hand, unsigned short value );
|
||||
|
||||
bool GetWeaponStabilised();
|
||||
|
||||
//void MSAAResolve( void );
|
||||
//void FXAAResolve( idImage * leftCurrent, idImage * rightCurrent );
|
||||
//void FXAASetUniforms( Framebuffer FBO );
|
||||
|
@ -414,6 +412,8 @@ private:
|
|||
|
||||
};
|
||||
|
||||
extern idCVar vr_useHapticsService;
|
||||
|
||||
extern idCVar vr_scale;
|
||||
extern idCVar vr_normalViewHeight;
|
||||
extern idCVar vr_useFloorHeight;
|
||||
|
|
|
@ -1758,7 +1758,7 @@ void idSoundWorldLocal::AddChannelContribution( idSoundEmitterLocal *sound, idSo
|
|||
float inputSamples[MIXBUFFER_SAMPLES*2+16];
|
||||
float *alignedInputSamples = (float *) ( ( ( (intptr_t)inputSamples ) + 15 ) & ~15 );
|
||||
|
||||
if (cvarSystem->GetCVarBool("vr_bhaptics") &&
|
||||
if (cvarSystem->GetCVarBool("vr_useHapticsService") &&
|
||||
looping)
|
||||
{
|
||||
idVec3 direction = (listenerPos / DOOM_TO_METERS) - sound->origin;
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Projects/Android/libs/hapticsservice-release.aar
Normal file
BIN
Projects/Android/libs/hapticsservice-release.aar
Normal file
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1586477737488,"description":"","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":3,"name":"DefaultHead_1","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":210,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN_OUT","pointList":[{"intensity":1,"time":0,"x":0.5,"y":0.49}],"visible":true}]}}},"name":"Effect 1","offsetTime":210,"startTime":2}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1586477841512},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616239718226,"description":"","id":"-MWEOE8DY8zhPJHx2AQW","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"DMG_Electric","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":1},{"index":0,"intensity":1}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":5,"intensity":1},{"index":4,"intensity":1}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":2,"intensity":1},{"index":3,"intensity":1}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":5,"intensity":1},{"index":2,"intensity":1}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":5,"intensity":1}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616239749680},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616239598403,"description":"","id":"-MWENlswJzPcV1u6358l","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"DMG_Explosion","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":450,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.56,"y":0.5},{"intensity":1,"time":450,"x":1,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.43,"y":0.5},{"intensity":1,"time":450,"x":0,"y":0.5}],"visible":true}]}}},"name":"Effect 1","offsetTime":450,"startTime":0}],"enable":true},{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":300,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.56,"y":0.5},{"intensity":1,"time":300,"x":1,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.43,"y":0.5},{"intensity":1,"time":300,"x":0,"y":0.5}],"visible":true}]}}},"name":"Effect 1 copy 1","offsetTime":300,"startTime":200}],"enable":true}],"updatedAt":1616239754592},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616239604665,"description":"","id":"-MWENnPmWsKl4vO1F1EH","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"HeadShot","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":0,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":1,"y":0.5}],"visible":true}]}}},"name":"Effect 1 copy 3","offsetTime":250,"startTime":0},{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":0,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":1,"y":0.5}],"visible":true}]}}},"name":"Effect 1 copy 5","offsetTime":250,"startTime":0}],"enable":true},{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":250,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":0,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.51,"y":0.5},{"intensity":1,"time":250,"x":1,"y":0.5}],"visible":true}]}}},"name":"Effect 1 copy 4","offsetTime":250,"startTime":0}],"enable":true}],"updatedAt":1616239696568},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616239575886,"description":"","id":"-MWENgOAxXzbwAH9Jh6I","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"DMG_Melee1","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":400,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0,"y":0.02},{"intensity":1,"time":400,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.7,"time":0,"x":0,"y":0.01},{"intensity":0.7,"time":400,"x":1,"y":1}],"visible":true}]}}},"name":"Effect 1","offsetTime":400,"startTime":0}],"enable":true},{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":328,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.8,"time":0,"x":0,"y":0},{"intensity":0.8,"time":328,"x":1,"y":1}],"visible":true}]}}},"name":"Effect 2","offsetTime":328,"startTime":137}],"enable":true}],"updatedAt":1616239662646},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616239578155,"description":"","id":"-MWENgwY7SIuYym4NuIN","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"DMG_Melee2","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":400,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":1,"y":0.02},{"intensity":1,"time":400,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.7,"time":0,"x":1,"y":0.01},{"intensity":0.7,"time":400,"x":0,"y":1}],"visible":true}]}}},"name":"Effect 1","offsetTime":400,"startTime":0}],"enable":true},{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":328,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.8,"time":0,"x":1,"y":0},{"intensity":0.8,"time":328,"x":0,"y":1}],"visible":true}]}}},"name":"Effect 2","offsetTime":328,"startTime":137}],"enable":true}],"updatedAt":1616239663558},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238902724,"description":"","id":"-MWEL71xDrgeF3VhdYGV","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":3,"name":"ItemPickup","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":true,"feedback":[{"endTime":62,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.2},{"index":2,"intensity":0.2},{"index":0,"intensity":0.2}],"startTime":0},{"endTime":125,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":0,"intensity":0.2},{"index":1,"intensity":0.2},{"index":4,"intensity":0.2},{"index":5,"intensity":0.2},{"index":2,"intensity":0.2}],"startTime":62},{"endTime":187,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":4,"intensity":0.2},{"index":0,"intensity":0.2},{"index":1,"intensity":0.2},{"index":2,"intensity":0.2},{"index":5,"intensity":0.2}],"startTime":125},{"endTime":250,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":4,"intensity":0.2},{"index":5,"intensity":0.2}],"startTime":187},{"endTime":250,"playbackType":"NONE","startTime":250,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":250,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616239013203},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238902724,"description":"","id":"-MWEL71xDrgeF3VhdYGV","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":3,"name":"ItemPickup","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":62,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.2},{"index":2,"intensity":0.2},{"index":0,"intensity":0.2}],"startTime":0},{"endTime":125,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":0,"intensity":0.2},{"index":1,"intensity":0.2},{"index":4,"intensity":0.2},{"index":5,"intensity":0.2},{"index":2,"intensity":0.2}],"startTime":62},{"endTime":187,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":4,"intensity":0.2},{"index":0,"intensity":0.2},{"index":1,"intensity":0.2},{"index":2,"intensity":0.2},{"index":5,"intensity":0.2}],"startTime":125},{"endTime":250,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.2},{"index":4,"intensity":0.2},{"index":5,"intensity":0.2}],"startTime":187},{"endTime":250,"playbackType":"NONE","startTime":250,"pointList":[]}]},"mode":"DOT_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","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":250,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616239013203},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238950616,"description":"","id":"-MWELIjGh36wjtZnboq_","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":"PDA_Click","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":1616239011654},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238950616,"description":"","id":"-MWELIjGh36wjtZnboq_","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":"PDA_Click","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":75,"startTime":25},{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 1","offsetTime":75,"startTime":125}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616239011654},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616568625884,"description":"","id":"-MBDzKgwgnexUgAkQSpf","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"Spark","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":0,"intensity":0.5}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.5},{"index":4,"intensity":0.5}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.5},{"index":3,"intensity":0.5}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.5},{"index":1,"intensity":0.5}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5},{"index":5,"intensity":0.5}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616568665047},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616725262848,"description":"","layout":{"layouts":{"Head":[{"index":0,"x":0,"y":0.5},{"index":1,"x":0.2,"y":0.5},{"index":2,"x":0.4,"y":0.5},{"index":3,"x":0.6,"y":0.5},{"index":4,"x":0.8,"y":0.5},{"index":5,"x":1,"y":0.5}]},"name":"Tactal","type":"Tactal"},"mediaFileDuration":1,"name":"Steam","tracks":[{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":2,"intensity":0.5},{"index":3,"intensity":0.5},{"index":4,"intensity":0.5}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.5},{"index":4,"intensity":0.5}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":3,"intensity":0.5}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":2,"intensity":0.5},{"index":3,"intensity":0.5},{"index":4,"intensity":0.5}],"startTime":600}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":800,"startTime":101}],"enable":true},{"effects":[{"modes":{"Head":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":1000,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.6,"time":0,"x":0.51,"y":0.5},{"intensity":0.6,"time":1000,"x":0,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":0.6,"time":0,"x":0.51,"y":0.5},{"intensity":0.6,"time":1000,"x":1,"y":0.5}],"visible":true}]}}},"name":"Effect 1 copy 5","offsetTime":1000,"startTime":0}],"enable":true}],"updatedAt":1616726002365,"id":"-MWgKRBAGBbUKHWvEE50"},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616227496861,"description":"","id":"-MWDebPg08cNHty8ERNv","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":"DoorSlide","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.1}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":18,"intensity":0.1},{"index":15,"intensity":0.1}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":17,"intensity":0.1}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":12,"intensity":0.1},{"index":19,"intensity":0.1}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":19,"intensity":0.1},{"index":14,"intensity":0.1}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":12,"intensity":0.1},{"index":15,"intensity":0.1}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":18,"intensity":0.1},{"index":12,"intensity":0.1}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":18,"intensity":0.1}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":13,"intensity":0.1}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":19,"intensity":0.1},{"index":16,"intensity":0.1}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":18,"intensity":0.1}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":15,"intensity":0.1},{"index":12,"intensity":0.1}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true}],"updatedAt":1616227655930},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616229514005,"description":"","id":"-MWDmIsZeXfuJpAqQa7u","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":0.673,"name":"PlayerJump","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.2,"time":0,"x":0,"y":1},{"intensity":0.2,"time":150,"x":0,"y":0.5}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.3,"time":0,"x":0.34,"y":1},{"intensity":0.3,"time":150,"x":0.33,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.3,"time":0,"x":0.67,"y":1},{"intensity":0.3,"time":150,"x":0.65,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.2,"time":0,"x":1,"y":0.99},{"intensity":0.2,"time":150,"x":1,"y":0.49}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.2,"time":0,"x":0,"y":1},{"intensity":0.2,"time":150,"x":0,"y":0.51}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.3,"time":0,"x":0.34,"y":1},{"intensity":0.3,"time":150,"x":0.33,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.3,"time":0,"x":0.67,"y":1},{"intensity":0.3,"time":150,"x":0.65,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.2,"time":0,"x":1,"y":0.99},{"intensity":0.2,"time":150,"x":1,"y":0.51}],"visible":true}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616229602098},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616229516658,"description":"","id":"-MWDmJX0TWkdbZGPQNVm","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":0.673,"name":"PlayerLanding","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":90,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.2},{"index":17,"intensity":0.2},{"index":18,"intensity":0.2},{"index":19,"intensity":0.2}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":90,"playbackType":"NONE","pointList":[{"index":16,"intensity":0.2},{"index":17,"intensity":0.2},{"index":18,"intensity":0.2},{"index":19,"intensity":0.2}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":90,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616229600525},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616134839464,"description":"","id":"-MW888lfGJrJsPYe6dI_","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":"Spark","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":300,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.4}],"startTime":0},{"endTime":150,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.4}],"startTime":75},{"endTime":225,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.4},{"index":6,"intensity":0.4}],"startTime":150},{"endTime":300,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.4}],"startTime":225},{"endTime":300,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.4},{"index":4,"intensity":0.4}],"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":1616236084901},"durationMillis":0,"intervalMillis":20,"size":20}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238431854,"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":"Fist","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":0},{"endTime":150,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":75}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238451255,"id":"-MWEJK4bODAJ-NHSodeK"},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238431854,"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":"Fist","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":0},{"endTime":150,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":75}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238451255,"id":"-MWEJK4bODAJ-NHSodeK"},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238116773,"description":"","id":"-MWEI79Tl1wVuVCDZnRm","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":"Recoil_LV1","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":"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":100,"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":100,"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":100,"startTime":0}],"enable":true}],"updatedAt":1616238334506},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238116773,"description":"","id":"-MWEI79Tl1wVuVCDZnRm","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":"Recoil_LV1","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"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":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":100,"startTime":0}],"enable":true},{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"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":[]}},"ForearmR":{"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":[]}]}}},"name":"Effect 1 copy","offsetTime":100,"startTime":0}],"enable":true}],"updatedAt":1616238334506},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238120012,"description":"","id":"-MWEI7x3jlQm4ZMf70R2","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":"Recoil_LV2","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1},{"index":5,"intensity":1},{"index":4,"intensity":1},{"index":3,"intensity":1}],"startTime":0},{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":4,"intensity":1},{"index":1,"intensity":1},{"index":5,"intensity":1},{"index":2,"intensity":1},{"index":0,"intensity":1},{"index":3,"intensity":1}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238295181},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616238120012,"description":"","id":"-MWEI7x3jlQm4ZMf70R2","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":"Recoil_LV2","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1},{"index":5,"intensity":1},{"index":4,"intensity":1},{"index":3,"intensity":1}],"startTime":0},{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":4,"intensity":1},{"index":1,"intensity":1},{"index":5,"intensity":1},{"index":2,"intensity":1},{"index":0,"intensity":1},{"index":3,"intensity":1}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238295181},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237271401,"description":"","id":"-MWEEtlf-TfJMr3V4qqm","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":"Recoil_LV3","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","startTime":0,"pointList":[]},{"endTime":150,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":75},{"endTime":225,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":150},{"endTime":300,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":225}]},"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":1616237886876},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237271401,"description":"","id":"-MWEEtlf-TfJMr3V4qqm","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":"Recoil_LV3","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":75,"playbackType":"NONE","startTime":0,"pointList":[]},{"endTime":150,"playbackType":"FADE_IN_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":75},{"endTime":225,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":4,"intensity":1},{"index":5,"intensity":1}],"startTime":150},{"endTime":300,"playbackType":"NONE","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1}],"startTime":225}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"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":1616237886876},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237295765,"description":"","id":"-MWEEziM8_8HSTnQljOm","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":"Recoil_LV4","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":166,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":0,"intensity":1}],"startTime":0},{"endTime":333,"playbackType":"NONE","pointList":[{"index":4,"intensity":1},{"index":1,"intensity":1}],"startTime":166},{"endTime":500,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":333}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":500,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616237885364},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237295765,"description":"","id":"-MWEEziM8_8HSTnQljOm","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":"Recoil_LV4","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":166,"playbackType":"NONE","pointList":[{"index":3,"intensity":1},{"index":0,"intensity":1}],"startTime":0},{"endTime":333,"playbackType":"NONE","pointList":[{"index":4,"intensity":1},{"index":1,"intensity":1}],"startTime":166},{"endTime":500,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":333}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":500,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616237885364},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237344969,"description":"","id":"-MWEFAjBFsS0u1TtNO2B","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":"Recoil_LV5","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":999,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":999,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.47,"y":0.49},{"intensity":1,"time":167,"x":0.3,"y":0.39},{"intensity":1,"time":301,"x":0.35,"y":0.24},{"intensity":1,"time":522,"x":0.09,"y":0.26},{"intensity":1,"time":762,"x":0.29,"y":0.06},{"intensity":1,"time":999,"x":0.02,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.51},{"intensity":1,"time":122,"x":0.27,"y":0.53},{"intensity":1,"time":234,"x":0.12,"y":0.44},{"intensity":1,"time":412,"x":0.26,"y":0.68},{"intensity":1,"time":547,"x":0.06,"y":0.61},{"intensity":1,"time":735,"x":0.23,"y":0.85},{"intensity":1,"time":867,"x":0.03,"y":0.8},{"intensity":1,"time":999,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.49},{"intensity":1,"time":152,"x":0.39,"y":0.68},{"intensity":1,"time":320,"x":0.58,"y":0.8},{"intensity":1,"time":538,"x":0.3,"y":0.88},{"intensity":1,"time":681,"x":0.49,"y":0.9},{"intensity":1,"time":816,"x":0.34,"y":1},{"intensity":1,"time":999,"x":0.58,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.45,"y":0.48},{"intensity":1,"time":90,"x":0.61,"y":0.51},{"intensity":1,"time":172,"x":0.56,"y":0.65},{"intensity":1,"time":316,"x":0.79,"y":0.77},{"intensity":1,"time":432,"x":0.8,"y":0.56},{"intensity":1,"time":526,"x":0.95,"y":0.64},{"intensity":1,"time":719,"x":0.68,"y":0.86},{"intensity":1,"time":829,"x":0.87,"y":0.92},{"intensity":1,"time":911,"x":1,"y":0.85},{"intensity":1,"time":999,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.49,"y":0.49},{"intensity":1,"time":135,"x":0.7,"y":0.58},{"intensity":1,"time":296,"x":0.62,"y":0.32},{"intensity":1,"time":485,"x":0.92,"y":0.43},{"intensity":1,"time":642,"x":0.77,"y":0.21},{"intensity":1,"time":778,"x":1,"y":0.2},{"intensity":1,"time":903,"x":0.85,"y":0.05},{"intensity":1,"time":999,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.5},{"intensity":1,"time":129,"x":0.39,"y":0.32},{"intensity":1,"time":276,"x":0.61,"y":0.31},{"intensity":1,"time":447,"x":0.38,"y":0.2},{"intensity":1,"time":623,"x":0.64,"y":0.16},{"intensity":1,"time":825,"x":0.36,"y":0.05},{"intensity":1,"time":999,"x":0.61,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":999,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238531207},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237344969,"description":"","id":"-MWEFAjBFsS0u1TtNO2B","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":"Recoil_LV5","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":999,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.47,"y":0.49},{"intensity":1,"time":167,"x":0.3,"y":0.39},{"intensity":1,"time":301,"x":0.35,"y":0.24},{"intensity":1,"time":522,"x":0.09,"y":0.26},{"intensity":1,"time":762,"x":0.29,"y":0.06},{"intensity":1,"time":999,"x":0.02,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.51},{"intensity":1,"time":122,"x":0.27,"y":0.53},{"intensity":1,"time":234,"x":0.12,"y":0.44},{"intensity":1,"time":412,"x":0.26,"y":0.68},{"intensity":1,"time":547,"x":0.06,"y":0.61},{"intensity":1,"time":735,"x":0.23,"y":0.85},{"intensity":1,"time":867,"x":0.03,"y":0.8},{"intensity":1,"time":999,"x":0,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.49},{"intensity":1,"time":152,"x":0.39,"y":0.68},{"intensity":1,"time":320,"x":0.58,"y":0.8},{"intensity":1,"time":538,"x":0.3,"y":0.88},{"intensity":1,"time":681,"x":0.49,"y":0.9},{"intensity":1,"time":816,"x":0.34,"y":1},{"intensity":1,"time":999,"x":0.58,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.45,"y":0.48},{"intensity":1,"time":90,"x":0.61,"y":0.51},{"intensity":1,"time":172,"x":0.56,"y":0.65},{"intensity":1,"time":316,"x":0.79,"y":0.77},{"intensity":1,"time":432,"x":0.8,"y":0.56},{"intensity":1,"time":526,"x":0.95,"y":0.64},{"intensity":1,"time":719,"x":0.68,"y":0.86},{"intensity":1,"time":829,"x":0.87,"y":0.92},{"intensity":1,"time":911,"x":1,"y":0.85},{"intensity":1,"time":999,"x":1,"y":1}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.49,"y":0.49},{"intensity":1,"time":135,"x":0.7,"y":0.58},{"intensity":1,"time":296,"x":0.62,"y":0.32},{"intensity":1,"time":485,"x":0.92,"y":0.43},{"intensity":1,"time":642,"x":0.77,"y":0.21},{"intensity":1,"time":778,"x":1,"y":0.2},{"intensity":1,"time":903,"x":0.85,"y":0.05},{"intensity":1,"time":999,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_OUT","pointList":[{"intensity":1,"time":0,"x":0.46,"y":0.5},{"intensity":1,"time":129,"x":0.39,"y":0.32},{"intensity":1,"time":276,"x":0.61,"y":0.31},{"intensity":1,"time":447,"x":0.38,"y":0.2},{"intensity":1,"time":623,"x":0.64,"y":0.16},{"intensity":1,"time":825,"x":0.36,"y":0.05},{"intensity":1,"time":999,"x":0.61,"y":0}],"visible":true}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":999,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}}},"name":"Effect 1","offsetTime":999,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616238531207},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616227794594,"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":"ReloadFinish","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","pointList":[{"index":0,"intensity":0.5},{"index":1,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0},{"endTime":200,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5},{"index":4,"intensity":0.5},{"index":5,"intensity":0.5}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616227937233,"id":"-MWDfk5khkaMqIRjjfr0"},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616227794594,"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":"ReloadFinish","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":0,"intensity":0.5},{"index":1,"intensity":0.5},{"index":2,"intensity":0.5}],"startTime":0},{"endTime":200,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5},{"index":4,"intensity":0.5},{"index":5,"intensity":0.5}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616227937233,"id":"-MWDfk5khkaMqIRjjfr0"},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237979018,"description":"","id":"-MWEHaX3l8CHJ38C3586","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":"SoulCube","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":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1},{"index":5,"intensity":1},{"index":4,"intensity":1},{"index":3,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"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":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":0.8},{"index":1,"intensity":0.8},{"index":2,"intensity":0.8},{"index":5,"intensity":0.8},{"index":4,"intensity":0.8},{"index":3,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":150,"startTime":350}],"enable":true}],"updatedAt":1616238609474},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616237979018,"description":"","id":"-MWEHaX3l8CHJ38C3586","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":"SoulCube","tracks":[{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":1},{"index":1,"intensity":1},{"index":2,"intensity":1},{"index":5,"intensity":1},{"index":4,"intensity":1},{"index":3,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"ForearmR":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"effects":[{"modes":{"ForearmL":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":0.8},{"index":1,"intensity":0.8},{"index":2,"intensity":0.8},{"index":5,"intensity":0.8},{"index":4,"intensity":0.8},{"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":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":150,"startTime":350}],"enable":true}],"updatedAt":1616238609474},"durationMillis":0,"intervalMillis":20,"size":20}
|
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1614063863216,"description":"","id":"-MUCh-OyqGJ1QiTCDLOU","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Reload","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":102,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.6}],"startTime":0},{"endTime":204,"playbackType":"FADE_IN","pointList":[{"index":3,"intensity":0.6}],"startTime":102}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":102,"playbackType":"NONE","pointList":[{"index":6,"intensity":0.6},{"index":7,"intensity":0.6}],"startTime":0},{"endTime":204,"playbackType":"FADE_IN","pointList":[{"index":2,"intensity":0.6},{"index":3,"intensity":0.6}],"startTime":102}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":204,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"type":"project","updatedAt":1614063881495},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616157976157,"description":"","id":"-MW9WPPdtm9PkZGPFdVi","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":"Chainsaw_LV1","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.2},{"index":7,"intensity":0.2}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":6,"intensity":0.2},{"index":3,"intensity":0.2}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.2}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.2}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.2}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.2},{"index":6,"intensity":0.2}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225501153},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616157976157,"description":"","id":"-MW9WPPdtm9PkZGPFdVi","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":"Chainsaw_LV1","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.2},{"index":4,"intensity":0.2}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.2},{"index":0,"intensity":0.2}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":4,"intensity":0.2}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.2}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":4,"intensity":0.2}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.2},{"index":5,"intensity":0.2}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225501153},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616157569521,"description":"","id":"-MW9Ur802dC5KOcJAryy","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.2,"name":"Chainsaw_LV2","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.5},{"index":7,"intensity":0.5}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":6,"intensity":0.5},{"index":15,"intensity":0.5},{"index":3,"intensity":0.5}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":11,"intensity":0.5},{"index":10,"intensity":0.5}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.5}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.5},{"index":14,"intensity":0.5}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":2,"intensity":0.5},{"index":15,"intensity":0.5},{"index":10,"intensity":0.5}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":2,"intensity":1},{"index":7,"intensity":1}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":6,"intensity":1},{"index":15,"intensity":1},{"index":3,"intensity":1}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":11,"intensity":1},{"index":10,"intensity":1}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":2,"intensity":1}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":7,"intensity":1},{"index":14,"intensity":1}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":2,"intensity":1},{"index":15,"intensity":1},{"index":10,"intensity":1}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225656740},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616157569521,"description":"","id":"-MW9Ur802dC5KOcJAryy","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.2,"name":"Chainsaw_LV2","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":4,"intensity":0.5}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.5},{"index":12,"intensity":0.5},{"index":0,"intensity":0.5}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":8,"intensity":0.5},{"index":9,"intensity":0.5}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":4,"intensity":0.5},{"index":13,"intensity":0.5}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":1,"intensity":0.5},{"index":12,"intensity":0.5},{"index":9,"intensity":0.5}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":true,"feedback":[{"endTime":200,"playbackType":"NONE","pointList":[{"index":1,"intensity":1},{"index":4,"intensity":1}],"startTime":0},{"endTime":400,"playbackType":"NONE","pointList":[{"index":5,"intensity":1},{"index":12,"intensity":1},{"index":0,"intensity":1}],"startTime":200},{"endTime":600,"playbackType":"NONE","pointList":[{"index":8,"intensity":1},{"index":9,"intensity":1}],"startTime":400},{"endTime":800,"playbackType":"NONE","pointList":[{"index":1,"intensity":1}],"startTime":600},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":4,"intensity":1},{"index":13,"intensity":1}],"startTime":800},{"endTime":1000,"playbackType":"NONE","pointList":[{"index":1,"intensity":1},{"index":12,"intensity":1},{"index":9,"intensity":1}],"startTime":1000}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"dot","offsetTime":1000,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225656740},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153465590,"description":"","id":"-MW9FC9j9K9IDFfD-kaH","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":"Fist","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":1},{"index":7,"intensity":1},{"index":2,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225505995},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153465590,"description":"","id":"-MW9FC9j9K9IDFfD-kaH","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":"Fist","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":1},{"index":4,"intensity":1},{"index":1,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225505995},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1614044314479,"description":"","id":"-MUBXQyWd34-ZarylCUG","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Grenade_Init","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.16,"y":0.16},{"intensity":0.5,"time":100,"x":0,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":100,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614044964990},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1614044993605,"description":"","id":"-MUB_0lqX_FXOJ79X20H","layout":{"layouts":{"VestBack":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}],"VestFront":[{"index":0,"x":0,"y":0},{"index":1,"x":0.333,"y":0},{"index":2,"x":0.667,"y":0},{"index":3,"x":1,"y":0},{"index":4,"x":0,"y":0.25},{"index":5,"x":0.333,"y":0.25},{"index":6,"x":0.667,"y":0.25},{"index":7,"x":1,"y":0.25},{"index":8,"x":0,"y":0.5},{"index":9,"x":0.333,"y":0.5},{"index":10,"x":0.667,"y":0.5},{"index":11,"x":1,"y":0.5},{"index":12,"x":0,"y":0.75},{"index":13,"x":0.333,"y":0.75},{"index":14,"x":0.667,"y":0.75},{"index":15,"x":1,"y":0.75},{"index":16,"x":0,"y":1},{"index":17,"x":0.333,"y":1},{"index":18,"x":0.667,"y":1},{"index":19,"x":1,"y":1}]},"name":"Tactot","type":"Tactot"},"mediaFileDuration":1,"name":"Body_Grenade_Throw","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":124,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.16},{"intensity":0.5,"time":124,"x":0.98,"y":0.01}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":1,"y":0.26},{"intensity":0.5,"time":124,"x":0.99,"y":0.01}],"visible":true}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":124,"playbackType":"NONE","pointList":[{"index":3,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.84,"y":0.01},{"intensity":0.5,"time":124,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":0.5,"time":0,"x":0.85,"y":0.24},{"intensity":0.5,"time":124,"x":1,"y":0.23}],"visible":true}]}}},"name":"Effect 1","offsetTime":124,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1614045738313},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153465748,"description":"","id":"-MW9FCCBrqCjd2z7pWaF","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":"Recoil_LV1","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":0.9},{"index":6,"intensity":0.9},{"index":2,"intensity":0.9},{"index":7,"intensity":0.9}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.68,"y":0.23},{"intensity":1,"time":43,"x":0.67,"y":0},{"intensity":1,"time":100,"x":0.97,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.73,"y":0.21},{"intensity":1,"time":55,"x":1,"y":0.22},{"intensity":1,"time":100,"x":1,"y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":0.67,"y":0.23},{"intensity":1,"time":100,"x":1,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":100,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225504311},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153465748,"description":"","id":"-MW9FCCBrqCjd2z7pWaF","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":"Recoil_LV1","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":0.9},{"index":5,"intensity":0.9},{"index":1,"intensity":0.9},{"index":4,"intensity":0.9}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":"0.320","y":0.23},{"intensity":1,"time":43,"x":"0.330","y":0},{"intensity":1,"time":100,"x":"0.030","y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":"0.270","y":0.21},{"intensity":1,"time":55,"x":"0.000","y":0.22},{"intensity":1,"time":100,"x":"0.000","y":0}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"NONE","pointList":[{"intensity":1,"time":0,"x":"0.330","y":0.23},{"intensity":1,"time":100,"x":"0.000","y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":100,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225504311},"durationMillis":0,"intervalMillis":20,"size":20}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153466399,"description":"","id":"-MW9FCMM__CKV0-sbrlq","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":"Recoil_LV5","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":1},{"index":3,"intensity":1},{"index":7,"intensity":1},{"index":11,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":1},{"index":3,"intensity":1},{"index":7,"intensity":1},{"index":11,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 4","offsetTime":200,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":19,"intensity":0.5},{"index":14,"intensity":0.5},{"index":9,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":19,"intensity":0.6},{"index":14,"intensity":0.6},{"index":9,"intensity":0.6}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 5","offsetTime":200,"startTime":199}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":0.8},{"index":5,"intensity":0.8},{"index":9,"intensity":0.8},{"index":14,"intensity":0.8},{"index":19,"intensity":0.8},{"index":15,"intensity":0.8},{"index":10,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":0.8},{"index":5,"intensity":0.8},{"index":9,"intensity":0.8},{"index":14,"intensity":0.8},{"index":19,"intensity":0.8},{"index":15,"intensity":0.8},{"index":10,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 3","offsetTime":200,"startTime":100},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":13,"intensity":0.3},{"index":18,"intensity":0.3},{"index":14,"intensity":0.3}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","startTime":0,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":200,"startTime":300}],"enable":true}],"updatedAt":1616225507057},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616153466399,"description":"","id":"-MW9FCMM__CKV0-sbrlq","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":"Recoil_LV5","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":1},{"index":0,"intensity":1},{"index":4,"intensity":1},{"index":8,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":1,"intensity":1},{"index":0,"intensity":1},{"index":4,"intensity":1},{"index":8,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 4","offsetTime":200,"startTime":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":16,"intensity":0.5},{"index":13,"intensity":0.5},{"index":10,"intensity":0.5}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":16,"intensity":0.6},{"index":13,"intensity":0.6},{"index":10,"intensity":0.6}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 5","offsetTime":200,"startTime":199}],"enable":true},{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":0.8},{"index":6,"intensity":0.8},{"index":10,"intensity":0.8},{"index":13,"intensity":0.8},{"index":16,"intensity":0.8},{"index":12,"intensity":0.8},{"index":9,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":2,"intensity":0.8},{"index":6,"intensity":0.8},{"index":10,"intensity":0.8},{"index":13,"intensity":0.8},{"index":16,"intensity":0.8},{"index":12,"intensity":0.8},{"index":9,"intensity":0.8}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 3","offsetTime":200,"startTime":100},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","pointList":[{"index":14,"intensity":0.3},{"index":17,"intensity":0.3},{"index":13,"intensity":0.3}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":200,"playbackType":"FADE_OUT","startTime":0,"pointList":[]}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 2","offsetTime":200,"startTime":300}],"enable":true}],"updatedAt":1616225507057},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616134825893,"description":"","id":"-MW885ScMFCJIa5ASpG2","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":"ReloadFinish","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":7,"intensity":0.6}],"startTime":0},{"endTime":200,"playbackType":"FADE_IN","pointList":[{"index":3,"intensity":0.6}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":6,"intensity":0.6},{"index":7,"intensity":0.6}],"startTime":0},{"endTime":200,"playbackType":"FADE_IN","pointList":[{"index":2,"intensity":0.6},{"index":3,"intensity":0.6}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616227734704},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616134825893,"description":"","id":"-MW885ScMFCJIa5ASpG2","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":"ReloadFinish","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":4,"intensity":0.6}],"startTime":0},{"endTime":200,"playbackType":"FADE_IN","pointList":[{"index":0,"intensity":0.6}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":100,"playbackType":"NONE","pointList":[{"index":5,"intensity":0.6},{"index":4,"intensity":0.6}],"startTime":0},{"endTime":200,"playbackType":"FADE_IN","pointList":[{"index":1,"intensity":0.6},{"index":0,"intensity":0.6}],"startTime":100}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":200,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616227734704},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616160745618,"description":"","id":"-MW9fyYUJQWycnRv_wEC","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":"SoulCube","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":1},{"index":7,"intensity":1},{"index":2,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 1","offsetTime":150,"startTime":350,"trackIndex":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":3,"intensity":1},{"index":7,"intensity":1},{"index":2,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225499541},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616160745618,"description":"","id":"-MW9fyYUJQWycnRv_wEC","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":"SoulCube","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":1},{"index":4,"intensity":1},{"index":1,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1 copy 1","offsetTime":150,"startTime":350,"trackIndex":0},{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"FADE_OUT","pointList":[{"index":0,"intensity":1},{"index":4,"intensity":1},{"index":1,"intensity":1}],"startTime":0}]},"mode":"DOT_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"NONE","visible":true,"pointList":[]}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616225499541},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616134823958,"description":"","id":"-MW884zOsften2orxco7","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":"WeaponSwap","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.66,"y":0.53},{"intensity":0.5,"time":150,"x":1,"y":0.25}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":0.67,"y":0.28},{"intensity":0.5,"time":150,"x":1,"y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616236130134},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -1 +0,0 @@
|
|||
{"project":{"createdAt":1616134823958,"description":"","id":"-MW884zOsften2orxco7","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":"WeaponSwap","tracks":[{"effects":[{"modes":{"VestBack":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[]}},"VestFront":{"dotMode":{"dotConnected":false,"feedback":[{"endTime":150,"playbackType":"NONE","startTime":0,"pointList":[]}]},"mode":"PATH_MODE","pathMode":{"feedback":[{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":"0.340","y":0.53},{"intensity":0.5,"time":150,"x":"0.000","y":0.25}],"visible":true},{"movingPattern":"CONST_SPEED","playbackType":"FADE_IN","pointList":[{"intensity":0.5,"time":0,"x":"0.330","y":0.28},{"intensity":0.5,"time":150,"x":"0.000","y":0}],"visible":true}]}}},"name":"Effect 1","offsetTime":150,"startTime":0}],"enable":true},{"enable":true,"effects":[]}],"updatedAt":1616236130134},"durationMillis":0,"intervalMillis":20,"size":20}
|
|
@ -5,18 +5,24 @@ package com.drbeef.doom3quest;
|
|||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.Activity;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.ServiceConnection;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.res.AssetManager;
|
||||
import android.os.Bundle;
|
||||
import android.os.IBinder;
|
||||
import android.os.RemoteException;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.util.Log;
|
||||
import android.view.SurfaceHolder;
|
||||
import android.view.SurfaceView;
|
||||
import android.view.WindowManager;
|
||||
|
||||
import com.bhaptics.commons.PermissionUtils;
|
||||
import com.drbeef.doom3quest.bhaptics.bHaptics;
|
||||
import com.drbeef.hapticsservice.IHapticsService;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.File;
|
||||
|
@ -29,7 +35,7 @@ import java.io.OutputStream;
|
|||
|
||||
import static android.system.Os.setenv;
|
||||
|
||||
@SuppressLint("SdCardPath") public class GLES3JNIActivity extends Activity implements SurfaceHolder.Callback
|
||||
@SuppressLint("SdCardPath") public class GLES3JNIActivity extends Activity implements SurfaceHolder.Callback, ServiceConnection
|
||||
{
|
||||
// Load the gles3jni library right away to make sure JNI_OnLoad() gets called as the very first thing.
|
||||
static
|
||||
|
@ -37,9 +43,15 @@ import static android.system.Os.setenv;
|
|||
System.loadLibrary( "doom3" );
|
||||
}
|
||||
|
||||
private static final String TAG = "Doom3Quest";
|
||||
private boolean hasHapticService = false;
|
||||
private IHapticsService hapticsService = null;
|
||||
|
||||
private int permissionCount = 0;
|
||||
private static final int READ_EXTERNAL_STORAGE_PERMISSION_ID = 1;
|
||||
private static final int WRITE_EXTERNAL_STORAGE_PERMISSION_ID = 2;
|
||||
|
||||
|
||||
private static final String APPLICATION = "Doom3Quest";
|
||||
|
||||
private String commandLineParams;
|
||||
|
||||
|
@ -53,41 +65,74 @@ import static android.system.Os.setenv;
|
|||
}
|
||||
|
||||
|
||||
public void haptic_event(String event, int position, int flags, int intensity, float angle, float yHeight) {
|
||||
public void haptic_event(String event, int position, int flags, int intensity, float angle, float yHeight) {
|
||||
|
||||
bHaptics.playHaptic(event, position, flags, intensity, angle, yHeight);
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticEvent(APPLICATION, event, position, flags, intensity, angle, yHeight);
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void haptic_updateevent(String event, int intensity, float angle) {
|
||||
|
||||
bHaptics.updateRepeatingHaptic(event, intensity, angle);
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticUpdateEvent(APPLICATION, event, intensity, angle);
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void haptic_stopevent(String event) {
|
||||
|
||||
bHaptics.stopHaptic(event);
|
||||
}
|
||||
|
||||
public void haptic_beginframe() {
|
||||
bHaptics.beginFrame();
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticStopEvent(APPLICATION, event);
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void haptic_endframe() {
|
||||
bHaptics.endFrame();
|
||||
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticFrameTick();
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void haptic_enable() {
|
||||
bHaptics.enable(this);
|
||||
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticEnable();
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void haptic_disable() {
|
||||
bHaptics.disable();
|
||||
|
||||
if (hasHapticService) {
|
||||
try {
|
||||
hapticsService.hapticDisable();
|
||||
} catch (RemoteException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override protected void onCreate( Bundle icicle )
|
||||
{
|
||||
Log.v( TAG, "----------------------------------------------------------------" );
|
||||
Log.v( TAG, "GLES3JNIActivity::onCreate()" );
|
||||
super.onCreate( icicle );
|
||||
|
||||
mView = new SurfaceView( this );
|
||||
|
@ -115,35 +160,37 @@ import static android.system.Os.setenv;
|
|||
|
||||
/** Initializes the Activity only if the permission has been granted. */
|
||||
private void checkPermissionsAndInitialize() {
|
||||
if (PermissionUtils.hasFilePermissions(this)) {
|
||||
create();
|
||||
onStart();
|
||||
// Boilerplate for checking runtime permissions in Android.
|
||||
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
|
||||
!= PackageManager.PERMISSION_GRANTED){
|
||||
ActivityCompat.requestPermissions(this,
|
||||
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,
|
||||
Manifest.permission.WRITE_EXTERNAL_STORAGE},
|
||||
1);
|
||||
}
|
||||
else
|
||||
{
|
||||
requestPermissions();
|
||||
permissionCount++;
|
||||
}
|
||||
|
||||
if (permissionCount == 1) {
|
||||
// Permissions have already been granted.
|
||||
create();
|
||||
}
|
||||
}
|
||||
|
||||
/** Handles the user accepting the permission. */
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] results) {
|
||||
if (requestCode == 1) {
|
||||
//Quit for now
|
||||
finish();
|
||||
System.exit(0);
|
||||
}
|
||||
//Was this a bHaptics FINE LOCATION perms request?
|
||||
else if (requestCode == 2) {
|
||||
if (results.length > 0 && results[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
//call enable again
|
||||
bHaptics.enable(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Don't do anything here, we can't enable if permissions were denied
|
||||
if (requestCode == WRITE_EXTERNAL_STORAGE_PERMISSION_ID) {
|
||||
if (results.length > 0 && results[0] != PackageManager.PERMISSION_GRANTED) {
|
||||
|
||||
finish();
|
||||
System.exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
checkPermissionsAndInitialize();
|
||||
}
|
||||
|
||||
public void create() {
|
||||
|
@ -296,9 +343,13 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override protected void onStart()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onStart()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::onStart()" );
|
||||
super.onStart();
|
||||
|
||||
// Bind to the service - Make this a config file thing
|
||||
bindService(new Intent("com.drbeef.hapticservice.HapticService_bHaptics").setPackage("com.drbeef.hapticservice"), this,
|
||||
Context.BIND_AUTO_CREATE);
|
||||
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onStart(mNativeHandle, this);
|
||||
|
@ -307,7 +358,7 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override protected void onResume()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onResume()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::onResume()" );
|
||||
super.onResume();
|
||||
|
||||
if ( mNativeHandle != 0 )
|
||||
|
@ -318,7 +369,7 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override protected void onPause()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onPause()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::onPause()" );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onPause(mNativeHandle);
|
||||
|
@ -328,19 +379,21 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override protected void onStop()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onStop()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::onStop()" );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onStop(mNativeHandle);
|
||||
}
|
||||
|
||||
// Unbind from the service
|
||||
unbindService(this);
|
||||
|
||||
super.onStop();
|
||||
}
|
||||
|
||||
@Override protected void onDestroy()
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::onDestroy()" );
|
||||
|
||||
bHaptics.destroy();
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::onDestroy()" );
|
||||
|
||||
if ( mSurfaceHolder != null )
|
||||
{
|
||||
|
@ -358,7 +411,7 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override public void surfaceCreated( SurfaceHolder holder )
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::surfaceCreated()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::surfaceCreated()" );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onSurfaceCreated( mNativeHandle, holder.getSurface() );
|
||||
|
@ -368,7 +421,7 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override public void surfaceChanged( SurfaceHolder holder, int format, int width, int height )
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::surfaceChanged()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::surfaceChanged()" );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onSurfaceChanged( mNativeHandle, holder.getSurface() );
|
||||
|
@ -378,11 +431,25 @@ import static android.system.Os.setenv;
|
|||
|
||||
@Override public void surfaceDestroyed( SurfaceHolder holder )
|
||||
{
|
||||
Log.v( TAG, "GLES3JNIActivity::surfaceDestroyed()" );
|
||||
Log.v(APPLICATION, "GLES3JNIActivity::surfaceDestroyed()" );
|
||||
if ( mNativeHandle != 0 )
|
||||
{
|
||||
GLES3JNILib.onSurfaceDestroyed( mNativeHandle );
|
||||
mSurfaceHolder = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceConnected(ComponentName name, IBinder service) {
|
||||
hapticsService = IHapticsService.Stub.asInterface(service);
|
||||
hasHapticService = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onServiceDisconnected(ComponentName name) {
|
||||
stopService(new Intent("com.drbeef.hapticservice.HapticService_bHaptics").setPackage("com.drbeef.hapticservice"));
|
||||
|
||||
hasHapticService = false;
|
||||
hapticsService = null;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,800 +0,0 @@
|
|||
package com.drbeef.doom3quest.bhaptics;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.util.Log;
|
||||
|
||||
import com.bhaptics.bhapticsmanger.BhapticsManager;
|
||||
import com.bhaptics.bhapticsmanger.BhapticsManagerCallback;
|
||||
import com.bhaptics.bhapticsmanger.BhapticsModule;
|
||||
import com.bhaptics.bhapticsmanger.DefaultHapticStreamer;
|
||||
import com.bhaptics.bhapticsmanger.HapticStreamer;
|
||||
import com.bhaptics.bhapticsmanger.HapticPlayer;
|
||||
import com.bhaptics.commons.PermissionUtils;
|
||||
import com.bhaptics.commons.model.BhapticsDevice;
|
||||
import com.bhaptics.commons.model.DotPoint;
|
||||
import com.bhaptics.commons.model.PositionType;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
import java.util.Vector;
|
||||
|
||||
|
||||
|
||||
public class bHaptics {
|
||||
|
||||
public static class Haptic
|
||||
{
|
||||
Haptic(PositionType type, String key, String altKey, String group, float intensity, float duration) {
|
||||
this.type = type;
|
||||
this.key = key;
|
||||
this.altKey = altKey;
|
||||
this.group = group;
|
||||
this.directional = false;
|
||||
this.intensity = intensity;
|
||||
this.duration = duration;
|
||||
this.rotation = 0;
|
||||
this.level = 100;
|
||||
}
|
||||
|
||||
public Haptic(Haptic haptic) {
|
||||
this.type = haptic.type;
|
||||
this.key = haptic.key;
|
||||
this.altKey = haptic.altKey;
|
||||
this.group = haptic.group;
|
||||
this.directional = haptic.directional;
|
||||
this.intensity = haptic.intensity;
|
||||
this.duration = haptic.duration;
|
||||
this.rotation = 0;
|
||||
this.level = 100;
|
||||
}
|
||||
|
||||
public final String key;
|
||||
public final String altKey;
|
||||
public final String group;
|
||||
|
||||
public boolean directional; // can be changed for specific repeating patterns
|
||||
public final float duration;
|
||||
public final PositionType type;
|
||||
public final float intensity;
|
||||
|
||||
//These two values can be changed over time when playing a looping effect
|
||||
public float rotation;
|
||||
public float level;
|
||||
};
|
||||
|
||||
private static final String TAG = "Doom3Quest.bHaptics";
|
||||
|
||||
private static Random rand = new Random();
|
||||
|
||||
private static boolean hasPairedDevice = false;
|
||||
|
||||
private static boolean enabled = false;
|
||||
private static boolean requestingPermission = false;
|
||||
private static boolean initialised = false;
|
||||
|
||||
private static HapticPlayer player;
|
||||
private static HapticStreamer hapticStreamer;
|
||||
|
||||
private static Context context;
|
||||
|
||||
private static Map<String, Vector<Haptic>> eventToEffectKeyMap = new HashMap<>();
|
||||
|
||||
private static Map<String, Vector<Haptic>> repeatingHaptics = new HashMap<>();
|
||||
|
||||
public static void initialise()
|
||||
{
|
||||
if (initialised)
|
||||
{
|
||||
//Already initialised, but might need to rescan
|
||||
scanIfNeeded();
|
||||
return;
|
||||
}
|
||||
|
||||
BhapticsModule.initialize(context);
|
||||
|
||||
scanIfNeeded();
|
||||
|
||||
player = BhapticsModule.getHapticPlayer();
|
||||
|
||||
/*
|
||||
DAMAGE
|
||||
*/
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Heartbeat.tact", PositionType.Vest, "heartbeat", "health", 1.0f, 1.0f);
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee1.tact", "melee_left", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Head/DMG_Melee1.tact", PositionType.Head, "melee_left", "damage"); // always play melee on the head too
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Melee2.tact", "melee_right", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Head/DMG_Melee2.tact", PositionType.Head, "melee_right", "damage"); // always play melee on the head too
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fireball.tact", "fireball", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Head/DMG_Explosion.tact", PositionType.Head, "fireball", "damage"); // always play fireball on the head too
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Bullet.tact", "bullet", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Head/DMG_HeadShot.tact", PositionType.Head, "bullet", "damage");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Shotgun.tact", "shotgun", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Head/DMG_Explosion.tact", PositionType.Head, "shotgun", "damage");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "fire", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Fire.tact", "noair", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_DMG_Falling.tact", "fall", "damage");
|
||||
registerFromAsset(context, "bHaptics/Damage/Body_Shield_Break.tact", "shield_break", "damage");
|
||||
|
||||
/*
|
||||
INTERACTIONS
|
||||
*/
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Shield_Get.tact", "pickup_shield", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_L.tact", PositionType.ForearmL, "pickup_shield", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Pickup_R.tact", PositionType.ForearmR, "pickup_shield", "pickup");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Weapon_Get.tact", "pickup_weapon", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/ItemPickup_Mirror.tact", PositionType.ForearmL, "pickup_weapon", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/ItemPickup.tact", PositionType.ForearmR, "pickup_weapon", "pickup");
|
||||
|
||||
//registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Ammo_Get.tact", "pickup_ammo", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Ammo_L.tact", PositionType.ForearmL, "pickup_ammo", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Ammo_R.tact", PositionType.ForearmR, "pickup_ammo", "pickup");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Healstation.tact", "healstation", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Healthstation_L.tact", PositionType.ForearmL, "healstation", "pickup");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/Healthstation_R.tact", PositionType.ForearmR, "healstation", "pickup");
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/DoorSlide.tact", PositionType.Vest, "doorslide", "door", 1.0f, 0.5f);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Scan.tact", PositionType.Vest, "scan", "environment", 1.0f, 1.15f);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Body_Scan.tact", PositionType.Vest, "decontaminate", "environment", 0.5f, 0.75f);
|
||||
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");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Spark.tact", "spark", "environment");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Head/Spark.tact", PositionType.Head, "spark", "environment", 0.5f, 0.5f);
|
||||
|
||||
//Directional based looping steam pattern
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Steam.tact", PositionType.Vest, "steam_loop", "environment", 0.5f, 1.0f);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Head/Steam.tact", PositionType.Head, "steam_loop", "environment", 0.5f, 1.0f);
|
||||
eventToEffectKeyMap.get("steam_loop").forEach((haptic) -> {
|
||||
haptic.directional = true;
|
||||
});
|
||||
|
||||
//Directional based looping flames pattern (use steam, but stronger)
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Steam.tact", PositionType.Vest, "flame_loop", "environment", 1.0f, 1.0f);
|
||||
registerFromAsset(context, "bHaptics/Interaction/Head/Steam.tact", PositionType.Head, "flame_loop", "environment", 1.0f, 1.0f);
|
||||
eventToEffectKeyMap.get("flame_loop").forEach((haptic) -> {
|
||||
haptic.directional = true;
|
||||
});
|
||||
|
||||
//Re use the spark for the steam blast
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/Spark.tact", PositionType.Vest, "steam_blast", "environment", 1.0f, 0.25f);
|
||||
|
||||
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");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/PDA_Click_Mirror.tact", PositionType.ForearmL, "pda_touch", "pda");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Arms/PDA_Click.tact", PositionType.ForearmR, "pda_touch", "pda");
|
||||
|
||||
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/PlayerJump.tact", "jump_start", "player");
|
||||
registerFromAsset(context, "bHaptics/Interaction/Vest/PlayerLanding.tact", "jump_landing", "player");
|
||||
|
||||
|
||||
/*
|
||||
WEAPONS
|
||||
*/
|
||||
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/WeaponSwap.tact", PositionType.Right, "weapon_switch", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Swap_R.tact", PositionType.ForearmR, "weapon_switch", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/WeaponSwap_Mirror.tact", PositionType.Left, "weapon_switch", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Swap_L.tact", PositionType.ForearmL, "weapon_switch", "weapon");
|
||||
|
||||
//Reload Start
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Reload.tact", "weapon_reload", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Reload_L.tact", PositionType.ForearmL, "weapon_reload", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Reload_R.tact", PositionType.ForearmR, "weapon_reload", "weapon");
|
||||
|
||||
//Reload Finish
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/ReloadFinish.tact", PositionType.Right, "weapon_reload_finish", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ReloadFinish.tact", PositionType.ForearmR, "weapon_reload_finish", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/ReloadFinish_Mirror.tact", PositionType.Left, "weapon_reload_finish", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/ReloadFinish_Mirror.tact", PositionType.ForearmL, "weapon_reload_finish", "weapon");
|
||||
|
||||
//Chainsaw Idle
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Chainsaw_LV1.tact", PositionType.Right, "chainsaw_idle", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Chainsaw_LV2.tact", PositionType.ForearmR, "chainsaw_idle", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Chainsaw_LV1_Mirror.tact", PositionType.Left, "chainsaw_idle", "weapon");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Chainsaw_LV2_Mirror.tact", PositionType.ForearmL, "chainsaw_idle", "weapon");
|
||||
|
||||
//Chainsaw Fire
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Chainsaw_LV2.tact", PositionType.Right, "chainsaw_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Chainsaw_LV1.tact", PositionType.ForearmR, "chainsaw_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Chainsaw_LV2_Mirror.tact", PositionType.Left, "chainsaw_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Chainsaw_LV1_Mirror.tact", PositionType.ForearmL, "chainsaw_fire", "weapon_fire");
|
||||
|
||||
//Fist
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Fist_Mirror.tact", PositionType.Left, "punch", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Fist_Mirror.tact", PositionType.ForearmL, "punch", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Fist.tact", PositionType.Right, "punch", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Fist.tact", PositionType.ForearmR, "punch", "weapon_fire");
|
||||
|
||||
//Pistol
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV3_Mirror.tact", PositionType.Left, "pistol_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV3_Mirror.tact", PositionType.ForearmL, "pistol_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV3.tact", PositionType.Right, "pistol_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV3.tact", PositionType.ForearmR, "pistol_fire", "weapon_fire");
|
||||
|
||||
//Shotgun
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV2_Mirror.tact", PositionType.Left, "shotgun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV2_Mirror.tact", PositionType.ForearmL, "shotgun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV2.tact", PositionType.Right, "shotgun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV2.tact", PositionType.ForearmR, "shotgun_fire", "weapon_fire");
|
||||
|
||||
//Plasma Gun
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV1_Mirror.tact", PositionType.Left, "plasmagun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV1_Mirror.tact", PositionType.ForearmL, "plasmagun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV1.tact", PositionType.Right, "plasmagun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV1.tact", PositionType.ForearmR, "plasmagun_fire", "weapon_fire");
|
||||
|
||||
//Grenade
|
||||
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", PositionType.ForearmL, "handgrenade_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Grenade_R.tact", PositionType.ForearmR, "handgrenade_fire", "weapon_fire");
|
||||
|
||||
//SMG
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV1_Mirror.tact", PositionType.Left, "machinegun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV1_Mirror.tact", PositionType.ForearmL, "machinegun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV1.tact", PositionType.Right, "machinegun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV1.tact", PositionType.ForearmR, "machinegun_fire", "weapon_fire");
|
||||
|
||||
//Chaingun
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_Chaingun_Init.tact", "chaingun_init", "weapon_init");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV2_Mirror.tact", PositionType.Left, "chaingun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV2_Mirror.tact", PositionType.ForearmL, "chaingun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV2.tact", PositionType.Right, "chaingun_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV2.tact", PositionType.ForearmR, "chaingun_fire", "weapon_fire");
|
||||
|
||||
//BFG9000
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Body_BFG9000_Init.tact", "bfg_init", "weapon_init");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV5_Mirror.tact", PositionType.Left, "bfg_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV5_Mirror.tact", PositionType.ForearmL, "bfg_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV5.tact", PositionType.Right, "bfg_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV5.tact", PositionType.ForearmR, "bfg_fire", "weapon_fire");
|
||||
|
||||
//Rocket Launcher
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV4_Mirror.tact", PositionType.Left, "rocket_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV4_Mirror.tact", PositionType.ForearmL, "rocket_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/Recoil_LV4.tact", PositionType.Right, "rocket_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/Recoil_LV4.tact", PositionType.ForearmR, "rocket_fire", "weapon_fire");
|
||||
|
||||
//Soul Cube
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/SoulCube.tact", PositionType.Right, "soul_cube_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/SoulCube.tact", PositionType.ForearmR, "soul_cube_fire", "weapon_fire", 2.0f, 1.0f);
|
||||
registerFromAsset(context, "bHaptics/Weapon/Vest/SoulCube_Mirror.tact", PositionType.Left, "soul_cube_fire", "weapon_fire");
|
||||
registerFromAsset(context, "bHaptics/Weapon/Arms/SoulCube_Mirror.tact", PositionType.ForearmL, "soul_cube_fire", "weapon_fire", 2.0f, 1.0f);
|
||||
|
||||
initialised = true;
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, PositionType 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);
|
||||
|
||||
UUID uuid = UUID.randomUUID();
|
||||
Haptic haptic = new Haptic(type, hapticKey, uuid.toString(), 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, PositionType.Vest, key, group, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void registerFromAsset(Context context, String filename, PositionType type, String key, String group)
|
||||
{
|
||||
registerFromAsset(context, filename, type, key, group, 1.0f, 1.0f);
|
||||
}
|
||||
|
||||
public static void destroy()
|
||||
{
|
||||
if (initialised) {
|
||||
BhapticsModule.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean hasPermissions() {
|
||||
boolean blePermission = PermissionUtils.hasBluetoothPermission(context);
|
||||
boolean filePermission = PermissionUtils.hasFilePermissions(context);
|
||||
return blePermission && filePermission;
|
||||
}
|
||||
|
||||
private static void requestPermissions() {
|
||||
if (!requestingPermission) {
|
||||
requestingPermission = true;
|
||||
ActivityCompat.requestPermissions((Activity) context,
|
||||
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
|
||||
2);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean checkPermissionsAndInitialize() {
|
||||
if (hasPermissions()) {
|
||||
// Permissions have already been granted.
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
requestPermissions();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void enable(Context ctx)
|
||||
{
|
||||
context = ctx;
|
||||
|
||||
if (!enabled)
|
||||
{
|
||||
if (checkPermissionsAndInitialize()) {
|
||||
initialise();
|
||||
|
||||
enabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void disable()
|
||||
{
|
||||
enabled = false;
|
||||
stopStreaming();
|
||||
}
|
||||
|
||||
public static void startStreaming() {
|
||||
if (hapticStreamer == null) {
|
||||
hapticStreamer = new DefaultHapticStreamer();
|
||||
hapticStreamer.setCallback(new HapticStreamer.HapticStreamerCallback() {
|
||||
@Override
|
||||
public void onDiscover(String host) {
|
||||
Log.i(TAG, "onDiscover: " + host);
|
||||
|
||||
hapticStreamer.connect(host);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnect(String host) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(String host) {
|
||||
|
||||
}
|
||||
});
|
||||
hapticStreamer.refreshCandidateIps();
|
||||
}
|
||||
}
|
||||
|
||||
public static void stopStreaming() {
|
||||
if (hapticStreamer != null) {
|
||||
hapticStreamer.dispose();
|
||||
hapticStreamer = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static void refreshIp() {
|
||||
if (hapticStreamer != null) {
|
||||
hapticStreamer.refreshCandidateIps();
|
||||
}
|
||||
}
|
||||
|
||||
public static void beginFrame() {}
|
||||
|
||||
public static void endFrame()
|
||||
{
|
||||
if (enabled && hasPairedDevice) {
|
||||
repeatingHaptics.forEach((key, haptics) -> {
|
||||
haptics.forEach((haptic) -> {
|
||||
if (haptic.level < 10) {
|
||||
if (player.isPlaying(haptic.altKey)) {
|
||||
player.turnOff(haptic.altKey);
|
||||
}
|
||||
} else if (!player.isPlaying(haptic.altKey)) {
|
||||
//If a repeating haptic isn't playing, start it again with last known values
|
||||
float flIntensity = ((haptic.level / 100.0F) * haptic.intensity);
|
||||
|
||||
if (haptic.type != PositionType.Head ||
|
||||
//If the haptic is head based, then only play if it is within a certain FOV
|
||||
(haptic.rotation >= -360 && haptic.rotation <= -315) || (haptic.rotation >= 0 && haptic.rotation <= 45)) {
|
||||
player.submitRegistered(haptic.key, haptic.altKey, flIntensity, haptic.duration, haptic.rotation, 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
repeatingHaptics.clear();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
position values:
|
||||
0 - Will play on vest and both arms if tactosy tact files present for both
|
||||
1 - Will play on (left) vest and on left arm only if tactosy tact files present for left
|
||||
2 - Will play on (right) vest and on right arm only if tactosy tact files present for right
|
||||
3 - Will play on head only (if present)
|
||||
4 - Will play on all devices (that have a pattern defined for them)
|
||||
|
||||
flag values:
|
||||
0 - No flags set
|
||||
1 - Indicate this is a looping effect that should play repeatedly until stopped
|
||||
|
||||
intensity:
|
||||
0 - 100
|
||||
|
||||
angle:
|
||||
0 - 360
|
||||
|
||||
yHeight:
|
||||
-0.5 - 0.5
|
||||
*/
|
||||
public static void playHaptic(String event, int position, int flags, float intensity, float angle, float yHeight)
|
||||
{
|
||||
if (enabled && hasPairedDevice) {
|
||||
String key = getHapticEventKey(event);
|
||||
|
||||
//Log.v(TAG, event);
|
||||
|
||||
//Special rumble effect that changes intensity per frame
|
||||
if (key.compareTo("rumble") == 0)
|
||||
{
|
||||
{
|
||||
float highDuration = angle;
|
||||
|
||||
List<DotPoint> vector = new Vector<>();
|
||||
int flipflop = 0;
|
||||
for (int d = 0; d < 20; d += 4) // Only select every other dot
|
||||
{
|
||||
vector.add(new DotPoint(d + flipflop, (int) intensity));
|
||||
vector.add(new DotPoint(d + 2 + flipflop, (int) intensity));
|
||||
flipflop = 1 - flipflop;
|
||||
}
|
||||
|
||||
player.submitDot("rumble_front", PositionType.VestFront, vector, (int) highDuration);
|
||||
player.submitDot("rumble_back", PositionType.VestBack, vector, (int) highDuration);
|
||||
}
|
||||
}
|
||||
else if (eventToEffectKeyMap.containsKey(key)) {
|
||||
Vector<Haptic> haptics = eventToEffectKeyMap.get(key);
|
||||
for (Haptic haptic : haptics) {
|
||||
|
||||
//Don't allow a haptic to interrupt itself if it is already playing
|
||||
if (player.isPlaying(haptics.get(0).altKey)) {
|
||||
return;
|
||||
}
|
||||
|
||||
//The following groups play at full intensity
|
||||
if (haptic.group.compareTo("environment") == 0) {
|
||||
intensity = 100;
|
||||
}
|
||||
|
||||
{
|
||||
float flIntensity = ((intensity / 100.0F) * haptic.intensity);
|
||||
float flAngle = angle;
|
||||
float flDuration = haptic.duration;
|
||||
|
||||
if (position > 0)
|
||||
{
|
||||
BhapticsManager manager = BhapticsModule.getBhapticsManager();
|
||||
|
||||
//If playing left position and haptic type is right, don;t play that one
|
||||
if (position == 1)
|
||||
{
|
||||
if (haptic.type == PositionType.ForearmR ||
|
||||
haptic.type == PositionType.Right) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//If playing right position and haptic type is left, don;t play that one
|
||||
if (position == 2)
|
||||
{
|
||||
if (haptic.type == PositionType.ForearmL ||
|
||||
haptic.type == PositionType.Left) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//Are we playing a "head only" pattern?
|
||||
if (position == 3 &&
|
||||
(haptic.type != PositionType.Head || !manager.isDeviceConnected(BhapticsManager.DeviceType.Head)))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if (haptic.type == PositionType.Head) {
|
||||
//Is this a "don't play on head" effect?
|
||||
if (position < 3) {
|
||||
continue;
|
||||
}
|
||||
|
||||
//Zero angle for head
|
||||
flAngle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Special values for heartbeat
|
||||
if (haptic.group.compareTo("health") == 0)
|
||||
{
|
||||
//The worse condition we are in, the faster the heart beats!
|
||||
float health = intensity;
|
||||
flDuration = 1.0f - (0.4f * ((40 - health) / 40));
|
||||
flIntensity = 1.0f;
|
||||
flAngle = 0;
|
||||
}
|
||||
|
||||
//If this is a repeating event, then add to the set to play in begin frame
|
||||
if (flags == 1)
|
||||
{
|
||||
Haptic repeatingHaptic = new Haptic(haptic);
|
||||
|
||||
if (haptic.directional) {
|
||||
repeatingHaptic.rotation = flAngle;
|
||||
}
|
||||
|
||||
repeatingHaptic.level = intensity;
|
||||
|
||||
if (!repeatingHaptics.containsKey(key))
|
||||
{
|
||||
Vector<Haptic> v = new Vector<>();
|
||||
v.add(repeatingHaptic);
|
||||
repeatingHaptics.put(key, v);
|
||||
}
|
||||
else
|
||||
{
|
||||
Vector<Haptic> v = repeatingHaptics.get(key);
|
||||
v.add(repeatingHaptic);
|
||||
}
|
||||
}
|
||||
else {
|
||||
player.submitRegistered(haptic.key, haptic.altKey, flIntensity, flDuration, flAngle, yHeight);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Log.v(TAG, "Unknown Event: " + event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static String getHapticEventKey(String event) {
|
||||
String key = event.toLowerCase();
|
||||
if (key.contains("melee")) {
|
||||
if (key.contains("right"))
|
||||
{
|
||||
key = "melee_right";
|
||||
}
|
||||
else
|
||||
{
|
||||
key = "melee_left";
|
||||
}
|
||||
}
|
||||
else if (key.contains("damage")) {
|
||||
if (key.contains("bullet") ||
|
||||
key.contains("splash") ||
|
||||
key.contains("cgun")) {
|
||||
key = "bullet";
|
||||
}
|
||||
else if (key.contains("fireball") ||
|
||||
key.contains("rocket") ||
|
||||
key.contains("explode")) {
|
||||
key = "fireball"; // Just re-use this one
|
||||
}
|
||||
else if (key.contains("noair") || key.contains("gasp")) {
|
||||
key = "noair";
|
||||
}
|
||||
else if (key.contains("shotgun")) {
|
||||
key = "shotgun";
|
||||
}
|
||||
else if (key.contains("fall")) {
|
||||
key = "fall";
|
||||
}
|
||||
}
|
||||
else if (key.contains("door") || key.contains("panel") || key.contains("silver_sliding"))
|
||||
{
|
||||
key = "doorslide";
|
||||
}
|
||||
else if (key.contains("lift"))
|
||||
{
|
||||
if (key.contains("up"))
|
||||
{
|
||||
key = "liftup";
|
||||
}
|
||||
else if (key.contains("down"))
|
||||
{
|
||||
key = "liftdown";
|
||||
}
|
||||
}
|
||||
else if (key.contains("elevator"))
|
||||
{
|
||||
key = "machine";
|
||||
}
|
||||
else if (key.contains("entrance_scanner") || key.contains("scanner_rot1s"))
|
||||
{
|
||||
key = "scan";
|
||||
}
|
||||
else if (key.contains("decon_started"))
|
||||
{
|
||||
key = "decontaminate";
|
||||
}
|
||||
else if (key.contains("spark"))
|
||||
{
|
||||
key = "spark";
|
||||
}
|
||||
else if (key.contains("flames") || key.contains("propane") || key.contains("burning"))
|
||||
{
|
||||
key = "flame_loop";
|
||||
}
|
||||
else if (key.contains("steam"))
|
||||
{
|
||||
if (key.contains("blast") || key.contains("shot") || key.contains("chuff")) {
|
||||
key = "steam_blast";
|
||||
}
|
||||
else
|
||||
{
|
||||
key = "steam_loop";
|
||||
}
|
||||
}
|
||||
else if (key.contains("player") && key.contains("jump"))
|
||||
{
|
||||
key = "jump_start";
|
||||
}
|
||||
else if (key.contains("player") && key.contains("land"))
|
||||
{
|
||||
key = "jump_landing";
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
public static void stopHaptic(String event) {
|
||||
|
||||
if (enabled && hasPairedDevice) {
|
||||
|
||||
String key = getHapticEventKey(event);
|
||||
|
||||
if (repeatingHaptics.containsKey(key))
|
||||
{
|
||||
repeatingHaptics.get(key).forEach((haptic) -> {
|
||||
player.turnOff(haptic.altKey);
|
||||
});
|
||||
|
||||
repeatingHaptics.remove(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void updateRepeatingHaptic(String event, float intensity, float angle) {
|
||||
|
||||
if (enabled && hasPairedDevice) {
|
||||
|
||||
String key = getHapticEventKey(event);
|
||||
|
||||
if (repeatingHaptics.containsKey(key))
|
||||
{
|
||||
repeatingHaptics.get(key).forEach((haptic) -> {
|
||||
if (haptic.directional) {
|
||||
haptic.rotation = angle;
|
||||
}
|
||||
|
||||
haptic.level = intensity;
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static String read(Context context, String fileName) {
|
||||
try {
|
||||
InputStream is = context.getAssets().open(fileName);
|
||||
StringBuilder textBuilder = new StringBuilder();
|
||||
try (Reader reader = new BufferedReader(new InputStreamReader
|
||||
(is, Charset.forName(StandardCharsets.UTF_8.name())))) {
|
||||
int c = 0;
|
||||
while ((c = reader.read()) != -1) {
|
||||
textBuilder.append((char) c);
|
||||
}
|
||||
}
|
||||
|
||||
return textBuilder.toString();
|
||||
} catch (IOException e) {
|
||||
Log.e(TAG, "read: ", e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void scanIfNeeded() {
|
||||
BhapticsManager manager = BhapticsModule.getBhapticsManager();
|
||||
|
||||
List<BhapticsDevice> deviceList = manager.getDeviceList();
|
||||
for (BhapticsDevice device : deviceList) {
|
||||
if (device.isPaired()) {
|
||||
hasPairedDevice = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (hasPairedDevice) {
|
||||
manager.scan();
|
||||
|
||||
manager.addBhapticsManageCallback(new BhapticsManagerCallback() {
|
||||
@Override
|
||||
public void onDeviceUpdate(List<BhapticsDevice> list) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onScanStatusChange(boolean b) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onChangeResponse() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onConnect(String s) {
|
||||
Thread t = new Thread(() -> {
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
manager.ping(s);
|
||||
}
|
||||
catch (Throwable e) {
|
||||
}
|
||||
});
|
||||
t.start();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDisconnect(String s) {
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
startStreaming();
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue